ブロック・ストレージが読み取り専用に変更されるのはなぜですか?

読み取り専用になってしまったブロックストレージボリュームのトラブルシューティングを行う。

仮想プライベートクラウド クラシック・インフラストラクチャー

以下の症状が見られることがあります。

  • oc get pods -o wide を実行すると、同じワーカー・ノードの複数のポッドが ContainerCreating または CrashLoopBackOff 状態で停滞していることが判明します。 これらのポッドはすべて、同じブロック・ストレージ・インスタンスを使用しています。
  • oc describe pod コマンドを実行すると、Events セクションに MountVolume.SetUp failed for volume ... read-only というエラーが表示されます。

ポッドのボリュームへの書き込み中にネットワーク・エラーが発生した場合、IBM Cloud インフラストラクチャーによってボリュームが読み取り専用モードに変更され、ボリュームのデータが破損から保護されます。 このボリュームを使用するポッドは、ボリュームへの書き込みを続行できず、失敗します。

プラグインのバージョンを確認し、アプリを再作成してから、ワーカーノードを安全に再読み込みしてください。

  1. クラスターにインストールされている IBM Cloud Block Storage プラグインのバージョンを確認します。
    helm list --all-namespaces
    
  2. IBM Cloud Block Storage プラグインの最新バージョンを使用していることを確認します。 そうでない場合は、プラグインを更新します
  3. ポッドに Kubernetes デプロイメントを使用している場合は、失敗するポッドを削除して Kubernetes でポッドを再作成し、ポッドを再始動します。 デプロイメントを使用しなかった場合は、oc get pod <pod_name> -o yaml >pod.yaml を実行して、ポッドの作成に使用された YAML ファイルを取得します。 その後、ポッドを削除して、手動でポッドを再作成します。
    oc delete pod <pod_name>
    
  4. ポッドの再作成によって問題が解決されたかどうかを確認します。 解決されていない場合は、ワーカー・ノードを再ロードします。
    1. ポッドが実行されているワーカー・ノードを見つけて、ワーカー・ノードに割り当てられているプライベート IP アドレスをメモします。
        oc describe pod <pod_name> | grep Node
        ```
        出力例:
        ```sh {: screen}
        Node:               10.75.XX.XXX/10.75.XX.XXX
        Node-Selectors:  <none>
        ```
    2. 前のステップでメモしたプライベート IP アドレスを使用して、ワーカー・ノードの **ID** を取得します。
    ```sh {: pre}
        ibmcloud oc worker ls --cluster CLUSTER_NAME_OR_ID
        ```
    3. [ワーカー・ノードを安全に再ロード](/docs/openshift?topic=openshift-kubernetes-service-cli#worker-reload-cli) します。