为何块存储器更改为只读?

排查变为只读的块存储卷的问题。

虚拟私有云 经典基础设施

您可能看到以下症状:

  • 运行 oc get pods -o wide 时,您会看到同一工作程序节点上的多个 pod 卡在 ContainerCreatingCrashLoopBackOff 状态。 所有这些 pod 都使用的是同一块存储器实例。
  • 运行 oc describe pod 命令时,在 Events 部分中看到以下错误: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,从而重新启动该 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 地址来检索工作程序节点的**标识**。
    ```sh {: pre}
        ibmcloud oc worker ls --cluster CLUSTER_NAME_OR_ID
        ```
    3. 安全地 [重新装入工作程序节点](/docs/openshift?topic=openshift-kubernetes-service-cli#worker-reload-cli)。