调试 Block Storage for Classic 失败
审查调试选项 Block Storage for Classic,找出任何故障的根本原因。
检查挂载存储实例的 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>pod "nginx" deleted - 重新应用配置文件以重新部署 pod。
示例输出oc apply -f <app.yaml>pod/nginx created
- 删除 pod。
-
如果重新启动 pod 无法解决问题,请 重新装入工作程序节点。
-
验证是否使用的是最新的 IBM Cloud 和 IBM Cloud Kubernetes Service 插件版本。
ibmcloud updateibmcloud plugin repo-pluginsibmcloud plugin update
验证存储驱动程序和插件 pod 是否显示运行状态
执行以下步骤以检查存储驱动程序和插件 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
-
-
如果存储驱动程序和插件 pod 未显示 正在运行 状态,请获取 pod 的更多详细信息以查找根本原因。 根据 pod 的状态,您可能无法执行以下所有命令。
- 获取在驱动程序 pod 中运行的容器的名称。
输出示例 Block Storage for VPCkubectl get pod ibm-vpc-block-csi-controller-0 -n kube-system -o jsonpath="{.spec['containers','initContainers'][*].name}" | tr -s '[[:space:]]' '\n'csi-provisioner csi-attacher liveness-probe iks-vpc-block-driver - 将容器日志从驱动程序 pod 导出到本地机器上的
logs.txt文件。oc logs <pod_name> -n kube-system -c <container_name> > logs.txt
- 获取在驱动程序 pod 中运行的容器的名称。
-
请检查最新日志以获取任何错误消息。 查看 Block Storage for Classic 故障诊断文档以了解解决常见错误的步骤。
检查 PVC 是否已成功配置。
执行以下步骤以检查 PVC 的状态并查看任何错误消息。
-
检查 PVC 的状态。 如果 PVC 显示的状态为 Bound,说明 PVC 已成功供应。
oc get pvc-
如果 PVC 显示状态为 Bound,那么表示已成功供应 PVC。
示例输出
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE silver-pvc Bound pvc-4b881a6b-ada8-4a44-b568-fe909107d756 24Gi RWX ibmc-file-silver 7m29s -
如果 PVC 的状态显示为 暂挂,请描述 PVC 并查看输出的 事件 部分以获取任何警告或错误消息。 请注意,在使用 PVC 部署应用程序 pod 之前,引用卷绑定方式设置为
WaitForFirstConsumer的存储类的 PVC 将保持 暂挂 状态。oc describe pvc <pvc_name>示例输出
Name: local-pvc Namespace: default StorageClass: sat-local-file-gold Status: Pending Volume: Labels: <none> Annotations: <none> Finalizers: [kubernetes.io/pvc-protection] Capacity: Access Modes: VolumeMode: Filesystem Mounted By: <none> Events: Type Reason Age From Message ---- ------ ---- ---- ------- Warning ProvisioningFailed 60s (x42 over 11m) persistentvolume-controller storageclass.storage.k8s.io "sat-local-file-gold" not found
-
检查和更新 oc CLI 版本
如果使用的 oc CLI 版本至少与群集的 major.minor 版本不匹配,可能会出现意外结果。 例如,Kubernetes 不支持与服务器版本相差 2 个或更多版本(n +/- 2)的 oc 客户端版本。
-
确认本地计算机上运行的
ocCLI 版本与群集中安装的 Kubernetes 版本一致。 显示群集和本地计算机上安装的ocCLI 版本。oc version示例输出:
Client Version: version.Info{Major:"1", Minor:"23", GitVersion:"v1.34", 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.34+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 版本。
检查和更新 Block Storage for Classic 驱动程序
-
对于 Block Storage for VPC,请验证您是否具有最新版本的 Block Storage for VPC 集群附加组件。
-
对于经典集群上的 Block Storage for Classic,请确保已安装插件的最新 Helm Chart 版本。
- 更新 Helm chart 存储库。
helm repo update - 列出存储库中的 Helm chart。
示例输出helm search repo iks-charts | grep block-storage-pluginiks-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 chart,并将安装的版本与可用版本进行比较。
helm list --all-namespaces - 如果有更新版本可用,请安装此版本。 有关指示信息,请参阅 更新 IBM Cloud Block Storage 插件。
- 更新 Helm chart 存储库。