IBM Cloud Docs
永続ストレージの障害のデバッグ

永続ストレージの障害のデバッグ

永続ストレージをデバッグするためのオプションを確認し、障害の根本原因を探します。

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

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

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

    oc describe pod <pod_name>
    
  3. アプリケーションのログを取得し、エラー・メッセージが表示されるかどうかを確認します。

    oc logs <pod_name>
    

アプリ・ポッドの再始動

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

    oc delete pod <pod_name>
    
    oc apply -f <app.yaml>
    
  2. ポッドを再始動しても問題が解決しない場合は、ワーカー・ノードを再ロードしてください。

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

    ibmcloud update
    
    ibmcloud plugin repo-plugins
    

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

  1. kube-system プロジェクトのポッドをリストします。
    oc get pods -n kube-system
    
  2. ストレージ・ドライバーとプラグインのポッドに実行中 (Running) 状況が表示されない場合は、ポッドの詳細を取得して、根本原因を見つけます。 ポッドの状況によっては、以下のすべてのコマンドを実行できない場合があります。
    1. ドライバー・ポッドで実行されるコンテナーの名前を取得します。
      kubectl get pod <pod_name> -n kube-system -o jsonpath="{.spec['containers','initContainers'][*].name}" | tr -s '[[:space:]]' '\n'
      
      3 つのコンテナーが含まれている Block Storage for VPC の出力例:
      csi-provisioner
      csi-attacher
      iks-vpc-block-driver
      
      Block Storage for Classicの出力例:
      ibmcloud-block-storage-driver-container
      
    2. ドライバー・ポッドからローカル・マシン上の logs.txt ファイルに、ログをエクスポートします。 ドライバーのコンテナー名を指定してください。
      oc logs <pod_name> -n kube-system -c <container_name> > logs.txt
      
    3. ログ・ファイルを確認します。
      cat logs.txt
      
  3. ** コマンドの CLI 出力の **Eventsoc describe pod セクションと最新のログを分析して、エラーの根本原因を探します。

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

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

    oc get pvc
    
  2. PVC の状態で Pending が示される場合は、エラーを取得して、PVC が保留中のままである理由を確認します。

    oc describe pvc <pvc_name>
    
  3. PVC の作成中に発生する可能性がある一般的なエラーを確認します。

  4. PVC をアプリケーションにマウントするときに発生する可能性がある一般的なエラーを確認します。

  5. ローカル・マシンで実行する kubectl CLI バージョンが、クラスターにインストールされている Kubernetes のバージョンと一致することを確認します。 少なくともクラスターの major.minor バージョンと同じ kubectl CLI バージョンを使用しないと、予期しない結果になる可能性があります。 例えば、[ Kubernetes は、サーバーバージョンから2つ以上のバージョンが異なる kubectl クライアントバージョン(n +/- 2)をサポートしていません。

    1. クラスターおよびローカル・マシンにインストールされている kubectl CLI バージョンを表示します。
      oc 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 部分は無視できます。
    2. ローカル・マシンとクラスターの kubectl CLI のバージョンが一致しない場合は、クラスターを更新するか、ローカル・マシンに別の CLI バージョンをインストールします。
  6. Block Storage for VPC の場合は、最新バージョンのアドオンがあることを確認します

  7. クラシック・ブロック・ストレージ、オブジェクト・ストレージ、および Portworx の場合のみ: プラグインの Helm チャートの最新バージョンをインストールしたことを確認します。

    ブロック・ストレージおよびオブジェクト・ストレージ:

    1. Helm チャート・リポジトリーを更新します。
      helm repo update
      
    2. リポジトリーの Helm チャートをリストします。 クラシック・ブロック・ストレージの場合:
      helm search repo iks-charts | grep block-storage-plugin
      
      出力例
      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   
      
      オブジェクト・ストレージの場合:
      helm search repo ibm-charts | grep object-storage-plugin
      
      出力例
      ibm-charts/ibm-object-storage-plugin             1.0.9            1.0.9                             A Helm chart for installing ibmcloud object storage plugin  
      
    3. クラスターにインストールされた Helm チャートをリストし、インストールしたバージョンと使用可能なバージョンを比較します。
      helm list --all-namespaces
      
    4. より新しいバージョンが使用可能な場合は、そのバージョンをインストールします。 手順については、IBM Cloud Block Storage プラグインの更新および IBM Cloud Object Storage プラグインの更新を参照してください。

Portworx

  1. 利用可能な 最新の Helm チャートバージョンを見つけます。

  2. クラスターにインストールされた Helm チャートをリストし、インストールしたバージョンと使用可能なバージョンを比較します。

    helm list --all-namespaces
    
  3. より新しいバージョンが使用可能な場合は、そのバージョンをインストールします。 手順については、クラスター内の Portworx の更新を参照してください。

OpenShift Data Foundation

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

  1. ODF クラスターの名前をリストします。
    oc get ocscluster
    
    出力例:
    NAME             AGE
    ocscluster-vpc   71d
    
  2. ストレージ・クラスターの詳細を表示し、出力の Events セクションにエラー・メッセージがないか確認します。
    oc describe ocscluster <ocscluster-name>
    
  3. kube-system 名前空間のポッドをリストし、Running であることを確認します。
    oc get pods -n kube-system
    
  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