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