PVC 从 20Gi 扩到 50Gi,kubectl get pvc 显示 50Gi,容器里 df -h 还是 20G。日志里能对上时间点,这种反而好排。
PVC 的容量字段先更新,文件系统扩容由 CSI 在节点上完成,有的存储需要重启 Pod 才触发 resize。文件系统没扩,容器看到的块设备还是旧大小。这一点先确认清楚,后面就不用反复试。
kubectl get pvc data-api -o yaml | grep -A5 conditions kubectl rollout restart statefulset/api kubectl exec api-0 -- df -h /data
「PVC 扩容未生效」排查到最后往往是很小的一处差异,前面那些复杂猜测可以先放一放。能分两步做的操作就别合成一步,中间看一眼返回值,出问题好判断。
报错里带路径的,先去看那个路径在不在、权限对不对。同一份配置存在多处的,先确认改的是被加载的那一份。
新版本先放一台机器上跑一天再全量,问题一般在这段时间暴露。备份不是备了就行,恢复一次才算数,很多备份文件打开才发现是空的。
处理上按这个顺序:确认 StorageClass 的 allowVolumeExpansion 是 true;看 PVC 的 conditions 里是否有 FileSystemResizePending;重启挂载该卷的 Pod 让 kubelet 重做 mount 和 resize;再到容器里 df -h 确认 不要只看 PVC 状态。
结果对不对很好判断,df -h 的 /data 显示 50G PVC 事件里不再有 resize 失败。
