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

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

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

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

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

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

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

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

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

アプリ・ポッドの再始動

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

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

    1. ポッドを削除します。
      kubectl delete pod <pod_name>
      
      出力例
      pod "nginx" deleted
      
    2. 構成ファイルを再適用して、ポッドを再デプロイします。
      kubectl 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 名前空間のポッドをリストします。

    kubectl get pods -n kube-system
    
  2. ストレージ・ドライバーとプラグインのポッドに実行中 (Running) 状況が表示されない場合は、ポッドの詳細を取得して、根本原因を見つけます。 ポッドの状況によっては、以下のコマンドは失敗する場合があります。

    1. ドライバー・ポッドで実行されるコンテナーの名前を取得します。

      kubectl describe pod <pod_name> -n kube-system
      
    2. ドライバー・ポッドからローカル・マシン上の logs.txt ファイルに、ログをエクスポートします。

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

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

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

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

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

    kubectl 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 のままであることに注意してください。

      kubectl 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 エラーの解決手順を確認します

kubectl CLI バージョンの確認と更新

少なくともクラスターの major.minor バージョンと同じ kubectl CLI バージョンを使用しないと、予期しない結果になる可能性があります。 例えば Kubernetes サポートしていませんkubectl サーバー バージョンから 2 バージョン以上離れたクライアント バージョン (n +/- 2)。

  1. ローカル・マシンで実行する 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 部分は無視できます。

  2. ローカルマシンとクラスターの kubectl 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