為何區塊儲存體會變更為唯讀?

排除因故變成唯讀狀態的區塊儲存卷所產生的問題。

虛擬私有雲 經典基礎設施

您可能會看到下列狀況:

  • 當您執行 oc get pods -o wide 時,您會看到同一個工作者節點上有多個 Pod 停留在 ContainerCreatingCrashLoopBackOff 狀態中。 這些 Pod 全部都使用相同的區塊儲存空間實例。
  • 當您執行 oc describe pod 指令時,您會在事件區段中看到下列錯誤:MountVolume.SetUp failed for volume ... read-only

如果在 Pod 寫入磁區時發生網路錯誤,IBM Cloud 基礎架構會將磁區變更為唯讀模式,以保護磁區上的資料免於毀損。 使用此卷的 Pod 將無法繼續向該卷寫入資料,並會發生錯誤。

驗證外掛程式版本,重建應用程式,並安全地重新載入工作者節點。

  1. 檢查叢集裡已安裝的 IBM Cloud Block Storage 外掛程式版本。
    helm list --all-namespaces
    
  2. 驗證您使用最新版本的 IBM Cloud Block Storage 外掛程式。 如果不是,請更新外掛程式
  3. 如果您的 Pod 使用 Kubernetes 部署,請移除失敗的 Pod 並讓 Kubernetes 重建它,以重新啟動該 Pod。 若您未使用部署,請執行 oc get pod <pod_name> -o yaml >pod.yaml 來取得用於建立您的 Pod 的 YAML 檔案。 然後,刪除並手動重建 Pod。
    oc delete pod <pod_name>
    
  4. 檢查重建 Pod 是否已解決問題。 如果沒有,請重新載入工作者節點。
    1. 尋找 Pod 執行所在的工作者節點,並記下指派給工作者節點的專用 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)。