调试 Portworx 故障
查看用于调试 Portworx 的选项,找出故障的根本原因。
检查挂载您的存储实例的 Pod 是否已成功部署
执行以下步骤以查看与 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> ``` 示例输出 ```sh {: screen} pod "nginx" deleted ``` 2. 重新应用配置文件以重新部署 pod。 ```sh {: pre} oc apply -f <app.yaml> ``` 示例输出 ```sh {: pre} pod/nginx created ``` -
如果重新启动 pod 无法解决问题,请 重新装入工作程序节点。
-
验证是否使用的是最新的 IBM Cloud 和 IBM Cloud Kubernetes Service 插件版本。
ibmcloud updateibmcloud plugin repo-pluginsibmcloud plugin update
验证 Portworx 存储驱动程序和插件 pod 的状态是否显示为 “运行中”
执行以下步骤以检查存储驱动程序和插件 pod 的状态,并查看任何错误消息。
- 列出
kube-system项目中的 pod。
示例输出:oc get pods -n kube-system | grep `portworx\|stork`portworx-594rw 1/1 Running 0 20h portworx-rn6wk 1/1 Running 0 20h portworx-rx9vf 1/1 Running 0 20h stork-6b99cf5579-5q6x4 1/1 Running 0 20h stork-6b99cf5579-slqlr 1/1 Running 0 20h stork-6b99cf5579-vz9j4 1/1 Running 0 20h stork-scheduler-7dd8799cc-bl75b 1/1 Running 0 20h stork-scheduler-7dd8799cc-j4rc9 1/1 Running 0 20h stork-scheduler-7dd8799cc-knjwt 1/1 Running 0 20h - 如果存储驱动程序和插件 pod 未显示 正在运行 状态,请获取 pod 的更多详细信息以查找根本原因。 根据您的 Pod 状态,您可能无法执行以下所有命令。
- 获取在驱动程序 pod 中运行的容器的名称。
kubectl describe pod <pod_name> -n kube-system ``` 2. 将日志从驱动程序 pod 导出到本地机器上的 `logs.txt` 文件。 ```sh {: pre} oc logs <pod_name> -n kube-system > logs.txt ``` 3. 查看日志文件。 ```sh {: pre} cat logs.txt ``` - 请检查最新日志以获取任何错误消息。 查看 Portworx 故障诊断文档以了解解决常见错误的步骤。
检查和更新 oc CLI 版本
如果您使用的 oc 命令行界面(CLI)版本低于集群的 major.minor 版本,可能会导致出现意外结果。 例如,Kubernetes 不支持与服务器版本相差 2 个或更多版本(n ± 2)的 oc 客户端版本。
-
请确认您在本地机器上运行的
ocCLI版本与集群中安装的 Kubernetes 版本一致。 显示集群和本地机器上已安装的oc命令行工具(CLI)的版本。oc version示例输出:
Client Version: version.Info{Major:"1", Minor:"23", GitVersion:"v1.35", 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.35+IKS", GitCommit:"e15454c2216a73b59e9a059fd2def4e6712a7cf0", GitTreeState:"clean", BuildDate:"2019-04-01T10:08:07Z", GoVersion:"go1.11.5", Compiler:"gc", Platform:"linux/amd64"}如果在
GitVersion中看到客户机和服务器的版本相同,说明 CLI 版本匹配。 可以忽略服务器版本中的+IKS部分。 -
如果本地机器和集群上的
ocCLI 版本不一致,请更新集群,或者 在本地机器上安装其他版本的 CLI。
更新 Helm Chart
-
列出集群中已安装的 Helm 图表,并将您安装的版本与最新版本进行对比。
helm list --all-namespaces -
如果有更新版本,请安装新版本。 有关指示信息,请参阅更新集群中的 Portworx。