K8s PVC 无法绑定导致 Pod Pending 的排查与解决
2026-08-11 00:53:03
# Kubernetes
问题现象与背景原因
Pod 卡在 Pending,describe 事件提示 persistentvolumeclaim "xxx" not bound。查看 PVC 状态是 Pending 而非 Bound,Pod 因此一直起不来。
常见根因:
- PVC 申请的
storageClassName在集群中不存在; - 对应的
StorageClass的 provisioner(动态供给器)异常或已下线; - 云盘场景:PVC 申请的 zone 与 Pod 调度节点不在同一可用区;
- 静态供给时,PV 的
capacity/accessModes/selector与 PVC 不匹配; - 集群没设置默认 StorageClass,而 PVC 未显式指定。
排查过程(思路与定位方法)
1 | # 1. 看 PVC 状态与事件 |
解决方法
动态供给:确保 StorageClass 存在且 provisioner 正常
1 | # 设置默认 StorageClass(若缺失) |
跨可用区问题,StorageClass 加 waitForFirstConsumer:
1 | apiVersion: storage.k8s.io/v1 |
静态供给:确保 PV 与 PVC 匹配
1 | # PV 端 |
操作命令速查
1 | kubectl get pvc,pv,sc -n <ns> |
经验总结
- PVC 不绑定 90% 是 StorageClass 或 zone 问题,先
kubectl describe pvc看事件,多半直接给答案。 - 云环境务必用
WaitForFirstConsumer,避免 PV / Pod 跨可用区。 - 没默认 SC 且 PVC 不显式指定,会直接 Pending,新集群建议设默认 SC。
- 静态 PV 要注意 capacity / accessModes / storageClassName 三方一致。