返回首页

存储排障 — PVC Pending / 挂载失败

📅 创建于 2026-05-08 🔄 更新于 2026-05-08 📝 210 字

存储排障

有状态应用的存储问题往往更复杂且风险更高。

PVC Pending

现象: PVC 处于 Pending 状态,Pod 无法启动。

常见原因

  • StorageClass 不存在
  • 存储后端(CSI)不可用
  • 存储配额不足
  • 动态供给场景下无匹配 PV(静态供给)
  • accessModes 不匹配

排障步骤

# 查看 PVC 事件(直接揭示原因)
kubectl describe pvc <pvc-name> -n <namespace>

# 检查 StorageClass
kubectl get storageclass

# 检查 CSI 驱动
kubectl get pods -n kube-system | grep -E "csi|storage"
kubectl get csidriver

# 检查 accessModes
kubectl get pvc <name> -n <ns> -o jsonpath='{.spec.accessModes}'

修复方案

  • StorageClass 不存在: 创建 StorageClass 或设置默认
  • 安装 CSI 驱动: 检查云厂商 CSI 插件
  • WaitForFirstConsumer: 需要调度 Pod 触发绑定
  • accessModes 不匹配: ReadWriteOnce / ReadOnlyMany / ReadWriteMany

挂载失败

现象: Pod 处于 ContainerCreating,describe 显示卷挂载失败。

排障

# 在节点上检查
mount | grep pvc
journalctl -u kubelet --no-pager | grep -E "MountVolume|FailedMount" | tail -50

# 检查文件系统
lsblk
fdisk -l
df -h

# 检查 CSI 日志
kubectl logs -n kube-system <csi-node-pod-name> --tail=100

修复

  • 存储后端健康检查
  • 重新格式化存储卷(数据会丢失,谨慎)
  • 检查 CSI 插件状态

关键注意事项

  • 强制删除 Terminating Pod 前 必须确认数据已备份
  • 对于有状态应用,优先调查挂载问题而非直接强制删除
  • 建议 limits.memory 设为 requests.memory 的 1.5-2 倍(MySQL/Java 等)

关联页面

页面关联点
k8s-persistent-storage-guideK8s 持久化存储:PV/PVC/StorageClass 生产实战(存储排障的体系基础)
pod-troubleshootingPod 排障:CrashLoopBackOff/OOM/探针/8 步排查法(存储挂载失败导致的 Pod 异常)
k8s-pod-pending-troubleshooting-guidePod Pending 排障指南 — 7 个排查方向(资源不足/污点/亲和性/存储/配额/选择器/端
linux-nfs-mount-parameters-guideNFS 挂载参数全解析(PVC 挂载 NFS 失败的参数排查)