适用场景

有状态服务上 K8s 的坑主要在存储:StorageClass 选错、卷无法在线扩容、快照没做导致数据无法回滚。

配置步骤(StorageClass 与 PVC 规划)

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata: { name: fast-ssd }
provisioner: csi.example.com
allowVolumeExpansion: true
parameters: { type: ssd }
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata: { name: data, namespace: app }
spec:
  accessModes: [ReadWriteOnce]
  storageClassName: fast-ssd
  resources: { requests: { storage: 100Gi } }

关键参数与建议

  • StorageClass 按性能分级:SSD/HDD、是否支持快照与扩容
  • 访问模式:RWO(单节点读写)为主,RWX 需共享存储支持
  • 在线扩容:确认驱动支持,扩容后文件系统也要扩容
  • 快照与备份:VolumeSnapshot 配合备份工具,定期演练恢复
  • 容量治理:PVC 使用率监控,避免节点磁盘写满

容易踩的坑

  • 默认 StorageClass 未指定,PVC 一直 Pending
  • 使用 RWX 但后端不支持,多副本挂载失败
  • 容量一次性申请过大,浪费且难回收

验证与巡检

kubectl get sc
kubectl get pvc -A
  • 巡检:无 Pending PVC、容量使用率合理、default SC 明确

小结

存储类资源的验收:能创建、能扩容、能快照、能恢复,四条都验证过才敢放有状态服务。

> 说明:文中命令为通用写法,不同型号/版本可能略有差异,落地前请对照设备实际版本的官方文档;带外管理与安全设备变更建议先在测试设备验证。