永続ストレージの障害のデバッグ
永続ストレージをデバッグするためのオプションを確認し、障害の根本原因を探します。
ストレージ・インスタンスをマウントするポッドが正常にデプロイされているかどうかの確認
-
クラスター内のポッドをリストします。 ポッドで Running の状況が示される場合、ポッドは正常にデプロイされています。
oc get pods -
ポッドの詳細を取得し、CLI 出力の Events セクションにエラーが表示されているかどうかを確認します。
oc describe pod <pod_name> -
アプリケーションのログを取得し、エラー・メッセージが表示されるかどうかを確認します。
oc logs <pod_name>
アプリ・ポッドの再始動
-
ポッドがデプロイメントの一部である場合は、ポッドを削除し、デプロイメントでポッドをビルドし直します。 ポッドがデプロイメントの一部ではない場合、ポッドを削除して、ポッドの構成ファイルを再適用します。
oc delete pod <pod_name>oc apply -f <app.yaml> -
ポッドを再始動しても問題が解決しない場合は、ワーカー・ノードを再ロードします。
-
IBM Cloud と IBM Cloud Kubernetes Service のプラグインの最新バージョンを使用していることを確認します。
ibmcloud updateibmcloud plugin repo-plugins
ストレージ・ドライバーおよびプラグインのポッドで、Running の状況が示されることの確認
kube-systemプロジェクトのポッドをリストします。oc get pods -n kube-system- ストレージ・ドライバーとプラグインのポッドに実行中 (Running) 状況が表示されない場合は、ポッドの詳細を取得して、根本原因を見つけます。 ポッドの状況によっては、以下のすべてのコマンドを実行できない場合があります。
- ドライバー・ポッドで実行されるコンテナーの名前を取得します。
kubectl get pod <pod_name> -n kube-system -o jsonpath="{.spec['containers','initContainers'][*].name}" | tr -s '[[:space:]]' '\n' ``` 3 つのコンテナーが含まれている Block Storage for VPC の出力例: ```sh {: screen} csi-provisioner csi-attacher iks-vpc-block-driver ``` Block Storage for Classicの出力例: ```sh {: pre} ibmcloud-block-storage-driver-container ``` 2. ドライバー・ポッドからローカル・マシン上の `logs.txt` ファイルに、ログをエクスポートします。 ドライバーのコンテナー名を指定してください。 ```sh {: pre} oc logs <pod_name> -n kube-system -c <container_name> > logs.txt ``` 3. ログ・ファイルを確認します。 ```sh {: pre} cat logs.txt ``` - ** コマンドの CLI 出力の **Events
oc describe podセクションと最新のログを分析して、エラーの根本原因を探します。
PVC が正常にプロビジョンされているかどうかの確認
-
PVC の状態を確認します。 PVC で Bound の状況が示される場合、PVC は正常にプロビジョンされています。
oc get pvc -
PVC の状態で Pending が示される場合は、エラーを取得して、PVC が保留中のままである理由を確認します。
oc describe pvc <pvc_name> -
PVC の作成中に発生する可能性がある一般的なエラーを確認します。
-
PVC をアプリケーションにマウントするときに発生する可能性がある一般的なエラーを確認します。
-
ローカル・マシンで実行する
kubectlCLI バージョンが、クラスターにインストールされている Kubernetes のバージョンと一致することを確認します。 少なくともクラスターの major.minor バージョンと同じkubectlCLI バージョンを使用しないと、予期しない結果になる可能性があります。 たとえば、[ Kubernetes ] は、サーバー版と2バージョン以上離れている(n ± 2)kubectlクライアント版には対応していません。- クラスターおよびローカル・マシンにインストールされている
kubectlCLI バージョンを表示します。
oc version ``` 出力例 ```sh {: screen} Client Version: version.Info{Major:"1", Minor:"23", GitVersion:"v1.36", 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.36+IKS", GitCommit:"e15454c2216a73b59e9a059fd2def4e6712a7cf0", GitTreeState:"clean", BuildDate:"2019-04-01T10:08:07Z", GoVersion:"go1.11.5", Compiler:"gc", Platform:"linux/amd64"} ``` CLI バージョンが一致するのは、クライアントとサーバーの `GitVersion` に同じバージョンが表示される場合です。 サーバーのバージョンの `+IKS` 部分は無視できます。 2. ローカル・マシンとクラスターの `kubectl` CLI のバージョンが一致しない場合は、[クラスターを更新](/docs/openshift?topic=openshift-update)するか、[ローカル・マシンに別の CLI バージョンをインストール](/docs/openshift?topic=openshift-cli-install)します。 - クラスターおよびローカル・マシンにインストールされている
-
Block Storage for VPC の場合は、最新バージョンのアドオンがあることを確認します。
-
クラシック・ブロック・ストレージ、オブジェクト・ストレージ、および Portworx の場合のみ: プラグインの Helm チャートの最新バージョンをインストールしたことを確認します。
ブロック・ストレージおよびオブジェクト・ストレージ:
1. Helm チャート・リポジトリーを更新します。
```sh {: pre}
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
```
**オブジェクト・ストレージの場合**:
```sh {: pre}
helm search repo ibm-charts | grep object-storage-plugin
```
出力例
```sh {: screen}
ibm-charts/ibm-object-storage-plugin 1.0.9 1.0.9 A Helm chart for installing ibmcloud object storage plugin
```
3. クラスターにインストールされた Helm チャートをリストし、インストールしたバージョンと使用可能なバージョンを比較します。
```sh {: pre}
helm list --all-namespaces
```
4. より新しいバージョンが使用可能な場合は、そのバージョンをインストールします。 手順については、[IBM Cloud Block Storage プラグインの更新](/docs/openshift?topic=openshift-vpc-block#vpc-addon-update)および [IBM Cloud Object Storage プラグインの更新](/docs/openshift?topic=openshift-storage_cos_install#update_cos_plugin)を参照してください。
Portworx
-
利用可能な 最新の Helm チャートバージョンを見つけてください。
-
クラスターにインストールされた Helm チャートをリストし、インストールしたバージョンと使用可能なバージョンを比較します。
helm list --all-namespaces -
より新しいバージョンが使用可能な場合は、そのバージョンをインストールします。 手順については、クラスター内の Portworx の更新を参照してください。
OpenShift Data Foundation
ODF リソースの詳細を表示し、コマンド出力でエラー・メッセージがないか確認します。
- ODF クラスターの名前をリストします。
出力例:oc get ocsclusterNAME AGE ocscluster-vpc 71d - ストレージ・クラスターの詳細を表示し、出力の
Eventsセクションにエラー・メッセージがないか確認します。oc describe ocscluster <ocscluster-name> kube-system名前空間のポッドをリストし、Runningであることを確認します。oc get pods -n kube-systemibm-ocs-operator-controller-managerポッドの詳細を表示し、出力のEventsセクションにエラー・メッセージがないか確認します。oc describe pod <ibm-ocs-operator-controller-manager-a1a1a1a> -n kube-systemibm-ocs-operator-controller-managerのログを確認します。oc logs <ibm-ocs-operator-controller-manager-a1a1a1a> -n kube-system- NooBaa の詳細を表示し、出力の
Eventsセクションでエラー・メッセージがないか確認します。oc describe noobaa -n openshift-storage