PV作为存储资源,主要包括存储能力、访问模式、存储类型、回收策略、后端存储类型等关键信息的设置。
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)
2.2 存储卷模式(Volume Mode)
存储卷类型的设置(volumeMode=xxx),可选项包括Filesystem(文件系统)和Block(块设备),默认值为Filesystem。
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字段进行设置。2.7 节点亲和性(Node Affinity)
PV可以设置节点亲和性来限制只能通过某些Node访问Volume,可以在PV定义中的nodeAffinity字段进行设置。使用这些Volume的Pod将被调度到满足条件的Node上。
2.2 PV生命周期的各个阶段
某个PV在生命周期中可能处于以下4个阶段(Phaes)之一。
- Available:可用状态,还未与某个PVC绑定。
- Bound:已与某个PVC绑定。
- Released:绑定的PVC已经删除,资源已释放,但没有被集群回收。
- Failed:自动资源回收失败。