PersistentVolume(PV)表示 Kubernetes 集群中与后端存储卷的映射关系,作为 Kubernetes API 资源存在。它是由管理员统一创建和配置的集群资源,负责抽象实际的存储资源,构成集群的存储基础设施。
PersistentVolume 拥有独立于 Pod 的生命周期,能够实现 Pod 数据的持久化存储。
管理员可以手动创建静态 PersistentVolume,也可以基于存储类生成动态 PersistentVolume。如果开发人员需要为应用获取存储资源,可以通过 PersistentVolumeClaim(PVC)进行申请,PVC 会匹配并绑定合适的 PersistentVolume。
平台支持管理员管理两种类型的 PersistentVolume,即动态和静态 Persistent Volume。
动态 Persistent Volume:基于存储类实现。存储类由管理员创建,定义了描述存储资源类别的 Kubernetes 资源。当开发人员创建关联存储类的 PersistentVolumeClaim 时,平台会根据 PersistentVolumeClaim 和存储类中配置的参数动态创建合适的 PersistentVolume,并绑定到该 PersistentVolumeClaim,实现存储资源的动态分配。
静态 Persistent Volume:由管理员手动创建的 Persistent Volume。目前支持创建 HostPath 或 NFS 共享存储 类型的静态 Persistent Volume。当开发人员创建不使用存储类的 PersistentVolumeClaim 时,平台会根据 PersistentVolumeClaim 中配置的参数匹配并绑定合适的静态 PersistentVolume。
HostPath:使用节点主机上的文件目录(不支持本地存储)作为后端存储,例如:/etc/kubernetes
。通常仅适用于单计算节点集群的测试场景。
NFS 共享存储:指网络文件系统,是 Persistent Volume 常见的后端存储类型。用户和程序可以像访问本地文件一样访问远程系统上的文件。
Provisioning(配置):管理员手动创建静态 Persistent Volume,创建后 Persistent Volume 进入 Available 状态;或者平台根据关联存储类的 PersistentVolumeClaim 动态创建合适的 Persistent Volume。
Binding(绑定):静态 Persistent Volume 匹配并绑定到 PersistentVolumeClaim 后,进入 Bound 状态;动态 Persistent Volume 根据请求动态创建并匹配 PersistentVolumeClaim,创建成功后也进入 Bound 状态。
Using(使用):开发人员将 PersistentVolumeClaim 关联到计算组件的容器实例,使用 Persistent Volume 映射的后端存储资源。
Releasing(释放):开发人员删除 PersistentVolumeClaim 后,Persistent Volume 被释放。
Reclaiming(回收):Persistent Volume 被释放后,根据 Persistent Volume 或存储类的回收策略参数对其进行回收操作。