StorageClass使用的场景
1. 云环境(最常见场景)
在公有云上(如 AWS、GCP、Azure、阿里云、腾讯云等),每个云厂商都提供了自己的存储插件(CSI Driver)。
-
动态创建的好处:当用户创建 PVC 时,Kubernetes 会根据 PVC 里指定的
StorageClass自动去云平台创建对应的磁盘/存储卷(如 AWS EBS、阿里云云盘)。 -
典型场景:
-
应用 Pod 启动时需要 20Gi 存储,K8s 自动去云平台拉一块云盘并挂载。
-
应用删除时(PVC 删除),云盘也能自动回收(根据
reclaimPolicy)。
-
📌 示例(阿里云云盘 StorageClass):
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: alicloud-disk-ssd
provisioner: diskplugin.csi.alibabacloud.com
parameters:
type: cloud_ssd
reclaimPolicy: Delete
2. 私有云 / 虚拟化平台
在 OpenStack、VMware、裸机环境中,也可以通过 CSI 插件对接后端存储系统(如 Ceph RBD、GlusterFS、vSAN、存储阵列)。
-
动态创建的好处:免去了运维手动创建 PV 的繁琐操作。
-
典型场景:
-
OpenStack 的 Cinder 卷
-
VMware vSAN 动态分配卷
-
Ceph 提供 RBD 池,K8s 自动创建 RBD Image
-
3. 多租户环境
当多个团队/命名空间共用集群时,无法预先为每个团队静态创建一堆 PV。
-
动态创建的好处:开发人员只需写 PVC(声明需求),K8s 自动为他们创建合适的 PV。
-
典型场景:
-
SaaS 平台,每个租户的应用部署时能获得独立的存储卷。
-
CI/CD 自动化流水线,测试环境需要临时卷,跑完可以删除。
-
4. 临时 / 自动化场景
-
CI/CD 测试环境:流水线每次运行都会拉起一组 Pod,需要新的持久卷,结束后删除。
-
大数据/AI 场景:训练任务可能要申请临时大容量存储,任务完成后释放。
5. 运维解放
如果不用 StorageClass,管理员需要提前创建一批 PV,然后用户 PVC 去匹配,很不灵活。
-
动态创建让 用户自助:只管写 PVC,K8s 帮忙搞定存储分配。
-
管理员只需维护 StorageClass 的定义和后端存储的可用性。
✅ 总结一句:
StorageClass 动态创建最主要用在 “存储可编程化” 的场景,尤其是云环境和多租户环境,让用户无需关心底层存储细节,只需声明需求即可。