IBM Cloud Docs
调试 Block Storage for VPC 度量

调试 Block Storage for VPC 度量

尝试在监视仪表板中查看 Block Storage for VPC 度量值时,不会填充度量值。

由于下列其中一个原因,度量可能无法在仪表板中填充:

  • 可能未安装要监视的 PVC。 仅针对安装到 pod 的 PVC 填充度量。
  • 可能存在与控制台相关的问题,可以通过在 CLI 中手动查看存储度量来验证该问题。

检查PVC是否安装到位。 如果问题仍然存在,请在 CLI 中手动查看度量值,以确定原因是否与控制台问题相关。

  1. 访问 Red Hat OpenShift 集群

  2. 描述 PVC。 如果输出的 使用者 行中填充了 pod 的名称,那么将安装 PVC。

    oc describe pvc <pvc_name>
    

    示例输出

    Name:          my-pvc
    Namespace:     default
    StorageClass:  ibmc-vpc-block-5iops-tier
    Status:        Bound
    Volume:        pvc-a11a11a1-111a-111a-a1a1-aaa111aa1a1a
    Labels:        <none>
    Annotations:   pv.kubernetes.io/bind-completed: yes
                   pv.kubernetes.io/bound-by-controller: yes
                   volume.beta.kubernetes.io/storage-provisioner: vpc.block.csi.ibm.io
    Finalizers:    [kubernetes.io/pvc-protection]
    Capacity:      10Gi
    Access Modes:  RWO
    VolumeMode:    Filesystem
    Used By:       my-pod-11a1a1a1a1-1a11a
    Events:        <none>
    
  3. 如果 PVC 未安装到 pod,请查看 设置 Block Storage for VPC 并将 PVC 安装到 pod 的步骤。 然后再次尝试查看度量值。

  4. 如果安装了 PVC,请遵循 手动验证 Block Storage for VPC 度量 的步骤,然后 打开支持问题。 CLI 中用于手动验证的步骤允许您查看度量值,但对于未在控制台中填充的度量值,这些步骤不是解决方案。 但是,如果您能够手动验证度量值,那么这表示存在必须针对其提交问题的控制台问题。

在 CLI 中手动查看存储度量

如果存储度量值在监视仪表板中不可见,那么您可以在 CLI 中手动查看这些度量值。 请注意,手动验证存储度量是一种临时变通方法,而不是用于查看度量的永久监视解决方案。 完成以下步骤后,如果您能够在 CLI 中而不是仪表板中手动查看度量值,那么这指示存在控制台问题,您必须 打开支持问题

完成以下步骤后,请确保除去调试时创建的资源。

  1. 创建并部署定制 clusterRole 配置。 在此示例中,clusterRole 名为 test-metrics-reader

    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRole
    metadata:
    name: test-metrics-reader
    rules:
    - nonResourceURLs:
        - "/metrics"
        verbs:
        - get
    - apiGroups:
        - ""
        resources:
        - nodes/metrics
        verbs:
        - get
    
    oc apply -f <file_name>
    
  2. 创建服务帐户。 在此示例中,服务帐户名为 test-sa

    oc create sa test-sa
    
  3. clusterRoleBinding 添加到 clusterRole

    oc create clusterrolebinding test-metrics-reader --clusterrole test-metrics-reader --serviceaccount=default:test-sa
    
  4. 列出节点并记下要为其收集度量值的节点的名称和 IP。

    oc get nodes
    

    示例输出

    NAME          STATUS    ROLES    AGE     VERSION              
    10.111.1.11   Ready     <none>   1d      v1.32+IKS            
    
  5. 创建一个 yaml 文件以将 pod 部署到节点上。 确保指定您创建的服务帐户和节点 IP 地址。

    apiVersion: v1
    kind: Pod
    metadata:
    name: testpod
    spec:
    nodeName: 10.111.1.111
    containers:
    - image: nginx
        name: nginx
    serviceAccountName: test-sa
    
    oc apply -f <file_name>
    
  6. 从Pod中检索服务账户令牌。

    1. 登录播客。

      kubectl exec testpod -it -- bash
      
    2. 运行以下命令获取令牌。 请注意,没有输出。

      token=$(cat /var/run/secrets/kubernetes.io/serviceaccount/token)
      
  7. 当您仍登录到 pod 时,请运行命令以查看存储度量值。 确保指定节点 IP 地址。

    curl -k -H "authorization: bearer <token> https://<node_IP>:10250/metrics | grep kubelet_volume_stats
    
  8. 查看终端输出中的度量。 您可能需要等待几分钟,才能输出指标。 如果仍无法查看度量值,请 提交支持问题

  9. 在完成查看度量并确定问题是与仪表板还是度量代理程序相关之后,请删除您在先前步骤中创建的配置和资源。

请勿跳过此步骤。

  1. 退出 pod。
    exit
    
  2. 删除 pod。
    oc delete pod testpod
    
  3. 删除 clusterRoleBinding
    oc delete clusterrolebinding test-metrics-reader
    
  4. 删除服务帐户。
    oc delete sa test-sa
    
  5. 删除集群角色。
    oc delete clusterrole test-metrics-reader