PV作为存储资源,主要包括存储能力、访问模式、存储类型、回收策略、后端存储类型等关键信息的设置。
image.png

1. Kubernetes支持的常见PV类型如下

  • CephFS:一种开源共享存储系统。
  • Glusterfs:一种开源共享存储系统。GlusterFS和Ceph是在现代云环境中表现最出色的两个敏捷存储系统。
  • NFS:网络文件系统。
  • HostPath:宿主机目录,仅用于单机测试。
  • Local:本地存储设备,目前可以通过指定块(Block)设备提供Local PV,或通过社区开发的sig-storage-local-static-provisioner插件(https://github.com/kubernetes-sigs/sig-storage-local-static-provisioner)来管理Local PV的生命周期。
  • RBD(Ceph Block Device):Ceph块存储。
  • VsphereVolume:VMWare提供的存储系统。
  • iSCSI:iSCSI存储设备。

2.PV的关键配置参数

2.1 存储能力(Capacity)

描述存储设备具备的能力(如:storage=10Gi)

2.2 存储卷模式(Volume Mode)

存储卷类型的设置(volumeMode=xxx),可选项包括Filesystem(文件系统)和Block(块设备),默认值为Filesystem。
image.png

2.3访问模式(Access Modes)

对PV进行访问模式的设置,用于描述用户的应用对存储资源的访问权限。访问模式如下。◎

  • ReadWriteOnce(RWO):读写权限,并且只能被单个Node挂载。
  • ReadOnlyMany(ROX):只读权限,允许被多个Node挂载。
  • ReadWriteMany(RWX):读写权限,允许被多个Node挂载。

某些PV可能支持多种访问模式,但PV在挂载时只能使用一种访问模式,多种访问模式不能同时生效。

2.4 存储类别(Class)

PV可以设定其存储的类别,通过storageClassName参数指定一个StorageClass资源对象的名称。具有特定类别的PV只能与请求了该类别的PVC进行绑定。未设定类别的PV则只能与不请求任何类别的PVC进行绑定。

2.5 回收策略(Reclaim Policy)

通过PV定义中的persistentVolumeReclaimPolicy字段进行设置,可选项如下:

  • 保留(Retain):保留数据,需要手工处理。
  • 回收空间(Recycle):简单清除文件的操作(例如执行rm -rf /thevolume/*命令)。
  • 删除(Delete):与PV相连的后端存储完成Volume的删除操作

    2.6 挂载参数(Mount Options)

    在将PV挂载到一个Node上时,根据后端存储的特点,可能需要设置额外的挂载参数,可以根据PV定义中的mountOptions字段进行设置。
    image.png

    2.7 节点亲和性(Node Affinity)

    PV可以设置节点亲和性来限制只能通过某些Node访问Volume,可以在PV定义中的nodeAffinity字段进行设置。使用这些Volume的Pod将被调度到满足条件的Node上。
    image.png

2.2 PV生命周期的各个阶段

某个PV在生命周期中可能处于以下4个阶段(Phaes)之一。

  • Available:可用状态,还未与某个PVC绑定。
  • Bound:已与某个PVC绑定。
  • Released:绑定的PVC已经删除,资源已释放,但没有被集群回收。
  • Failed:自动资源回收失败。