CFN Cloud
2025-10-10

存储类(StorageClass)

让 PVC 自动触发存储创建。

StorageClass 让 PVC 自动触发底层存储创建,避免手动准备 PV。

关键字段

  • provisioner:存储插件
  • parameters:存储参数
  • reclaimPolicy:回收策略

简化示例

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: fast
provisioner: csi.example.com
parameters:
  type: ssd
reclaimPolicy: Delete

建议

  • 区分 fast/standard 两类即可
  • 生产要考虑回收策略与备份

实操要点

  • 先做快速盘点:kubectl get nodeskubectl get pods -Akubectl get events -A
  • 对比“期望状态”和“实际状态”,kubectl describe 往往能解释漂移或失败原因。
  • 名称、Label、Selector 要一致,避免 Service 或控制器找不到 Pod。

快速检查清单

  • 资源定义与业务意图一致。
  • Namespace、权限、镜像与环境匹配。
  • 上线前具备健康探针与可观测日志。

存储模型与绑定关系

Kubernetes 将“需求”和“实现”分离:PVC 描述需求,PV 描述具体存储,StorageClass 描述供给方式。StorageClass 决定了存储如何创建、如何绑定到 Pod。

访问模式与回收策略

访问模式决定卷的使用方式:RWO 适合单写入,RWX 适合共享读写,ROX 适合只读共享。回收策略决定 PVC 删除后的行为,Delete 会移除底层卷,Retain 会保留数据。生产环境务必谨慎选择。

扩容与快照

很多存储后端支持在线扩容,但仍需确认文件系统是否需要额外扩展步骤。快照用于备份与克隆,建议用于升级演练与灾备验证。

性能与成本

存储往往是瓶颈。SSD 类更快但更贵,网络存储更灵活但延迟更高。选择 StorageClass 要基于真实 IOPS 与吞吐需求,而不是仅看容量。持续监控使用率能避免过度预留。

拓扑与可用区

部分存储只支持单可用区。要让调度与绑定一致,需配置合适的绑定模式和拓扑约束。若出现 Pending,检查可用区与卷绑定配置。

数据一致性与备份窗口

备份和快照需要考虑一致性。数据库类工作负载建议在低峰或配合一致性机制进行快照,并定期验证恢复流程,确认实际恢复时间。

运维流程

先确认 PVC 已绑定,再启动业务。监控磁盘使用与 inode 压力。迁移时预留数据复制窗口,并演练恢复流程。存储具备持久性,因此资源下线时也要清理遗留 PVC 与底层卷。

kubectl get pv
kubectl get pvc -n demo
kubectl describe pvc data-demo -n demo

收个尾:StorageClass 定的是“默认玩法”

StorageClass 选得好不好,决定了你后面会不会天天遇到 PVC Pending、或者一不小心把数据删了。

我建议你至少确认三件事:

  • 集群里有没有默认 StorageClass(没有的话 PVC 会卡住)
  • 回收策略是 Delete 还是 Retain(生产数据别随手 Delete)
  • 绑定模式/可用区是否匹配你的调度方式

另外,IOPS/吞吐别拍脑袋,最好用压测或线上指标反推,不然就是“看起来更快,实际更贵”。

参考链接