IBM Cloud Docs
调试持久性存储器故障

调试持久性存储器故障

复查可用于调试持久性存储器的选项,并查找失败的根本原因。

检查存储实例的容器是否已成功部署

  1. 列出集群中的 pod。 如果 pod 显示的状态为 Running,说明 pod 已成功供应。

    kubectl get pods
    
  2. 获取 pod 的详细信息,并检查 CLI 输出的 Events 部分中是否显示有错误。

    kubectl describe pod <pod_name>
    
  3. 检索应用程序的日志,并检查是否显示任何错误消息。

    kubectl logs <pod_name>
    

重新启动应用程序 pod

  1. 如果您的 pod 是部署的一部分,请删除该 pod 并让部署重新构建该 pod。 如果 pod 不是部署的一部分,请删除 pod 并重新应用 pod 配置文件。

    kubectl delete pod <pod_name>
    
    kubectl apply -f <app.yaml>
    
  2. 如果重新启动 pod 无法解决问题,请 重新装入工作程序节点

  3. 验证是否使用的是最新的 IBM Cloud 和 IBM Cloud Kubernetes Service 插件版本。

    ibmcloud update
    
    ibmcloud plugin repo-plugins
    

确认存储驱动器和插件舱的状态为运行中

  1. 列出 kube-system 名称空间中的 pod。
    kubectl get pods -n kube-system
    
  2. 如果存储驱动程序和插件 pod 未显示 正在运行 状态,请获取 pod 的更多详细信息以查找根本原因。 根据您的Pod状态,您可能无法执行以下所有命令。
    1. 获取在驱动程序 pod 中运行的容器的名称。
      kubectl get pod <pod_name> -n kube-system -o jsonpath="{.spec['containers','initContainers'][*].name}" | tr -s '[[:space:]]' '\n'
      
      具有三个容器的 Block Storage for VPC 的示例输出:
      csi-provisioner
      csi-attacher
      iks-vpc-block-driver
      
      Block Storage for Classic 的输出示例:
      ibmcloud-block-storage-driver-container
      
    2. 将日志从驱动程序 pod 导出到本地机器上的 logs.txt 文件。 包含驱动程序容器名称。
      kubectl logs <pod_name> -n kube-system -c <container_name> > logs.txt
      
    3. 查看日志文件。
      cat logs.txt
      
  3. 分析 ** 命令的 CLI 输出中的 **Eventskubectl describe pod 部分以及最新日志,以查找错误的根本原因。

检查您的PVC是否已成功配置。

  1. 检查 PVC 的状态。 如果 PVC 显示的状态为 Bound,说明 PVC 已成功供应。

    kubectl get pvc
    
  2. 如果 PVC 的状态显示为 Pending,请检索导致 PVC 保持暂挂状态的错误。

    kubectl describe pvc <pvc_name>
    
  3. 查看 PVC 创建期间可能发生的常见错误。

  4. 查看将 PVC 安装到应用程序时可能发生的常见错误。

  5. 验证在本地计算机上运行的 kubectl CLI 版本是否与集群中安装的 Kubernetes 版本相匹配。 如果使用的 kubectl CLI 版本不能至少匹配集群的 major.minor 版本,那么可能会遇到意外的结果。 例如,[ Kubernetes 不支持与服务器版本(n +/- 2)相差两个或更多版本的 kubectl 客户端版本。

    1. 显示在集群中和本地计算机上安装的 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"}
      
      如果在 GitVersion 中看到客户机和服务器的版本相同,说明 CLI 版本匹配。 可以忽略服务器版本中的 +IKS 部分。
    2. 如果本地机器和集群上的 kubectl CLI版本不匹配,请更新集群在本地机器上安装其他CLI版本
  6. 对于 Block Storage for VPC,请验证您是否具有最新版本的附加组件

  7. 仅限经典块存储器、对象存储器和 Portworx:确保已为插件安装最新的 Helm chart 版本。

    块存储器和对象存储器

    1. 更新 Helm chart 存储库。
      helm repo update
      
    2. 列出存储库中的 Helm chart。 对于经典块存储器
      helm search repo iks-charts | grep block-storage-plugin
      
      示例输出
      iks-charts-stage/ibmcloud-block-storage-plugin    1.5.0                                                        A Helm chart for installing ibmcloud block storage plugin   
      iks-charts/ibmcloud-block-storage-plugin          1.5.0                                                        A Helm chart for installing ibmcloud block storage plugin   
      
      对于对象存储器
      helm search repo ibm-charts | grep object-storage-plugin
      
      示例输出
      ibm-charts/ibm-object-storage-plugin             1.0.9            1.0.9                             A Helm chart for installing ibmcloud object storage plugin  
      
    3. 列出集群中已安装的 Helm chart,并将安装的版本与可用版本进行比较。
      helm list --all-namespaces
      
    4. 如果有更新版本可用,请安装此版本。 有关指示信息,请参阅更新 IBM Cloud Block Storage 插件更新 IBM Cloud Object Storage 插件

Portworx

  1. 查找可用的 最新 Helm 图表版本

  2. 列出集群中已安装的 Helm chart,并将安装的版本与可用版本进行比较。

    helm list --all-namespaces
    
  3. 如果有更新版本可用,请安装此版本。 有关指示信息,请参阅更新集群中的 Portworx

OpenShift Data Foundation

描述 ODF 资源并查看命令输出以获取任何错误消息。

  1. 列出 ODF 集群的名称。
    kubectl get ocscluster
    
    示例输出:
    NAME             AGE
    ocscluster-vpc   71d
    
  2. 描述存储集群,并查看输出的 Events 部分以获取任何错误消息。
    kubectl describe ocscluster <ocscluster-name>
    
  3. 列出 kube-system 名称空间中的 pod,并验证它们是否为 Running
    kubectl get pods -n kube-system
    
  4. 描述 ibm-ocs-operator-controller-manager pod,并查看输出中的 Events 部分以获取任何错误消息。
    kubectl describe pod <ibm-ocs-operator-controller-manager-a1a1a1a> -n kube-system
    
  5. 查看 ibm-ocs-operator-controller-manager 的日志。
    kubectl logs <ibm-ocs-operator-controller-manager-a1a1a1a> -n kube-system
    
  6. 描述 NooBaa,并查看输出的 Events 部分以获取任何错误消息。
    kubectl describe noobaa -n openshift-storage