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 使用存储,实现数据持久化。
posted @ 2026-05-28 11:29  Donaver  阅读(15)  评论(0)    收藏  举报