PersistentVolume(PV)是 Kubernetes 集群中由管理员预先配置或通过存储类(StorageClass)动态分配的持久化存储资源,独立于 Pod 生命周期,为应用提供与底层存储技术(如云存储、NFS、iSCSI 等)解耦的抽象层。
为应用提供持久化存储的核心流程如下:
- 定义 PV:静态模式下,管理员手动创建 PV 并指定容量、访问模式及存储类型;动态模式下通过 StorageClass 自动按需生成 PV。
- 声明 PVC:用户通过 PersistentVolumeClaim(PVC)描述所需存储的容量、访问模式(如 ReadWriteOnce)及 StorageClass,Kubernetes 控制器将 PVC 与符合条件的 PV 绑定。
- 挂载到 Pod:在 Pod 的 Volume 配置中引用 PVC,将其挂载至容器内的指定路径,确保数据在 Pod 重启或调度时持久保留。
关键设计考量包括:
- 生命周期策略:通过 PV 的 reclaimPolicy(Retain/Delete/Recycle)控制 PVC 删除后的存储处理方式,动态存储通常采用 Delete 以自动释放资源。
- 状态应用适配:结合 StatefulSet 实现 PVC 的按序绑定,保障有状态服务(如数据库)的稳定存储标识。
- 多存储类型管理:利用 StorageClass 区分高性能(SSD)、冷存储等层级,并通过 PVC 参数动态匹配,优化成本与性能平衡。