调试 OpenShift Data Foundation 故障
查看用于调试 ODF 的选项,并查找任何故障的根本原因。
检查存储实例的容器是否成功部署
执行以下步骤以查看与 pod 部署相关的任何错误消息。
-
列出集群中的 pod。 如果 pod 显示的状态为 Running,说明 pod 已成功供应。
oc get pods
-
获取您的Pod的详细信息,并查看CLI输出中 “事件”部分显示的错误信息。
oc describe pod <pod_name>
-
检索 pod 的日志并查看任何错误消息。
oc logs <pod_name>
重新启动应用程序 pod
可以通过重新启动并重新部署 pod 来解决某些问题。 执行以下步骤以重新部署特定 pod。
-
如果您的 pod 是部署的一部分,请删除该 pod 并让部署重新构建该 pod。 如果 pod 不是部署的一部分,请删除 pod 并重新应用 pod 配置文件。
- 删除 pod。
示例输出oc delete pod <pod_name>
pod "nginx" deleted
- 重新应用配置文件以重新部署 pod。
示例输出oc apply -f <app.yaml>
pod/nginx created
- 删除 pod。
-
如果重新启动 pod 无法解决问题,请 重新装入工作程序节点。
-
验证是否使用的是最新的 IBM Cloud 和 IBM Cloud Kubernetes Service 插件版本。
ibmcloud update
ibmcloud plugin repo-plugins
ibmcloud plugin update
确认存储驱动器和插件舱的状态为 “运行中”
执行以下步骤以检查存储驱动程序和插件 pod 的状态,并查看任何错误消息。
-
列出
kube-system
项目中的 pod。oc get pods -n kube-system
-
如果存储驱动程序和插件 pod 未显示 正在运行 状态,请获取 pod 的更多详细信息以查找根本原因。 根据 pod 的状态,以下命令可能会失败。
-
获取在驱动程序 pod 中运行的容器的名称。
kubectl describe pod <pod_name> -n kube-system
-
将日志从驱动程序 pod 导出到本地机器上的
logs.txt
文件。oc logs <pod_name> -n kube-system > logs.txt
-
查看日志文件。
cat logs.txt
-
-
请检查最新日志以获取任何错误消息。 查看 ODF 故障诊断文档以了解解决常见错误的步骤。
检查和更新 oc CLI 版本
如果您使用的 oc
CLI版本与集群的 major.minor 版本不匹配,可能会出现意外结果。 例如,Kubernetes 不支持与服务端版本相差2个或更多版本的 oc
客户端(n +/- 2)。
-
请确认您本地机器上运行的
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
部分。 -
如果本地机器和集群上的
oc
CLI版本不匹配,请更新集群或 在本地机器上安装其他CLI版本。
调试 ODF 资源
描述 ODF 资源并查看命令输出以获取任何错误消息。
-
列出 ODF 集群的名称。
oc get ocscluster
示例输出:
NAME AGE ocscluster-vpc 71d
-
描述存储集群,并查看输出的
Events
部分以获取任何错误消息。oc describe ocscluster <ocscluster-name>
-
列出
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
-
描述
ibm-ocs-operator-controller-manager
pod,并查看输出中的Events
部分以获取任何错误消息。oc describe pod <ibm-ocs-operator-controller-manager-a1a1a1a> -n kube-system
-
查看
ibm-ocs-operator-controller-manager
的日志。oc logs <ibm-ocs-operator-controller-manager-a1a1a1a> -n kube-system
-
描述 NooBaa,并查看输出的
Events
部分以获取任何错误消息。oc describe noobaa -n openshift-storage
-
描述
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
-
查看
ibm-storage-metrics-agent
中的日志。oc logs ibm-storage-metrics-agent-xxx -n kube-system
-
描述
ocscluster
并查看输出以获取错误消息。oc describe ocscluster <ocscluster-name> -n openshift-storage
-
使用
oc adm must-gather
命令收集有关集群的数据。oc adm must-gather --image=registry.redhat.io/ocs4/ocs-must-gather-rhel8:latest --dest-dir=ocs_mustgather
-
对于使用工作程序节点上的本地卷的经典集群或 Satellite 集群,请确保用于
osd-device-path
和mon-device-path
参数的卷的disk-by-id
存在于工作程序节点上。 有关如何检索这些卷标识的更多信息,请参阅 收集设备详细信息