Block Storage for VPC メトリックのデバッグ

モニター・ダッシュボードで Block Storage for VPC メトリックを表示しようとしても、メトリックにデータが取り込まれません。

以下のいずれかの理由により、ダッシュボードでメトリックの取り込みに失敗する場合があります。

  • 監視したいPVCがマウントされていない可能性があります。 メトリックは、ポッドにマウントされている PVC についてのみ取り込まれます。
  • コンソール関連の問題がある可能性があり、CLIでストレージ・メトリクスを手動で表示して確認できます。

PVC がマウントされていることを確認します。 問題が解決しない場合は、CLI でメトリックを手動で表示して、原因がコンソールの問題に関連しているかどうかを判別します。

  1. Red Hat OpenShift クラスターにアクセスします

  2. PVC の説明を取得します。 出力の**「使用者」**行にポッドの名前が取り込まれている場合、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 がポッドにマウントされていない場合は、Block Storage for VPC のセットアップの手順を確認し、PVC をポッドにマウントします。 その後、メトリックの表示を再試行してください。

  4. PVC がマウントされている場合は、 Block Storage for VPC メトリックを手動で検証 してから、 サポートの問題をオープン してください。 CLI での手動検証のステップにより、メトリックを表示できますが、コンソールに取り込まれないメトリックのソリューションではありません。 ただし、メトリックを手動で検証できる場合は、問題をオープンする必要があるコンソールの問題があることを示しています。

CLI でのストレージ・メトリックの手動表示

ストレージ・メトリックがモニター・ダッシュボードに表示されない場合は、CLI で手動で表示できます。 ストレージ・メトリックの手動検証は一時的な回避策であり、メトリックを表示するための永続的なモニター・ソリューションではないことに注意してください。 以下のステップを完了した後、ダッシュボードではなく CLI でメトリクスを手動で表示できる場合は、コンソールに問題があり、 [サポート・アイシュー] (/docs/openshift?topic=openshift-get-help.

以下のステップを完了した後、デバッグ中に作成したリソースを必ず削除してください。

  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. clusterRoleBindingclusterRole に追加します。

    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.35+IKS            
    
  5. ポッドをノードにデプロイするための yaml ファイルを作成します。 作成したサービス・アカウントとノード 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. ポッド内からサービス・アカウント・トークンを取得します。

    1. ポッドにログインします。

      kubectl exec testpod -it -- bash
      
    2. 以下のコマンドを実行して、トークンを取得します。 出力はありません。

      token=$(cat /var/run/secrets/kubernetes.io/serviceaccount/token)
      
  7. まだポッドにログインしている間に、コマンドを実行してストレージ・メトリックを表示します。 必ずノード IP アドレスを指定してください。

    curl -k -H "authorization: bearer <token> https://<node_IP>:10250/metrics | grep kubelet_volume_stats
    
  8. 端末出力でメトリックを表示します。 メトリクスが出力されるまで数分待つ必要があるかもしれません。 それでもメトリックを表示できない場合は、 サポートの問題をオープンしてください

  9. メトリックの表示を終了し、問題がダッシュボードとメトリック・エージェントのどちらに関連しているかを判別したら、前のステップで作成した構成とリソースを削除します。

このステップは省略しないでください。

  1. ポッドを終了します。
    exit
    
  2. ポッドを削除します。
    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