StorageClass - Warehouse Manager
StorageClass(仓库管理员)是 Kubernetes 中用于实现存储动态供给的组件。它让用户不必手动挑选和绑定 PV,而是通过 PVC 自动获得合适的存储资源。
🧩 StorageClass 的职责
- 动态供给(Dynamic Provisioning)
👉 当用户创建 PVC 时,如果没有合适的 PV,StorageClass 会自动创建一个新的 PV 并绑定。 - 存储类型定义
👉 StorageClass 定义了存储的“配方”,包括存储提供者(Provisioner)、参数(如磁盘类型、大小)、回收策略等。 - 简化管理
👉 管理员只需定义不同的 StorageClass(比如 SSD、高性能磁盘、低成本磁盘),用户通过 PVC 指定需要的类型即可。
📌 类比理解
- StorageClass = 仓库管理员
- 仓库管理员知道公司有哪些仓库类型(SSD 仓库、机械仓库、云仓库)。
- 当工人(Pod)提交领用单(PVC)时,仓库管理员会根据需求自动分配或新建仓库(PV)。
- 工人只需写下需求,不必关心仓库的具体位置和细节。
📝 示例配置
StorageClass:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: fast-storage
provisioner: kubernetes.io/aws-ebs
parameters:
type: gp2
reclaimPolicy: Retain
PVC 使用 StorageClass:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc-fast
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
storageClassName: fast-storage
👉 当用户创建这个 PVC 时,StorageClass 会自动创建一个 PV 并绑定。
⚠️ 注意事项
- storageClassName:PVC 必须指定 StorageClass,否则可能无法自动供给。
- 回收策略:决定 PV 删除后的行为(
Delete或Retain)。 - 云平台集成:不同云平台有不同的 Provisioner(如 AWS EBS、GCP PD、Azure Disk)。
💡 总结
- PV = 仓库
- PVC = 领用单
- StorageClass = 仓库管理员,负责自动分配或新建仓库。
- 它让存储供给更加灵活、自动化,避免人工管理 PV。
🧩 PV 和 PVC
在 Kubernetes 中,PV(PersistentVolume)和 PVC(PersistentVolumeClaim)是存储管理的核心机制。它们解决了 Pod 的存储持久化问题,让数据不会因为 Pod 重启或迁移而丢失。
🧩 PV(PersistentVolume)
- 定义:由管理员预先配置的存储资源,可以来自本地磁盘、NFS、云存储(如 AWS EBS、GCP PD)。
- 作用:相当于“仓库”,提供实际的存储空间。
- 生命周期:独立于 Pod,Pod 删除后 PV 仍然存在。
🧩 PVC(PersistentVolumeClaim)
- 定义:用户对存储的请求,声明需要多少容量、什么访问模式。
- 作用:相当于“领用单”,Pod 通过 PVC 来申请使用 PV。
- 绑定机制:当 PVC 的需求与某个 PV 匹配时,系统会自动绑定。
📌 类比理解
- PV = 仓库:管理员提前准备好不同大小和类型的仓库。
- PVC = 领用单:工人(Pod)提交申请,说明需要多大的仓库和用途。
- 绑定 = 分配仓库:系统根据 PVC 的需求,把合适的仓库分配给工人。
📝 示例配置
PV:
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv-example
spec:
capacity:
storage: 1Gi
accessModes:
- ReadWriteOnce
hostPath:
path: "/mnt/data"
PVC:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc-example
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
👉 当 PVC 请求 1Gi 存储时,系统会自动绑定到满足条件的 PV。
⚠️ 注意事项
-
访问模式:
ReadWriteOnce:单节点读写。ReadOnlyMany:多节点只读。ReadWriteMany:多节点读写。
-
动态供给:如果没有合适的 PV,StorageClass 可以自动创建 PV。
💡 总结
- PV = 存储资源,由管理员或 StorageClass 提供。
- PVC = 存储请求,由用户声明。
- Pod 通过 PVC 使用存储,实现数据持久化。

浙公网安备 33010602011771号