Block Storage for Classic の障害のデバッグ

Block Storage for Classic をデバッグするオプションを確認し、障害の根本原因を探します。

ストレージ・インスタンスをマウントするポッドが正常にデプロイされているかどうかの確認

手順に従って、ポッド・デプロイメントに関連するエラー・メッセージを確認します。

  1. クラスター内のポッドをリストします。 ポッドで Running の状況が示される場合、ポッドは正常にデプロイされています。

    oc get pods
    
  2. ポッドの詳細を取得し、CLI 出力の Events セクションに表示されているエラー・メッセージがないか確認します。

    oc describe pod <pod_name>
    
  3. ポッドのログを取得し、エラー・メッセージがないか確認します。

    oc logs <pod_name>
    
  4. Block Storage for Classic のトラブルシューティング資料で一般的なエラーの解決手順を確認します

アプリ・ポッドの再始動

ポッドを再始動して再デプロイすると問題を解決できる場合があります。 手順に従って、特定のポッドを再デプロイします。

  1. ポッドがデプロイメントの一部である場合は、ポッドを削除し、デプロイメントでポッドをビルドし直します。 ポッドがデプロイメントの一部ではない場合、ポッドを削除して、ポッドの構成ファイルを再適用します。

    1. ポッドを削除します。
        oc delete pod <pod_name>
        ```
        出力例
        ```sh {: screen}
        pod "nginx" deleted
        ```
    2. 構成ファイルを再適用して、ポッドを再デプロイします。
    ```sh {: pre}
        oc apply -f <app.yaml>
        ```
        出力例
        ```sh {: pre}
        pod/nginx created
        ```
    
  2. ポッドを再始動しても問題が解決しない場合は、ワーカー・ノードを再ロードします。

  3. IBM Cloud と IBM Cloud Kubernetes Service のプラグインの最新バージョンを使用していることを確認します。

    ibmcloud update
    
    ibmcloud plugin repo-plugins
    
    ibmcloud plugin update
    

ストレージ・ドライバーおよびプラグインのポッドで、Running の状況が示されることの確認

手順に従って、ストレージ・ドライバーおよびプラグイン・ポッドの状況を確認し、エラー・メッセージを確認します。

  1. kube-system プロジェクトのポッドをリストします。

    oc get pods -n kube-system
    
  2. ストレージ・ドライバーとプラグインのポッドに実行中 (Running) 状況が表示されない場合は、ポッドの詳細を取得して、根本原因を見つけます。 ポッドの状況によっては、以下のコマンドは失敗する場合があります。

    1. ドライバー・ポッドで実行されるコンテナーの名前を取得します。
        kubectl describe pod POD_NAME -n kube-system
        ```
    2. ドライバー・ポッドからローカル・マシン上の `logs.txt` ファイルに、ログをエクスポートします。
    
    ```sh {: pre}
        oc logs <pod_name> -n kube-system > logs.txt
        ```
    3. ログ・ファイルを確認します。
    
    ```sh {: pre}
        cat logs.txt
        ```
    
    
  3. ストレージ・ドライバーとプラグインのポッドに実行中 (Running) 状況が表示されない場合は、ポッドの詳細を取得して、根本原因を見つけます。 ポッドの状況によっては、以下のすべてのコマンドを実行できない場合があります。

    1. ドライバー・ポッドで実行されるコンテナーの名前を取得します。
        kubectl get pod ibm-vpc-block-csi-controller-0 -n kube-system -o jsonpath="{.spec['containers','initContainers'][*].name}" | tr -s '[[:space:]]' '\n'
        ```
        **Block Storage for VPC の出力例**
        ```sh {: screen}
        csi-provisioner
        csi-attacher
        liveness-probe
        iks-vpc-block-driver
        ```
    2. ドライバー・ポッドのコンテナー・ログをローカル・マシンに `logs.txt` ファイルとしてエクスポートします。
    ```sh {: pre}
        oc logs <pod_name> -n kube-system -c <container_name> > logs.txt
        ```
    
  4. 最新のログにエラー・メッセージがないか調べます。 Block Storage for Classic のトラブルシューティング資料で一般的なエラーの解決手順を確認します

PVC が正常にプロビジョンされているかどうかの確認

手順に従って、PVC の状況を確認し、エラー・メッセージを確認します。

  1. PVC の状況を確認します。 PVC で Bound の状況が示される場合、PVC は正常にプロビジョンされています。

    oc get pvc
    
    • PVC の状況に Bound と表示される場合、PVC は正常にプロビジョンされています。

      出力例

      NAME         STATUS    VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS                AGE
      silver-pvc   Bound     pvc-4b881a6b-ada8-4a44-b568-fe909107d756   24Gi       RWX            ibmc-file-silver            7m29s
      
    • PVC の状況に Pending と表示される場合は、PVC の詳細を表示し、出力の Events セクションに警告またはエラー・メッセージがないか確認します。 ボリューム・バインディング・モードが WaitForFirstConsumer に設定されているストレージ・クラスを参照する PVC は、PVC を使用するアプリ・ポッドがデプロイされるまで Pending のままであることに注意してください。

      oc describe pvc <pvc_name>
      

      出力例

      Name:          local-pvc
      Namespace:     default
      StorageClass:  sat-local-file-gold
      Status:        Pending
      Volume:        
      Labels:        <none>
      Annotations:   <none>
      Finalizers:    [kubernetes.io/pvc-protection]
      Capacity:      
      Access Modes:  
      VolumeMode:    Filesystem
      Mounted By:    <none>
      Events:
      Type     Reason              Age                 From                         Message
      ----     ------              ----                ----                         -------
      Warning  ProvisioningFailed  60s (x42 over 11m)  persistentvolume-controller  storageclass.storage.k8s.io "sat-local-file-gold" not found
      
  2. Block Storage for Classic のトラブルシューティング資料で一般的なエラーの解決手順を確認します

oc CLI バージョンを確認して更新する

少なくともクラスターの major.minor バージョンと同じ oc CLI バージョンを使用しないと、予期しない結果になる可能性があります。 たとえば、 Kubernetes 対応していません oc のクライアントバージョンが、サーバーバージョンから2バージョン以上離れている場合(n ± 2)などです。

  1. ローカル・マシンで実行する oc CLI バージョンが、クラスターにインストールされている Kubernetes のバージョンと一致することを確認します。 クラスターおよびローカル・マシンにインストールされている oc CLI バージョンを表示します。

    oc version
    

    出力例:

    Client Version: version.Info{Major:"1", Minor:"23", GitVersion:"v1.35", GitCommit:"641856db18352033a0d96dbc99153fa3b27298e5", GitTreeState:"clean", BuildDate:"2019-03-25T15:53:57Z", GoVersion:"go1.12.1", Compiler:"gc", Platform:"darwin/amd64"}
    Server Version: version.Info{Major:"1", Minor:"23", GitVersion:"v1.35+IKS", GitCommit:"e15454c2216a73b59e9a059fd2def4e6712a7cf0", GitTreeState:"clean", BuildDate:"2019-04-01T10:08:07Z", GoVersion:"go1.11.5", Compiler:"gc", Platform:"linux/amd64"}
    

    CLI バージョンが一致するのは、クライアントとサーバーの GitVersion に同じバージョンが表示される場合です。 サーバーのバージョンの +IKS 部分は無視できます。

  2. ローカルマシンとクラスタの oc CLIのバージョンが一致しない場合は、クラスタを更新するか、 ローカルマシンに別のバージョンのCLIをインストールしてください

Block Storage for Classic ドライバーの確認と更新

  1. Block Storage for VPCの場合、 Block Storage for VPC クラスター・アドオンの最新バージョン があることを確認します。

  2. クラシック・クラスター上の Block Storage for Classic の場合は、プラグインの最新の Helm チャート・バージョンをインストールしたことを確認します。

    1. Helm チャート・リポジトリーを更新します。
        helm repo update
        ```
    2. リポジトリーの Helm チャートをリストします。
    ```sh {: pre}
        helm search repo iks-charts | grep block-storage-plugin
        ```
        出力例
        ```sh {: screen}
        iks-charts-stage/ibmcloud-block-storage-plugin    1.5.0                                                        A Helm chart for installing ibmcloud block storage plugin   
        iks-charts/ibmcloud-block-storage-plugin          1.5.0                                                        A Helm chart for installing ibmcloud block storage plugin   
        ```
    3. クラスターにインストールされた Helm チャートをリストし、インストールしたバージョンと使用可能なバージョンを比較します。
    ```sh {: pre}
        helm list --all-namespaces
        ```
    4. より新しいバージョンが使用可能な場合は、そのバージョンをインストールします。 手順については、[IBM Cloud Block Storage プラグインの更新](/docs/openshift?topic=openshift-vpc-block#vpc-addon-update)を参照してください。