设置文件存储挂载参数
本章节主要介绍如何设置文件存储的挂载参数。您可以在PV中设置挂载参数,然后通过PVC绑定PV,也可以在StorageClass中设置挂载参数,然后使用StorageClass创建PVC,动态创建出的PV会默认带有StorageClass中设置的挂载参数。
前提条件
everest插件版本要求1.2.8及以上版本。插件主要负责将挂载参数识别并传递给底层存储,指定参数有否有效依赖于底层存储是否支持。
文件存储挂载参数
CCE的存储插件everest在挂载文件存储时默认设置了如表1所示的参数。
参数 |
参数值 |
描述 |
---|---|---|
keep-original-ownership |
无需填写 |
表示是否保留文件挂载点的ownership,使用该参数时,要求everest插件版本为1.2.63或2.1.2以上。
|
vers |
3 |
文件系统版本,目前只支持NFSv3。取值:3 |
nolock |
无需填写 |
选择是否使用NLM协议在服务器上锁文件。当选择nolock选项时,锁对于同一主机的应用有效,对不同主机不受锁的影响。 |
timeo |
600 |
NFS客户端重传请求前的等待时间(单位为0.1秒)。建议值:600。 |
hard/soft |
无需填写 |
挂载方式类型。
默认为hard。 |
在PV中设置挂载参数
在PV中设置挂载参数可以通过mountOptions字段实现,如下所示,mountOptions支持挂载的字段请参见文件存储挂载参数。
- 使用kubectl连接集群,详情请参见通过kubectl连接集群。
- 在PV中设置挂载参数,示例如下:
apiVersion: v1 kind: PersistentVolume metadata: annotations: pv.kubernetes.io/provisioned-by: everest-csi-provisioner everest.io/reclaim-policy: retain-volume-only # 可选字段,删除PV,保留底层存储卷 name: pv-sfs spec: accessModes: - ReadWriteMany # 访问模式,文件存储必须为ReadWriteMany capacity: storage: 1Gi # 文件存储容量大小 csi: driver: nas.csi.everest.io # 挂载依赖的存储驱动 fsType: nfs volumeHandle: <your_volume_id> # SFS容量型文件存储的ID volumeAttributes: everest.io/share-export-location: <your_location> # 文件存储的共享路径 storage.kubernetes.io/csiProvisionerIdentity: everest-csi-provisioner persistentVolumeReclaimPolicy: Retain # 回收策略 storageClassName: csi-nas # 存储类名称 mountOptions: # 挂载参数 - vers=3 - nolock - timeo=600 - hard
- PV创建后,可以创建PVC关联PV,然后在工作负载的容器中挂载,具体操作步骤请参见通过静态存储卷使用已有文件存储。
- 验证挂载参数是否生效。
本例中将PVC挂载至使用nginx:latest镜像的工作负载,并通过mount -l命令查看挂载参数是否生效。
- 查看已挂载文件存储的Pod,本文中的示例工作负载名称为web-sfs。
kubectl get pod | grep web-sfs
回显如下:
web-sfs-*** 1/1 Running 0 23m
- 执行以下命令查看挂载参数,其中web-sfs-***为示例Pod。
kubectl exec -it web-sfs-*** -- mount -l | grep nfs
若回显中的挂载信息与设置的挂载参数一致,说明挂载参数设置成功。
<您的共享路径> on /data type nfs (rw,relatime,vers=3,rsize=1048576,wsize=1048576,namlen=255,hard,nolock,noresvport,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=**.**.**.**,mountvers=3,mountport=2050,mountproto=tcp,local_lock=all,addr=**.**.**.**)
- 查看已挂载文件存储的Pod,本文中的示例工作负载名称为web-sfs。
在StorageClass中设置挂载参数
在StorageClass中设置挂载参数同样可以通过mountOptions字段实现,如下所示,mountOptions支持挂载的字段请参见文件存储挂载参数。
- 使用kubectl连接集群,详情请参见通过kubectl连接集群。
- 创建自定义的StorageClass,示例如下:
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: csi-sfs-mount-option provisioner: everest-csi-provisioner parameters: csi.storage.k8s.io/csi-driver-name: nas.csi.everest.io csi.storage.k8s.io/fstype: nfs everest.io/share-access-to: <your_vpc_id> # 集群所在VPC的ID reclaimPolicy: Delete volumeBindingMode: Immediate mountOptions: # 挂载参数 - vers=3 - nolock - timeo=600 - hard
- StorageClass设置好后,就可以使用这个StorageClass创建PVC,动态创建出的PV会默认带有StorageClass中设置的挂载参数,具体操作步骤请参见通过动态存储卷使用文件存储。
- 验证挂载参数是否生效。
本例中将PVC挂载至使用nginx:latest镜像的工作负载,并通过mount -l命令查看挂载参数是否生效。
- 查看已挂载文件存储的Pod,本文中的示例工作负载名称为web-sfs。
kubectl get pod | grep web-sfs
回显如下:
web-sfs-*** 1/1 Running 0 23m
- 执行以下命令查看挂载参数,其中web-sfs-***为示例Pod。
kubectl exec -it web-sfs-*** -- mount -l | grep nfs
若回显中的挂载信息与设置的挂载参数一致,说明挂载参数设置成功。
<您的共享路径> on /data type nfs (rw,relatime,vers=3,rsize=1048576,wsize=1048576,namlen=255,hard,nolock,noresvport,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=**.**.**.**,mountvers=3,mountport=2050,mountproto=tcp,local_lock=all,addr=**.**.**.**)
- 查看已挂载文件存储的Pod,本文中的示例工作负载名称为web-sfs。