Portworx の障害のデバッグ
Portworx をデバッグするオプションを確認し、障害の根本原因を探します。
ストレージ・インスタンスをマウントするポッドが正常にデプロイされているかどうかの確認
手順に従って、ポッド・デプロイメントに関連するエラー・メッセージを確認します。
-
クラスター内のポッドをリストします。 ポッドで Running の状況が示される場合、ポッドは正常にデプロイされています。
kubectl get pods
-
ポッドの詳細を取得し、CLI 出力の Events セクションに表示されているエラー・メッセージがないか確認します。
kubectl describe pod <pod_name>
-
ポッドのログを取得し、エラー・メッセージがないか確認します。
kubectl logs <pod_name>
アプリ・ポッドの再始動
ポッドを再始動して再デプロイすると問題を解決できる場合があります。 手順に従って、特定のポッドを再デプロイします。
-
ポッドがデプロイメントの一部である場合は、ポッドを削除し、デプロイメントでポッドをビルドし直します。 ポッドがデプロイメントの一部ではない場合、ポッドを削除して、ポッドの構成ファイルを再適用します。
- ポッドを削除します。
出力例kubectl delete pod <pod_name>
pod "nginx" deleted
- 構成ファイルを再適用して、ポッドを再デプロイします。
出力例kubectl apply -f <app.yaml>
pod/nginx created
- ポッドを削除します。
-
ポッドを再始動しても問題が解決しない場合は、ワーカー・ノードを再ロードします。
-
IBM Cloud と IBM Cloud Kubernetes Service のプラグインの最新バージョンを使用していることを確認します。
ibmcloud update
ibmcloud plugin repo-plugins
ibmcloud plugin update
Portworx ストレージ・ドライバーおよびプラグインのポッドで、Running の状況が示されることの確認
手順に従って、ストレージ・ドライバーおよびプラグイン・ポッドの状況を確認し、エラー・メッセージを確認します。
kube-system
名前空間のポッドをリストします。
出力例:kubectl get pods -n kube-system | grep `portworx\|stork`
portworx-594rw 1/1 Running 0 20h portworx-rn6wk 1/1 Running 0 20h portworx-rx9vf 1/1 Running 0 20h stork-6b99cf5579-5q6x4 1/1 Running 0 20h stork-6b99cf5579-slqlr 1/1 Running 0 20h stork-6b99cf5579-vz9j4 1/1 Running 0 20h stork-scheduler-7dd8799cc-bl75b 1/1 Running 0 20h stork-scheduler-7dd8799cc-j4rc9 1/1 Running 0 20h stork-scheduler-7dd8799cc-knjwt 1/1 Running 0 20h
- ストレージ・ドライバーとプラグインのポッドに実行中 (Running) 状況が表示されない場合は、ポッドの詳細を取得して、根本原因を見つけます。 ポッドの状況によっては、以下のすべてのコマンドを実行できない場合があります。
- ドライバー・ポッドで実行されるコンテナーの名前を取得します。
kubectl describe pod <pod_name> -n kube-system
- ドライバー・ポッドからローカル・マシン上の
logs.txt
ファイルに、ログをエクスポートします。kubectl logs <pod_name> -n kube-system > logs.txt
- ログ・ファイルを確認します。
cat logs.txt
- ドライバー・ポッドで実行されるコンテナーの名前を取得します。
- 最新のログにエラー・メッセージがないか調べます。 Portworx のトラブルシューティング資料で、一般的なエラーの解決手順を確認します。
kubectl CLI バージョンの確認と更新
少なくともクラスターの major.minor バージョンと同じ kubectl
CLI バージョンを使用しないと、予期しない結果になる可能性があります。 例えば Kubernetes サポートしていませんkubectl
サーバー
バージョンから 2 バージョン以上離れたクライアント バージョン (n +/- 2)。
-
ローカル・マシンで実行する
kubectl
CLI バージョンが、クラスターにインストールされている Kubernetes のバージョンと一致することを確認します。 クラスターおよびローカル・マシンにインストールされているkubectl
CLI バージョンを表示します。kubectl version
出力例:
Client Version: version.Info{Major:"1", Minor:"23", GitVersion:"v1.32", 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.32+IKS", GitCommit:"e15454c2216a73b59e9a059fd2def4e6712a7cf0", GitTreeState:"clean", BuildDate:"2019-04-01T10:08:07Z", GoVersion:"go1.11.5", Compiler:"gc", Platform:"linux/amd64"}
CLI バージョンが一致するのは、クライアントとサーバーの
GitVersion
に同じバージョンが表示される場合です。 サーバーのバージョンの+IKS
部分は無視できます。 -
ローカルマシンとクラスターの
kubectl
CLIバージョンが一致しない場合は、クラスターを更新するか、 ローカルマシンに異なるCLIバージョンをインストールしてください。
Helm チャートの更新
-
最新の Helm チャート・バージョンを見つけます。
-
クラスターにインストールされた Helm チャートをリストし、インストールしたバージョンと最新バージョンを比較します。
helm list --all-namespaces
-
より新しいバージョンが使用可能な場合は、新しいバージョンをインストールします。 手順については、クラスター内の Portworx の更新を参照してください。