IBM Cloud Docs
IBM Cloud Object Storage の障害のデバッグ

IBM Cloud Object Storage の障害のデバッグ

Object Storage をデバッグするオプションを確認し、障害の根本原因を探します。

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

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

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

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

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

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

アプリ・ポッドの再始動

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

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

    1. ポッドを削除します。
      oc delete pod <pod_name>
      
      出力例
      pod "nginx" deleted
      
    2. 構成ファイルを再適用して、ポッドを再デプロイします。
      oc apply -f <app.yaml>
      
      出力例
      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 ファイルに、ログをエクスポートします。

      oc logs <pod_name> -n kube-system > logs.txt
      
    3. ログ・ファイルを確認します。

      cat logs.txt
      
  3. 最新のログにエラー・メッセージがないか調べます。 Object Storage のトラブルシューティング資料で一般的なエラーの解決手順を確認します

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

手順に従って、PVC の状況を確認し、エラー・メッセージを確認します。

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

    oc get pvc
    
    • PVC の状況に Bound と表示される場合、PVC は正常にプロビジョンされています。

      出力例

      NAME         STATUS    VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS                AGE
      silver-pvc   Bound     pvc-4b881a6b-ada8-4a44-b568-fe909107d756   24Gi       RWX            ibmc-file-silver            7m29s
      
    • PVC の状況に Pending と表示される場合は、PVC の詳細を表示し、出力の Events セクションに警告またはエラー・メッセージがないか確認します。 ボリューム・バインディング・モードが WaitForFirstConsumer に設定されているストレージ・クラスを参照する PVC は、PVC を使用するアプリ・ポッドがデプロイされるまで Pending のままであることに注意してください。

      oc describe pvc <pvc_name>
      

      出力例

      Name:          local-pvc
      Namespace:     default
      StorageClass:  sat-local-file-gold
      Status:        Pending
      Volume:        
      Labels:        <none>
      Annotations:   <none>
      Finalizers:    [kubernetes.io/pvc-protection]
      Capacity:      
      Access Modes:  
      VolumeMode:    Filesystem
      Mounted By:    <none>
      Events:
      Type     Reason              Age                 From                         Message
      ----     ------              ----                ----                         -------
      Warning  ProvisioningFailed  60s (x42 over 11m)  persistentvolume-controller  storageclass.storage.k8s.io "sat-local-file-gold" not found
      
  2. Object Storage のトラブルシューティング資料で、Object Storage PVC の一般的なエラーの解決手順を確認します

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.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. ローカルマシンとクラスタの oc CLIバージョンが一致しない場合は、クラスタを更新するか、 ローカルマシンに異なるCLIバージョンをインストールしてください

Object Storage プラグインの確認と更新

手順に従って、Object Storage プラグインを更新します

ドライバー・ログおよびインストールされているドライバー・バージョンの確認

ドライバログを確認し、 Object Storage のインストールにおけるドライバのバージョンを確認するには、以下の手順を実行してください。

  1. kube-system 名前空間内のポッドをリストします。
    kubectl get pods -n kube-system -o wide -l app=ibmcloud-object-storage-driver
    
  2. ポッドのログを確認します。
    kubectl -n kube-system exec -it -- cat /host/log/ibmc-s3fs.log
    

Helm チャートの更新

Helm チャートを古いバージョンから更新するには、以下の手順を実行します。

  1. 現在の Helm チャートをアンインストールします。

    helm ls --all --all-namespaces
    
    helm uninstall <helm_chart_name> -n <helm_chart_namespace>
    
  2. Helm リポジトリーを追加および更新します。

    helm repo add ibm-helm https://raw.githubusercontent.com/IBM/charts/master/repo/ibm-helm
    
    helm repo update
    
  3. 新しい Helm チャートをインストールします。

    helm plugin uninstall ibmc
    helm fetch --untar ibm-helm/ibm-object-storage-plugin && cd ibm-object-storage-plugin
    helm plugin install ./ibm-object-storage-plugin/helm-ibmc
    helm ibmc --help