PV描述的是一个集群里的持久化存储卷,和节点一样,属于集群级别资源。
约束与限制
-
在新版控制台(需要将集群升级到1.19.10及以上并且 Everest存储插件升级到1.2.10及以上 )PV资源已经正式开放给用户管理;旧版控制台仍保持导入使用或者是通过动态创建方式进行创建,用户无法通过控制台对PV资源进行生命周期管理。
-
支持多个PV挂载同一个SFS或SFS Turbo,但有如下限制:
- 多个不同的PVC/PV使用同一个底层SFS或SFS Turbo卷时,且被同一Pod使用会出现问题,需要避免这么使用。
- PV中persistentVolumeReclaimPolicy参数需设置为Retain,否则可能存在一个PV删除时,级联删除底层卷,其他关联这个底层卷的PV会由于底层存储不在了,使用出现异常。
- 重复用底层存储时,建议在应用层做好多读多写的隔离保护,防止产生的数据覆盖和丢失。
-
通过YAML创建PV时,存储资源如果为包周期资源,YAML中的persistentVolumeReclaimPolicy字段请勿设置为Delete,否则可能导致级联删除异常。关于PV回收策略详情请参见PV回收策略。
存储卷访问模式
PV只能以底层存储资源所支持的方式挂载到宿主系统上。例如,文件存储可以支持多个节点读写,云硬盘只能被一个节点读写。
- ReadWriteOnce:卷可以被一个节点以读写方式挂载,云硬盘存储卷支持此类型。
- ReadWriteMany:卷可以被多个节点以读写方式挂载,文件存储、对象存储、极速文件存储支持此类型。
表 云存储支持访问模式
存储类型 | ReadWriteOnce | ReadWriteMany |
---|---|---|
云硬盘EVS | √ | × |
文件存储SFS | × | √ |
对象存储OBS | × | √ |
极速文件存储SFS Turbo | × | √ |
PV回收策略
PV回收策略用于指定删除PVC时,底层卷的回收策略,支持设定Delete、Retain回收策略。
- Delete:删除PVC,PV资源与底层存储资源均被删除。
- Retain:删除PVC,PV资源与底层存储资源均不会被删除,需要手动删除回收。PVC删除后PV资源状态为“已释放(Released)”,不能直接再次被PVC绑定使用。
Everest还支持一种删除PVC时不删除底层存储资源的使用方法,当前仅支持使用YAML创建。PV回收策略设置为Delete,添加annotations“everest.io/reclaim-policy: retain-volume-only”,这样删除PVC,PV会被删除,但底层存储资源会保留。
创建云硬盘EVS存储卷
说明:
创建EVS存储卷有如下要求。
- 非系统盘,非专属盘,非共享盘。
- 云硬盘类型为支持类型(普通IO,高IO,超高IO,通用SSD),云硬盘模式为 SCSI。
- 云硬盘未冻结,云硬盘状态可用,云硬盘未被使用。
- 若云硬盘加密,所使用的密钥状态需可用。
使用控制台创建
步骤 1 登录CCE控制台。
步骤 2 单击集群名称进入集群,在左侧选择“容器存储”,在右侧选择“存储卷”页签。
步骤 3 单击右上角“创建存储卷”,在弹出的窗口中填写存储卷参数。
- 存储卷类型:选择“云硬盘”。
- 选择云硬盘。(仅支持选择集群所属企业项目和** **default 企业项目下的云硬盘)。
- PV名称:输入PV名称。
- 访问模式:ReadWriteOnce。
- 回收策略:Delete或Retain,具体解释请参见PV回收策略。
步骤 3 单击“创建”。
使用YAML创建
apiVersion: v1
kind: PersistentVolume
metadata:
annotations:
pv.kubernetes.io/provisioned-by: everest-csi-provisioner
everest.io/reclaim-policy: retain-volume-only # 可选字段,删除PV,保留底层存储卷
name: cce-evs-test
labels:
failure-domain.beta.kubernetes.io/region: cn-north-4
failure-domain.beta.kubernetes.io/zone: cn-north-4b
spec:
accessModes:
- ReadWriteOnce # 访问模式,云硬盘必须为ReadWriteOnce
capacity:
storage: 10Gi # 云硬盘的容量,单位为Gi,取值范围 1-32768
csi:
driver: disk.csi.everest.io # 挂载依赖的存储驱动
fsType: ext4
volumeHandle: 459581af-e78c-4356-9e78-eaf9cd8525eb #云硬盘的volumeID
volumeAttributes:
everest.io/disk-mode: SCSI # 云硬盘的磁盘模式,仅支持SCSI
everest.io/disk-volume-type: SAS # 云硬盘的类型
storage.kubernetes.io/csiProvisionerIdentity: everest-csi-provisioner
everest.io/crypt-key-id: 0992dbda-6340-470e-a74e-4f0db288ed82 # 可选字段,加密密钥ID,使用加密盘的时候填写
everest.io/enterprise-project-id: 86bfc701-9d9e-4871-a318-6385aa368183 # 可选字段,企业项目ID,如果指定企业项目,则创建PVC时也需要指定相同的企业项目,否则PVC无法绑定PV。
persistentVolumeReclaimPolicy: Delete # 回收策略
storageClassName: csi-disk # 存储类名称,云硬盘必须为csi-disk
表 关键参数说明
参数
描述
everest.io/reclaim-policy: retain-volume-only
可选字段
目前仅支持配置“retain-volume-only”
everest插件版本需 >= 1.2.9且回收策略为Delete时生效。如果回收策略是Delete且当前值设置为“retain-volume-only”删除PVC回收逻辑为:删除PV,保留底层存储卷。
failure-domain.beta.kubernetes.io/region
集群所在的region。
failure-domain.beta.kubernetes.io/zone
创建云硬盘所在的可用区,必须和工作负载规划的可用区保持一致。
volumeHandle
云硬盘的volumeID。
获取方法:在云主机控制台,单击左侧栏目树中的“云硬盘 > 磁盘”,单击要对接的云硬盘名称进入详情页,在“概览信息”页签下单击“ID”后的复制图标即可获取云硬盘的volumeID。
everest.io/disk-volume-type
云硬盘类型,全大写。
l SAS:高I/O
l SSD:超高I/O
l GPSSD:通用型SSD
l ESSD:极速型SSD
everest.io/crypt-key-id
卷为加密卷时为必填,填写创建加密秘钥的ID。
everest.io/enterprise-project-id
可选字段
云硬盘的企业项目ID。如果指定企业项目,则创建PVC时也需要指定相同的企业项目,否则PVC无法绑定PV。
获取方法:在云主机控制台,单击左侧栏目树中的“云硬盘 > 磁盘”,单击要对接的云硬盘名称进入详情页,在“概览信息”页签下找到“管理信息”中的企业项目,单击并进入对应的企业项目控制台,复制对应的ID值即可获取云硬盘所属的企业项目的ID。
persistentVolumeReclaimPolicy
集群版本号>=1.19.10且everest插件版本>=1.2.9时正式开放回收策略支持。
支持Delete、Retain回收策略。
Delete:
l Delete且不设置everest.io/reclaim-policy:删除PVC,PV资源与云硬盘均被删除。
l Delete且设置everest.io/reclaim-policy=retain-volume-only:删除PVC,PV资源被删除,云硬盘资源会保留。
Retain:删除PVC,PV资源与底层存储资源均不会被删除,需要手动删除回收。PVC删除后PV资源状态为“已释放(Released)”,不能直接再次被PVC绑定使用。
如果数据安全性要求较高,建议使用Retain以免误删数据。
创建文件存储SFS存储卷
说明:
SFS必须与集群在同一个VPC内。
使用控制台创建
步骤 1 登录CCE控制台。
步骤 2 单击集群名称进入集群,在左侧选择“容器存储”,在右侧选择“存储卷”页签。
步骤 3 单击右上角“创建存储卷”,在弹出的窗口中填写存储卷参数。
- 存储卷类型:选择“文件存储”。
- 选择文件存储资源。
- PV名称:输入PV名称。
- 访问模式:ReadWriteMany。
- 回收策略:Delete或Retain,具体解释请参见PV回收策略。
- 挂载参数:文件存储卷支持设置挂载参数。
步骤 4 单击“创建”。
使用YAML创建
apiVersion: v1
kind: PersistentVolume
metadata:
annotations:
pv.kubernetes.io/provisioned-by: everest-csi-provisioner
everest.io/reclaim-policy: retain-volume-only # 可选字段,删除PV,保留底层存储卷
name: cce-sfs-test
spec:
accessModes:
- ReadWriteMany # 访问模式,文件存储必须为ReadWriteMany
capacity:
storage: 1Gi # 文件存储容量大小
csi:
driver: nas.csi.everest.io # 挂载依赖的存储驱动
fsType: nfs
volumeHandle: 30b3d92a-0bc7-4610-b484-534660db81be # 文件存储的ID
volumeAttributes:
everest.io/share-export-location: sfs-nas01.cn-north-4.ctcloud.com:/share-436304e8
storage.kubernetes.io/csiProvisionerIdentity: everest-csi-provisioner
persistentVolumeReclaimPolicy: Retain # 回收策略
storageClassName: csi-nas # 存储类名称
mountOptions: [] # 挂载参数
表 关键参数说明
参数 | 描述 |
---|---|
everest.io/reclaim-policy: retain-volume-only | 可选字段 目前仅支持配置“retain-volume-only”everest插件版本需 >= 1.2.9且回收策略为Delete时生效。如果回收策略是Delete且当前值设置为“retain-volume-only”删除PVC回收逻辑为:删除PV,保留底层存储卷。 |
volumeHandle | 文件存储的ID。 获取方法:在CCE控制台,单击顶部的“服务列表 > 存储 > 弹性文件服务”,在弹性文件服务列表中单击对应的弹性文件服务名称,在详情页中复制“ID”后的内容即可。 |
everest.io/share-export-location | 文件存储的共享路径。 获取方法:在CCE控制台,单击顶部的“服务列表 > 存储 > 弹性文件服务”,在弹性文件服务列表中可以看到“挂载地址”列,即为文件存储的共享路径。 |
mountOptions | 挂载参数。 不设置时默认配置为如下配置。mountOptions: - vers=3 - timeo=600 - nolock - hard |
everest.io/crypt-key-id | 卷为加密卷时为必填,填写创建加密秘钥的ID。 |
persistentVolumeReclaimPolicy | 集群版本号>=1.19.10且everest插件版本>=1.2.9时正式开放回收策略支持。支持Delete、Retain回收策略。 Delete : Delete且不设置everest.io/reclaim-policy:删除PVC,PV资源与文件存储均被删除。 Delete且设置everest.io/reclaim-policy=retain-volume-only:删除PVC,PV资源被删除,文件存储资源会保留。 **Retain** :删除PVC,PV资源与底层存储资源均不会被删除,需要手动删除回收。PVC删除后PV资源状态为“已释放(Released)”, 不能直接再次被PVC绑定使用。如果数据安全性要求较高,建议使用Retain以免误删数据。 |
storageClassName | 存储类名称,支持配置csi-nas。 csi-nas:表示使用SFS 1.0容量型文件存储。 |
创建极速文件存储SFS Turbo存储卷
说明:
SFS Turbo必须与集群在同一个VPC内。
使用控制台创建
步骤 1 登录CCE控制台。
步骤 2 单击集群名称进入集群,在左侧选择“容器存储”,在右侧选择“存储卷”页签。
步骤 3 单击右上角“创建存储卷”,在弹出的窗口中填写存储卷参数。
- 存储卷类型:选择“极速文件存储”。
- 选择极速文件存储资源。
- PV名称:输入PV名称。
- 访问模式:ReadWriteMany。
- 回收策略:Retain,具体解释请参见PV回收策略。
- 挂载参数:极速文件存储卷支持设置挂载参数。
步骤 4 单击“创建”。
使用YAML创建
apiVersion: v1
kind: PersistentVolume
metadata:
annotations:
pv.kubernetes.io/provisioned-by: everest-csi-provisioner
name: cce-sfsturbo-test
spec:
accessModes:
- ReadWriteMany # 访问模式,极速文件存储必须为ReadWriteMany
capacity:
storage: 100.00Gi # 极速文件存储容量大小
csi:
driver: sfsturbo.csi.everest.io # 挂载依赖的存储驱动
fsType: nfs
volumeHandle: 6674bd0a-d760-49de-bb9e-805c7883f047 # 极速文件存储的ID。
volumeAttributes:
everest.io/share-export-location: 192.168.0.85:/ # 极速文件存储的共享路径
storage.kubernetes.io/csiProvisionerIdentity: everest-csi-provisioner
persistentVolumeReclaimPolicy: Retain # 回收策略
storageClassName: csi-sfsturbo # 存储类名称,极速文件存储必须为csi-sfsturbo
mountOptions: [] # 挂载参数
表 关键参数说明
参数 | 描述 |
---|---|
everest.io/reclaim-policy: retain-volume-only | 可选字段目前仅支持配置“retain-volume-only”everest插件版本需 >= 1.2.9且回收策略为Delete时生效。 如果回收策略是Delete且当前值设置为“retain-volume-only”删除PVC回收逻辑为:删除PV,保留底层存储卷。 |
fsType | 文件类型,支持“obsfs”与“s3fs”,取值为s3fs时创建是obs对象桶,配套使用s3fs挂载; 取值为obsfs时创建的是obs并行文件系统,配套使用obsfs挂载,推荐使用。 |
volumeHandle | 对象存储的桶名称。 |
everest.io/obs-volume-type | 存储类型,包括STANDARD(标准桶)、WARM(低频访问桶)。 |
everest.io/region | OBS存储区域。 |
everest.io/enterprise-project-id | 可选字段对象存储的企业项目ID。如果指定企业项目,则创建PVC时也需要指定相同的企业项目,否则PVC无法绑定PV。 : 在对象存储服务控制台,单击左侧栏目树中的“桶列表”或“并行文件系统”, 单击要对接的对象存储名称进入详情页,在“基本信息”页签下找到企业项目, 单击并进入对应的企业项目控制台,复制对应的ID值即可获取对象存储所属的企业项目的ID。 |
nodePublishSecretRef | 对象存储卷挂载支持设置自定义访问密钥(AK/SK),您可以使用AK/SK创建一个Secret,然后挂载到PV。详细说明请参见对象存储卷挂载设置自定义访问密钥(AK/SK)。 |
mountOptions | 挂载参数。 |
persistentVolumeReclaimPolicy | 集群版本号>=1.19.10且everest插件版本>=1.2.9时正式开放回收策略支持。支持Delete、Retain回收策略。 : Delete且不设置everest.io/reclaim-policy:删除PVC,PV资源与对象存储均被删除。 Delete且设置everest.io/reclaim-policy=retain-volume-only:删除PVC,PV资源被删除,对象存储资源会保留。 Retain :删除PVC,PV资源与底层存储资源均不会被删除,需要手动删除回收。PVC删除后PV资源状态为“已释放(Released)”, 不能直接再次被PVC绑定使用。如果数据安全性要求较高,建议使用Retain以免误删数据。 |