跳转到内容

PVC Pending

PVC 长时间处于 Pending,通常是 StorageClass、可用区、配额、访问模式或静态 PV 匹配失败导致。


Terminal window
NAMESPACE=default
PVC=mysql-data
kubectl get pvc "${PVC}" -n "${NAMESPACE}" -o wide
kubectl describe pvc "${PVC}" -n "${NAMESPACE}"
kubectl get storageclass
kubectl get events -n "${NAMESPACE}" --sort-by=.lastTimestamp

重点看 Events 中的 provision、binding、quota、zone、permission 错误。


现象可能原因处理
找不到 StorageClassstorageClassName 写错或未创建修正 PVC 或创建 StorageClass
no persistent volumes available静态 PV 不匹配检查容量、accessModes、storageClassName、volumeName
云盘创建失败CBS 配额、余额、权限不足检查云资源配额和 CAM 权限
可用区不匹配云盘和节点不在同一可用区使用 WaitForFirstConsumer 或指定正确可用区
CFS 创建失败权限组、VPC、子网参数错误检查 StorageClass 参数

Terminal window
kubectl get pv
kubectl describe pv <pv-name>
kubectl get pvc "${PVC}" -n "${NAMESPACE}" -o yaml

PVC 和 PV 至少需要匹配:

  • storageClassName
  • accessModes
  • 容量请求不超过 PV 容量
  • volumeName 指定时与 PV 名称一致
  • PV 状态为 Available 或可重新绑定

Terminal window
kubectl describe storageclass <storage-class-name>
kubectl get pods -n kube-system | rg 'csi|cbs|cfs|cos'

如果 CSI 组件异常,先恢复 CSI 组件,再重试 PVC 创建。