服务器K8s集群PVC排错:从Pending到挂载失败的实操排查

PVC 卡在 Pending 或者 Pod 一直 ContainerCreating,通常不是网络问题,而是存储卷没绑定成功。
先执行 kubectl get pvc -A 看状态,再用 kubectl describe pvc <名称> -n <命名空间> 看 Events,大多数原因就写在那里。

先确认现象和排查入口

PVC 常见异常有三种:状态 Pending、状态 Bound 但 Pod 挂载失败、Pod 启动后读写报错。
先分清属于哪一种,再决定查 PVC、查 PV 还是查节点。

  • 状态 Pending:PVC 没有绑定到 PV,重点看 StorageClass 和容量匹配。
  • 状态 Bound 但 Pod 起不来:PV 已绑定,问题多在节点挂载或权限。
  • Pod 运行但读写失败:检查挂载路径、权限和存储后端。

基础命令先跑一遍:

kubectl get pvc -A
kubectl get pv
kubectl get storageclass
kubectl get events -A --sort-by=.lastTimestamp | tail -30

get events 能把最近报错按时间排出来,比逐个 describe 更快定位。

定位 Pending:StorageClass 和 PV 是否对得上

PVC Pending 最常见的原因是 StorageClass 名称写错或不存在。
先看集群里有哪些 StorageClass:

kubectl get storageclass

再对照 PVC 里的 storageClassName 字段。
如果 PVC 写了一个不存在的名字,事件里会出现 storageclass.storage.k8s.io "xxx" not found。

第二种情况是访问模式不匹配。
PV 支持 ReadWriteOnce,PVC 却申请 ReadWriteMany,绑定就会失败。
用下面命令核对:

kubectl describe pvc  -n <命名空间>
kubectl describe pv 

重点看 Access Modes 和 Capacity 两行是否一致。
容量小于 PVC 申请值同样绑不上。

如果是静态供给,还要确认 PV 的 claimRef 有没有被别的 PVC 占用。
已绑定的 PV 不会再次分配给新 PVC。

处理 Bound 但挂载失败

PVC 显示 Bound,Pod 却停在 ContainerCreating,先看 Pod 事件:

kubectl describe pod  -n <命名空间>

常见报错是 MountVolume.SetUp failed 或 timeout waiting for volume。
这类问题通常出在节点侧:

  • NFS 或云盘挂载点不通,检查节点到存储后端的网络。
  • 节点上挂载工具缺失,例如 NFS 客户端未安装。
  • 存储后端容量已满或权限被回收。

可以在对应节点上手动测试挂载命令,确认存储端可达后再重启 kubelet:

systemctl restart kubelet

重启前确认该节点上的业务 Pod 可以短暂中断,避免影响生产。

避坑要点

  • 不要直接删除 Bound 状态的 PVC,先确认数据是否需要保留。
  • 修改 StorageClass 名称后,旧 PVC 不会自动重新绑定,需要重建。
  • 云托管集群的默认 StorageClass 可能带 WaitForFirstConsumer,PVC 在 Pod 调度前一直 Pending 属于正常现象。
  • 排查时优先看 Events,不要凭经验猜。

验证是否恢复

修复后按下面顺序确认:

kubectl get pvc -n <命名空间>
kubectl get pod -n <命名空间>
kubectl exec -it  -n <命名空间> -- df -h

PVC 应为 Bound,Pod 应为 Running,df -h 能看到挂载点且容量正确。
再往挂载目录写一个测试文件,确认读写正常:

kubectl exec -it  -n <命名空间> -- touch /data/test.txt

能创建成功,说明 PVC 排错流程走通。
如果仍失败,回到 describe pvc 和 describe pod 的事件继续查。

常见疑问

PVC 一直 Pending 但 StorageClass 存在,怎么办?
先看 PVC 事件里是否提示容量或访问模式不匹配,再检查 PV 是否已被其他 PVC 占用。

Pod 删除后 PVC 会跟着消失吗?
取决于 StorageClass 的回收策略,Delete 会删,Retain 会保留。用 kubectl get pv 看 RECLAIM POLICY 列。

云盘扩容后 PVC 容量没变?
先确认 StorageClass 是否允许扩容,再检查 PVC 是否已提交扩容请求。部分环境需要重启 Pod 才能识别新容量。

分享到:
上一篇
服务器K8s集群ConfigMap排错:Pod挂载失败与热更新失效的排查流程
下一篇
K8s CronJob 不执行或报错:集群排错步骤与常见原因
1
系统公告

泽御云中秋国庆双节活动上线:新购8折,拼团3.99元起

尊敬的用户:
泽御云“月满中秋·礼贺国庆”双节活动现已开启,活动时间为2026年9月23日至10月10日。 活动期间可享以下福利:
1. 常规云服务器新购使用优惠码“泽御中秋国庆同乐”,符合条件的订单享8折优惠。
2. 香港精品云服务器5人拼团低至3.99元,部分4核4G套餐3人拼团年付388元,续费同价。
3. 新用户购买年付云服务器,符合活动规则可赠送2个月使用时长。
4. 老用户续费季度赠15天,续费年度赠2个月;活动期间升级配置免收配置迁移手续费。
5. 推荐好友成功下单,符合条件的推荐人可获赠7天服务器使用时长。
6. 活动期间享宕机补偿标准翻倍、简单网站迁移协助及技术工单优先处理权益。
温馨提示:优惠码不适用于拼团套餐、活动轻量产品、年付订单及续费订单;拼团套餐为独立特价活动,不与赠时类福利叠加。赠送时长不可折现、退款或跨账户转移,具体规则以活动页面说明为准。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意