OpenShift Data Foundation の障害のデバッグ
ODF をデバッグして障害の根本原因を特定するための方法について説明します。
ストレージ・インスタンスをマウントするポッドが正常にデプロイされているかどうかの確認
手順に従って、ポッド・デプロイメントに関連するエラー・メッセージを確認します。
-
クラスター内のポッドをリストします。 ポッドで Running の状況が示される場合、ポッドは正常にデプロイされています。
oc get pods -
ポッドの詳細を取得し、CLI 出力の Events セクションに表示されているエラー・メッセージがないか確認します。
oc describe pod <pod_name> -
ポッドのログを取得し、エラー・メッセージがないか確認します。
oc logs <pod_name>
アプリ・ポッドの再始動
ポッドを再始動して再デプロイすると問題を解決できる場合があります。 手順に従って、特定のポッドを再デプロイします。
-
ポッドがデプロイメントの一部である場合は、ポッドを削除し、デプロイメントでポッドをビルドし直します。 ポッドがデプロイメントの一部ではない場合、ポッドを削除して、ポッドの構成ファイルを再適用します。
- ポッドを削除します。
oc delete pod <pod_name> ``` 出力例 ```sh {: screen} pod "nginx" deleted ``` 2. 構成ファイルを再適用して、ポッドを再デプロイします。 ```sh {: pre} oc apply -f <app.yaml> ``` 出力例 ```sh {: pre} pod/nginx created ``` -
ポッドを再始動しても問題が解決しない場合は、ワーカー・ノードを再ロードします。
-
IBM Cloud と IBM Cloud Kubernetes Service のプラグインの最新バージョンを使用していることを確認します。
ibmcloud updateibmcloud plugin repo-pluginsibmcloud plugin update
ストレージ・ドライバーおよびプラグインのポッドで、Running の状況が示されることの確認
手順に従って、ストレージ・ドライバーおよびプラグイン・ポッドの状況を確認し、エラー・メッセージを確認します。
-
kube-systemプロジェクトのポッドをリストします。oc get pods -n kube-system -
ストレージ・ドライバーとプラグインのポッドに実行中 (Running) 状況が表示されない場合は、ポッドの詳細を取得して、根本原因を見つけます。 ポッドの状況によっては、以下のコマンドは失敗する場合があります。
- ドライバー・ポッドで実行されるコンテナーの名前を取得します。
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 ``` -
最新のログにエラー・メッセージがないか調べます。 ODF のトラブルシューティング資料で一般的なエラーの解決手順を確認します。
oc CLI バージョンを確認して更新する
少なくともクラスターの major.minor バージョンと同じ oc CLI バージョンを使用しないと、予期しない結果になる可能性があります。 たとえば、 Kubernetes 対応していません oc のクライアントバージョンが、サーバーバージョンから2バージョン以上離れている場合(n
± 2)などです。
-
ローカル・マシンで実行する
ocCLI バージョンが、クラスターにインストールされている Kubernetes のバージョンと一致することを確認します。 クラスターおよびローカル・マシンにインストールされているocCLI バージョンを表示します。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部分は無視できます。 -
ローカルマシンとクラスタの
ocCLIのバージョンが一致しない場合は、クラスタを更新するか、 ローカルマシンに別のバージョンのCLIをインストールしてください。
ODF リソースをデバッグする
ODF リソースの詳細を表示し、コマンド出力でエラー・メッセージがないか確認します。
-
ODF クラスターの名前をリストします。
oc get ocscluster出力例:
NAME AGE ocscluster-vpc 71d -
ストレージ・クラスターの詳細を表示し、出力の
Eventsセクションにエラー・メッセージがないか確認します。oc describe ocscluster <ocscluster-name> -
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 -
ibm-ocs-operator-controller-managerポッドの詳細を表示し、出力のEventsセクションにエラー・メッセージがないか確認します。oc describe pod <ibm-ocs-operator-controller-manager-a1a1a1a> -n kube-system -
ibm-ocs-operator-controller-managerのログを確認します。oc logs <ibm-ocs-operator-controller-manager-a1a1a1a> -n kube-system -
NooBaa の詳細を表示し、出力の
Eventsセクションでエラー・メッセージがないか確認します。oc describe noobaa -n openshift-storage -
ibm-storage-metrics-agentポッドの詳細を表示し、出力のEventsセクションにエラー・メッセージがないか確認します。oc get pods -n kube-system -l name=ibm-storage-metrics-agentNAME READY STATUS RESTARTS AGE ibm-storage-metrics-agent-8685869cc6-79qzq -
ibm-storage-metrics-agentからのログを確認します。oc logs ibm-storage-metrics-agent-xxx -n kube-system -
ocsclusterについて説明し、エラー・メッセージの出力を確認します。oc describe ocscluster <ocscluster-name> -n openshift-storage -
oc adm must-gatherコマンドを使用して、クラスターに関するデータを収集します。oc adm must-gather --image=registry.redhat.io/ocs4/ocs-must-gather-rhel8:latest --dest-dir=ocs_mustgather -
ワーカー・ノード上のローカル・ボリュームを使用するクラシック・クラスターまたは Satellite クラスターの場合は、
osd-device-pathパラメーターとmon-device-pathパラメーターに使用したボリュームのdisk-by-idがワーカー・ノード上に存在することを確認します。 これらのボリューム ID の取得方法について詳しくは、デバイス詳細の収集を参照してください