OpenShift Data Foundation の障害のデバッグ

ODF をデバッグして障害の根本原因を特定するための方法について説明します。

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

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

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

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

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

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

アプリ・ポッドの再始動

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

  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. 最新のログにエラー・メッセージがないか調べます。 ODF のトラブルシューティング資料で一般的なエラーの解決手順を確認します

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をインストールしてください

ODF リソースをデバッグする

ODF リソースの詳細を表示し、コマンド出力でエラー・メッセージがないか確認します。

  1. ODF クラスターの名前をリストします。

    oc get ocscluster
    

    出力例:

    NAME             AGE
    ocscluster-vpc   71d
    
  2. ストレージ・クラスターの詳細を表示し、出力の Events セクションにエラー・メッセージがないか確認します。

    oc describe ocscluster <ocscluster-name>
    
  3. kube-system 名前空間の ODF ポッドをリストし、ポッドが Running であることを確認します。

    oc get pods -n kube-system
    

    出力例

    NAME                                                   READY   STATUS    RESTARTS   AGE
    ibm-keepalived-watcher-5g2gs                           1/1     Running   0          7d21h
    ibm-keepalived-watcher-8l4ld                           1/1     Running   0          7d21h
    ibm-keepalived-watcher-mhkh5                           1/1     Running   0          7d21h
    ibm-master-proxy-static-10.240.128.10                  2/2     Running   0          71d
    ibm-master-proxy-static-10.240.128.11                  2/2     Running   0          71d
    ibm-master-proxy-static-10.240.128.12                  2/2     Running   0          71d
    ibm-ocs-operator-controller-manager-55667f4d68-md4zb   1/1     Running   8          15d
    ibm-vpc-block-csi-controller-0                         4/4     Running   0          48d
    ibm-vpc-block-csi-node-6gnwv                           3/3     Running   0          48d
    ibm-vpc-block-csi-node-j2h62                           3/3     Running   0          48d
    ibm-vpc-block-csi-node-xpwpf                           3/3     Running   0          48d
    vpn-5b8694cdb-pll6z
    
  4. ibm-ocs-operator-controller-manager ポッドの詳細を表示し、出力の Events セクションにエラー・メッセージがないか確認します。

    oc describe pod <ibm-ocs-operator-controller-manager-a1a1a1a> -n kube-system
    
  5. ibm-ocs-operator-controller-manager のログを確認します。

    oc logs <ibm-ocs-operator-controller-manager-a1a1a1a> -n kube-system
    
  6. NooBaa の詳細を表示し、出力の Events セクションでエラー・メッセージがないか確認します。

    oc describe noobaa -n openshift-storage
    
  7. ibm-storage-metrics-agent ポッドの詳細を表示し、出力の Events セクションにエラー・メッセージがないか確認します。

    oc get pods -n kube-system -l name=ibm-storage-metrics-agent
    
    NAME                                                  READY   STATUS    RESTARTS   AGE ibm-storage-metrics-agent-8685869cc6-79qzq   
    
  8. ibm-storage-metrics-agent からのログを確認します。

    oc logs ibm-storage-metrics-agent-xxx -n kube-system
    
  9. ocscluster について説明し、エラー・メッセージの出力を確認します。

    oc describe ocscluster <ocscluster-name> -n openshift-storage
    
  10. oc adm must-gather コマンドを使用して、クラスターに関するデータを収集します。

    oc adm must-gather --image=registry.redhat.io/ocs4/ocs-must-gather-rhel8:latest --dest-dir=ocs_mustgather
    
  11. ワーカー・ノード上のローカル・ボリュームを使用するクラシック・クラスターまたは Satellite クラスターの場合は、osd-device-path パラメーターと mon-device-path パラメーターに使用したボリュームの disk-by-id がワーカー・ノード上に存在することを確認します。 これらのボリューム ID の取得方法について詳しくは、デバイス詳細の収集を参照してください

  12. 一般的なエラーを解決する手順については、トラブルシューティング資料を参照してください