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

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

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

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

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

  1. アカウントにログインします。 該当する場合は、適切なリソース・グループをターゲットにします。 クラスターのコンテキストを設定します。

  2. PVC の説明を取得します。 出力の**「使用者」**行にポッドの名前が取り込まれている場合、PVC がマウントされています。

    kubectl 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/containers?topic=containers-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
    
    kubectl apply -f <file_name>
    
  2. サービス・アカウントを作成します。 この例では、サービス・アカウントの名前は test-sa です。

    kubectl create sa test-sa
    
  3. clusterRoleBinding を clusterRole に追加します。

    kubectl create clusterrolebinding test-metrics-reader --clusterrole test-metrics-reader --serviceaccount=default:test-sa
    
  4. ノードをリストし、メトリックを収集するノードの名前と IP をメモします。

    kubectl get nodes
    

    出力例

    NAME          STATUS    ROLES    AGE     VERSION              
    10.111.1.11   Ready     <none>   1d      v1.36+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
    
    kubectl apply -f <file_name>
    
  6. ポッド内からサービス・アカウント・トークンを取得します。

    1. ポッドにログインします。
        kubectl exec testpod -it -- bash
        ```
    1. 以下のコマンドを実行して、トークンを取得します。 出力はありません。
    
    ```sh {: pre}
        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. ポッドを削除します。
    kubectl delete pod testpod
    
  3. clusterRoleBindingを削除します。
    kubectl delete clusterrolebinding test-metrics-reader
    
  4. サービス・アカウントを削除します。
    kubectl delete sa test-sa
    
  5. クラスター役割を削除します。
    kubectl delete clusterrole test-metrics-reader