配置静态持久卷
静态卷供应(Static Volume Provisioning)允许管理员使用已经在存储侧创建的资源做为PV,供集群中的容器使用。
配置说明
请根据以下步骤配置使用静态持久卷:
前置准备
存储侧已经存在待创建PV所需要的存储资源,如LUN或者文件系统。如果存储资源是文件系统,还需要创建文件系统的共享和客户端信息。
配置PV
准备PV配置文件mypv.yaml,示例如下,其他配置参数请参考 表1 。
kind: PersistentVolume apiVersion: v1 metadata: name: mypv spec: volumeMode: Filesystem storageClassName: "" # 必须配置为"" accessModes: - ReadWriteOnce csi: driver: csi.huawei.com # CSI驱动名称 volumeHandle: iscsi-dorado-181.lun0001 # 卷名称 fsType: xfs # 文件系统类型 capacity: storage: 100Gi
静态卷供应的配置文件中,storageClassName参数必须配置为‘“”’,如果不配置,Kubernetes会使用系统默认的StorageClass。执行以下命令,基于准备好的yaml文件创建PV。
kubectl create -f mypv.yaml
等待一段时间后,执行以下命令,查看已经创建的PV信息。
kubectl get pv
命令结果示例如下,当PV状态为“Available”时,表明PV创建成功。
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE mypv 100Gi RWO Retain Available 4s
表 1 配置静态卷持久卷PV参数说明
以Kubernetes v1.22.1为例,支持数字、小写字母、中划线(-)和点(.)的组合,并且必须以字母数字开头和结尾。 | ||||
卷模式。可选参数。 当使用LUN类型的卷时,支持配置以下类型:
|
| |||
|
| |||
| ||||
纳管对象为Dtree资源,且存储后端中未配置parentname参数时,必须配置该参数。 若仅在PV中配置了dTreeParentName,而对应的存储后端中未配置parentname时,要求在安装CSI时根据表5将CSIDriverObject.attachRequired设置为true。 | ||||
请确保与存储上对应资源的容量保持一致。Kubernetes并不会调用CSI检查此字段值的正确性,所以在PV容量与存储上对应资源的容量不一致也能被成功创建。 | ||||
指定NFS版本挂载时,当前支持NFS 3/4.0/4.1/4.2协议(需存储设备支持且开启)。当配置参数为nfsvers=4时,因为操作系统配置的不同,实际挂载可能为NFS 4的最高版本协议,如4.2,当需要使用4.0协议时,建议配置nfsvers=4.0。 | ||||
acl、aclonlyposix、cnflush、cflush参数描述仅供参考,详细参数说明请参考《OceanStor Pacific系列 产品文档》 > 配置 > 文件服务基础业务配置指南 > 配置基础业务(DPC场景) > 客户端访问DPC共享 > 步骤2。 | ||||
DPC命名空间支持POSIX ACL功能,DPC客户端支持POSIX ACL的鉴权行为。 支持POSIX ACL的协议有:DPC、NFSv3、HDFS。如使用NFSv4 ACL或NT ACL,会导致DPC客户端无法识别该类型的ACL,从而导致该类型的ACL不会生效。 | ||||
异步刷盘模式,当文件关闭时不会同步将Cache的数据持久化到存储介质中,而是通过Cache异步刷盘的方式将数据写入存储介质,Cache的后台刷盘将在写业务完成后根据刷盘周期定时刷盘。在多客户端场景下,对同一文件进行并行操作,文件Size的更新会受刷盘周期的影响,即当刷盘动作完成后才会更新文件的Size,更新通常会在数秒内完成。同步I/O不受刷盘周期影响。 | ||||
配置PVC
当PV以静态卷供应的方式创建完成后,可以基于该PV创建PVC,从而供容器使用。
准备PVC配置文件mypvc.yaml,示例如下,其他配置参数请参考 表2 。
kind: PersistentVolumeClaim apiVersion: v1 metadata: name: mypvc spec: storageClassName: "" accessModes: - ReadWriteOnce volumeMode: Filesystem resources: requests: storage: 100Gi volumeName: mypv # 对应PV名称
执行以下命令,基于已配置的yaml文件创建PVC。
kubectl create -f mypvc.yaml
等待一段时间后,执行以下命令,查看已经创建的PVC信息。
kubectl get pvc
命令结果示例如下,当PVC状态为“Bound“时,表明PVC创建成功。
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE mypvc Bound pvc-840054d3-1d5b-4153-b73f-826f980abf9e 100Gi RWO 12s
- 完成创建PVC操作后,如果长时间后PVC的状态是Pending,请参考 创建PVC时, PVC的状态为Pending 。
- 建议每次最多批量创建/删除100个PVC。
表 2 配置静态持久卷PVC参数说明
以Kubernetes v1.22.1为例,支持数字、小写字母、中划线(-)和点(.)的组合,并且必须以字母数字开头和结尾。 | ||||
|
| |||
可选, 支持Filesystem或Block, 默认为Filesystem。该参数在创建Pod时生效,其中Filesystem表示在PVC上创建一个文件系统访问存储, Block表示使用裸卷的方式访问存储。 | ||||
PVC容量的规格取决于存储规格限制和主机规格限制。以OceanStor Dorado 6.1.2/OceanStor Pacific系列 8.1.0对接CentOS 7为例,当使用的是ext4文件系统时,容量限制见表2;当使用的是XFS文件系统时,容量限制见表3。如果使用的是NFS或者裸设备,容量需满足使用的华为存储设备型号和版本所要求的规格约束。 如果PVC容量不在规格范围内,可能会由于存储规格限制或主机文件系统规格限制导致创建PVC或Pod失败。 在通过静态PV创建PVC时,若PVC容量小于绑定PV容量,最终PVC容量大小为绑定PV容量,若PVC容量大于绑定PV容量,PVC将无法被创建。 | ||||
使用PVC
与动态卷供应 使用PVC 方式相同。