IBM Cloud Docs
调试 OpenShift Data Foundation 故障

调试 OpenShift Data Foundation 故障

查看用于调试 ODF 的选项,并查找任何故障的根本原因。

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

执行以下步骤以查看与 pod 部署相关的任何错误消息。

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

    oc get pods
    
  2. 获取您的Pod的详细信息,并查看CLI输出中 “事件”部分显示的错误信息。

    oc describe pod <pod_name>
    
  3. 检索 pod 的日志并查看任何错误消息。

    oc logs <pod_name>
    
  4. 查看 ODF 故障诊断文档以了解解决常见错误的步骤

重新启动应用程序 pod

可以通过重新启动并重新部署 pod 来解决某些问题。 执行以下步骤以重新部署特定 pod。

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

    1. 删除 pod。
      oc delete pod <pod_name>
      
      示例输出
      pod "nginx" deleted
      
    2. 重新应用配置文件以重新部署 pod。
      oc apply -f <app.yaml>
      
      示例输出
      pod/nginx created
      
  2. 如果重新启动 pod 无法解决问题,请 重新装入工作程序节点

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

    ibmcloud update
    
    ibmcloud plugin repo-plugins
    
    ibmcloud plugin update
    

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

执行以下步骤以检查存储驱动程序和插件 pod 的状态,并查看任何错误消息。

  1. 列出 kube-system 项目中的 pod。

    oc get pods -n kube-system
    
  2. 如果存储驱动程序和插件 pod 未显示 正在运行 状态,请获取 pod 的更多详细信息以查找根本原因。 根据 pod 的状态,以下命令可能会失败。

    1. 获取在驱动程序 pod 中运行的容器的名称。

      kubectl describe pod <pod_name> -n kube-system
      
    2. 将日志从驱动程序 pod 导出到本地机器上的 logs.txt 文件。

      oc logs <pod_name> -n kube-system > logs.txt
      
    3. 查看日志文件。

      cat logs.txt
      
  3. 请检查最新日志以获取任何错误消息。 查看 ODF 故障诊断文档以了解解决常见错误的步骤

检查和更新 oc CLI 版本

如果您使用的 oc CLI版本与集群的 major.minor 版本不匹配,可能会出现意外结果。 例如,Kubernetes 不支持与服务端版本相差2个或更多版本的 oc 客户端(n +/- 2)。

  1. 请确认您本地机器上运行的 oc CLI版本与集群中安装的 Kubernetes 版本一致。 显示集群和本地计算机上安装的 oc CLI版本。

    oc 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. 如果本地机器和集群上的 oc CLI版本不匹配,请更新集群或 在本地机器上安装其他CLI版本

调试 ODF 资源

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

  1. 列出 ODF 集群的名称。

    oc get ocscluster
    

    示例输出:

    NAME             AGE
    ocscluster-vpc   71d
    
  2. 描述存储集群,并查看输出的 Events 部分以获取任何错误消息。

    oc describe ocscluster <ocscluster-name>
    
  3. 列出 kube-system 名称空间中的 ODF pod,并验证它们是否为 Running

    oc get pods -n kube-system
    

    示例输出

    NAME                                                   READY   STATUS    RESTARTS   AGE
    ibm-keepalived-watcher-5g2gs                           1/1     Running   0          7d21h
    ibm-keepalived-watcher-8l4ld                           1/1     Running   0          7d21h
    ibm-keepalived-watcher-mhkh5                           1/1     Running   0          7d21h
    ibm-master-proxy-static-10.240.128.10                  2/2     Running   0          71d
    ibm-master-proxy-static-10.240.128.11                  2/2     Running   0          71d
    ibm-master-proxy-static-10.240.128.12                  2/2     Running   0          71d
    ibm-ocs-operator-controller-manager-55667f4d68-md4zb   1/1     Running   8          15d
    ibm-vpc-block-csi-controller-0                         4/4     Running   0          48d
    ibm-vpc-block-csi-node-6gnwv                           3/3     Running   0          48d
    ibm-vpc-block-csi-node-j2h62                           3/3     Running   0          48d
    ibm-vpc-block-csi-node-xpwpf                           3/3     Running   0          48d
    vpn-5b8694cdb-pll6z
    
  4. 描述 ibm-ocs-operator-controller-manager pod,并查看输出中的 Events 部分以获取任何错误消息。

    oc describe pod <ibm-ocs-operator-controller-manager-a1a1a1a> -n kube-system
    
  5. 查看 ibm-ocs-operator-controller-manager 的日志。

    oc logs <ibm-ocs-operator-controller-manager-a1a1a1a> -n kube-system
    
  6. 描述 NooBaa,并查看输出的 Events 部分以获取任何错误消息。

    oc describe noobaa -n openshift-storage
    
  7. 描述 ibm-storage-metrics-agent pod,并查看输出中的 Events 部分以获取任何错误消息。

    oc get pods -n kube-system -l name=ibm-storage-metrics-agent
    
    NAME                                                  READY   STATUS    RESTARTS   AGE ibm-storage-metrics-agent-8685869cc6-79qzq   
    
  8. 查看 ibm-storage-metrics-agent 中的日志。

    oc logs ibm-storage-metrics-agent-xxx -n kube-system
    
  9. 描述 ocscluster 并查看输出以获取错误消息。

    oc describe ocscluster <ocscluster-name> -n openshift-storage
    
  10. 使用 oc adm must-gather 命令收集有关集群的数据。

    oc adm must-gather --image=registry.redhat.io/ocs4/ocs-must-gather-rhel8:latest --dest-dir=ocs_mustgather
    
  11. 对于使用工作程序节点上的本地卷的经典集群或 Satellite 集群,请确保用于 osd-device-pathmon-device-path 参数的卷的 disk-by-id 存在于工作程序节点上。 有关如何检索这些卷标识的更多信息,请参阅 收集设备详细信息

  12. 查看故障诊断文档以了解解决常见错误的步骤