Persistent Volume

PersistentVolume(PV)表示 Kubernetes 集群中与后端存储卷的映射关系,作为 Kubernetes API 资源存在。它是由管理员统一创建和配置的集群资源,负责抽象实际的存储资源,构成集群的存储基础设施。

PersistentVolume 拥有独立于 Pod 的生命周期,能够实现 Pod 数据的持久化存储。

管理员可以手动创建静态 PersistentVolume,或者基于存储类生成动态 PersistentVolume。当开发人员需要为应用获取存储资源时,可以通过 PersistentVolumeClaim(PVC)进行申请,PVC 会匹配并绑定合适的 PersistentVolume。

目录

动态 Persistent Volume 与静态 Persistent Volume

平台支持管理员管理两种类型的 PersistentVolume,分别是动态和静态 Persistent Volume。

  • 动态 Persistent Volume:基于存储类实现。存储类由管理员创建,定义了一种描述存储资源类别的 Kubernetes 资源。当开发人员创建关联存储类的 PersistentVolumeClaim 后,平台会根据 PersistentVolumeClaim 和存储类中配置的参数动态创建合适的 PersistentVolume,并绑定到该 PersistentVolumeClaim,实现存储资源的动态分配。

  • 静态 Persistent Volume:由管理员手动创建的 Persistent Volume。目前支持创建 HostPathNFS 共享存储 类型的静态 Persistent Volume。当开发人员创建不使用存储类的 PersistentVolumeClaim 时,平台会根据 PersistentVolumeClaim 中配置的参数匹配并绑定合适的静态 PersistentVolume。

    • HostPath:使用节点主机上的文件目录(不支持本地存储)作为后端存储,例如:/etc/kubernetes。通常仅适用于单计算节点集群的测试场景。

    • NFS 共享存储:指网络文件系统,是 Persistent Volume 常见的后端存储类型。用户和程序可以像访问本地文件一样访问远程系统上的文件。

Persistent Volume 的生命周期

  1. Provisioning(配置):管理员手动创建静态 Persistent Volume。创建后,Persistent Volume 进入 Available 状态;或者平台根据关联存储类的 PersistentVolumeClaim 动态创建合适的 Persistent Volume。

  2. Binding(绑定):静态 Persistent Volume 被匹配并绑定到 PersistentVolumeClaim 后,进入 Bound 状态;动态 Persistent Volume 根据匹配的 PersistentVolumeClaim 动态创建成功后,也进入 Bound 状态。

  3. Using(使用):开发人员将 PersistentVolumeClaim 关联到计算组件的容器实例,使用 Persistent Volume 映射的后端存储资源。

  4. Releasing(释放):开发人员删除 PersistentVolumeClaim 后,Persistent Volume 被释放。

  5. Reclaiming(回收):Persistent Volume 释放后,根据 Persistent Volume 或存储类的回收策略参数对其进行回收操作。