持久卷

持久卷(PersistentVolume,PV)表示Kubernetes集群中后端存储卷的映射关系,是一种Kubernetes API资源。它由管理员统一创建和配置,是集群中的资源抽象层,构建了整个存储基础设施,并独立于Pods的生命周期,实现Pods数据的持久化存储。

管理员可以手动创建静态持久卷,或依据存储类生成动态持久卷。当开发人员需要为应用获取存储资源时,可以通过持久卷声明(PersistentVolumeClaim,PVC)发起申请,系统会自动匹配并绑定到合适的持久卷上。

动态持久卷与静态持久卷

平台支持两种类型的持久卷管理:

  • 动态持久卷:基于存储类实现。管理员创建存储类,这一Kubernetes资源定义了存储资源的类别。当开发人员创建与特定存储类相关的持久卷声明后,平台会根据PVC及存储类中设定的参数,动态创建一个合适的持久卷,并将其绑定到该PVC,从而实现存储资源的动态分配。

  • 静态持久卷:由管理员手动创建。目前支持HostPathNFS共享存储两种类型的静态持久卷。当开发人员提交未指定存储类的持久卷声明时,平台会根据PVC中配置的参数匹配并绑定一个合适的静态持久卷。

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

    • NFS共享存储:即网络文件系统,是持久卷常见的后端存储类型,允许用户或程序像访问本地文件一样访问远程系统上的文件。

持久卷的生命周期

  1. 创建(Provisioning):管理员可以手动创建静态持久卷,此时持久卷处于可用状态;或者平台根据与存储类关联的PVC动态创建持久卷。
  2. 绑定(Binding):当静态持久卷与PVC匹配并绑定后,其状态变为已绑定;动态持久卷也是在成功创建后自动进入已绑定状态。
  3. 使用(Using):开发人员将PVC与计算组件的容器实例关联,从而使用持久卷映射的后端存储资源。
  4. 释放(Releasing):当开发人员删除PVC后,相应的持久卷将被释放。
  5. 回收(Reclaiming):释放后的持久卷会依据持久卷或存储类中设定的回收策略进行相应的回收操作。