更新时间:2022-05-19 GMT+08:00
分享

设置挂载参数

背景信息

容器使用云存储的时候是将云存储挂载到容器上,挂载完成后就可以像使用本地目录一样使用云存储。

本章节主要介绍在挂载云存储的时候如何设置挂载参数,包括文件系统存储卷和对象存储卷的挂载参数设置。您可以在PV中设置挂载参数,然后通过PVC绑定PV;也可以在StorageClass中设置挂载参数,然后使用StorageClass创建PVC,从而动态创建出的PV会默认带有StorageClass中设置挂载参数。

前提条件

  • Everest插件版本要求1.2.8及以上版本。
  • 插件主要负责将挂载参数识别并传递给底层存储,指定参数有否有效依赖于底层存储是否支持。

文件存储挂载参数

CCE的存储插件Everest在挂载文件存储时默认设置了如表1所示的参数。除了这些参数外,您还可以设置其他的文件存储挂载参数,具体请参见挂载NFS文件系统到云服务器(Linux)

表1 文件存储默认挂载参数

参数

描述

vers=3

文件系统版本,目前只支持NFSv3。取值:3

nolock

选择是否使用NLM协议在服务器上锁文件。当选择nolock选项时,锁对于同一主机的应用有效,对不同主机不受锁的影响。

timeo=600

NFS客户端重传请求前的等待时间(单位为0.1秒)。建议值:600。

hard/soft

挂载方式类型。

  • 取值为hard,即使用硬连接方式,若NFS请求超时,则客户端一直重新请求直至成功。
  • 取值为soft,即软挂载方式挂载系统,若NFS请求超时,则客户端向调用程序返回错误。

默认为hard。

对象存储挂载参数

CCE的存储插件Everest在挂载文件存储时默认设置了表2表3的参数,其中表2中的参数不可取消。除了这些参数外,您还可以设置其他的对象存储挂载参数,具体请参见挂载并行文件系统

表2 默认使用且不可取消的挂载参数

参数

描述

use_ino

使用该选项,由obsfs分配inode编号。读写模式下自动开启。

big_writes

配置后可更改写缓存最大值大小

nonempty

允许挂载目录非空

allow_other

允许其他用户访问并行文件系统

no_check_certificate

不校验服务端证书

enable_noobj_cache

为不存在的对象启用缓存条目,可提高性能。对象桶读写模式下自动使用

sigv2

签名版本。对象桶自动使用。

表3 默认使用且可取消的挂载参数

参数

描述

max_write=131072

使用该选项,由obsfs分配inode编号。读写模式下自动开启。

ssl_verify_hostname=0

不根据主机名验证SSL证书。

max_background=100

可配置后台最大等待请求数。并行文件系统自动使用。

public_bucket=1

设置为1时匿名挂载公共桶。对象桶读写模式下自动使用。

对象存储卷挂载时使用的所有参数,可以登录到运行挂载对象存储卷的Pod所在节点上通过进程详情观察:

  • 对象桶:ps -ef | grep s3fs
    root     22142     1  0 Jun03 ?        00:00:00 /usr/bin/s3fs pvc-82fe2cbe-3838-43a2-8afb-f994e402fb9d /mnt/paas/kubernetes/kubelet/pods/0b13ff68-4c8e-4a1c-b15c-724fd4d64389/volumes/kubernetes.io~csi/pvc-82fe2cbe-3838-43a2-8afb-f994e402fb9d/mount -o url=https://{{endpoint}}:443 -o endpoint=xxxxxx -o passwd_file=/opt/everest-host-connector/1622707954357702943_obstmpcred/pvc-82fe2cbe-3838-43a2-8afb-f994e402fb9d -o nonempty -o big_writes -o enable_noobj_cache -o sigv2 -o allow_other -o no_check_certificate -o ssl_verify_hostname=0 -o max_write=131072 -o multipart_size=20 -o umask=0
  • 并行文件系统:ps -ef | grep obsfs
    root      1355     1  0 Jun03 ?        00:03:16 /usr/bin/obsfs pvc-86720bb9-5aa8-4cde-9231-5253994f8468 /mnt/paas/kubernetes/kubelet/pods/c959a91d-eced-4b41-91c6-96cbd65324f9/volumes/kubernetes.io~csi/pvc-86720bb9-5aa8-4cde-9231-5253994f8468/mount -o url=https://{{endpoint}}:443 -o endpoint=xxxxxx -o passwd_file=/opt/everest-host-connector/1622714415305160399_obstmpcred/pvc-86720bb9-5aa8-4cde-9231-5253994f8468 -o allow_other -o nonempty -o big_writes -o use_ino -o no_check_certificate -o ssl_verify_hostname=0 -o umask=0027 -o max_write=131072 -o max_background=100 -o uid=10000 -o gid=10000

约束与限制

挂载参数暂不支持安全容器。

在PV中设置挂载参数

在PV中设置挂载参数可以通过mountOptions字段实现,如下所示,mountOptions支持挂载的字段请参见文件存储挂载参数对象存储挂载参数

apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv-obs-example
  annotations:
    pv.kubernetes.io/provisioned-by: everest-csi-provisioner
spec:
  mountOptions:
  - umask=0027
  - uid=10000
  - gid=10000
  accessModes:
  - ReadWriteMany
  capacity:
    storage: 1Gi
  claimRef:
    apiVersion: v1
    kind: PersistentVolumeClaim
    name: pvc-obs-example
    namespace: default
  csi:
    driver: obs.csi.everest.io
    fsType: obsfs
    volumeAttributes:
      everest.io/obs-volume-type: STANDARD
      everest.io/region: cn-north-4
      storage.kubernetes.io/csiProvisionerIdentity: everest-csi-provisioner
    volumeHandle: obs-normal-static-pv
  persistentVolumeReclaimPolicy: Delete
  storageClassName: csi-obs

PV创建后,可以创建PVC关联PV,然后在工作负载的容器中挂载。

在StorageClass中设置挂载参数

在StorageClass中设置挂载参数同样可以通过mountOptions字段实现,如下所示,mountOptions支持挂载的字段请参见文件存储挂载参数对象存储挂载参数

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: csi-obs-mount-option
mountOptions:
- umask=0027
- uid=10000
- gid=10000
parameters:
  csi.storage.k8s.io/csi-driver-name: obs.csi.everest.io
  csi.storage.k8s.io/fstype: s3fs
  everest.io/obs-volume-type: STANDARD
provisioner: everest-csi-provisioner
reclaimPolicy: Delete
volumeBindingMode: Immediate

StorageClass设置好后,就可以使用这个StorageClass创建PVC,从而动态创建出的PV会默认带有StorageClass中设置挂载参数。

分享:

    相关文档

    相关产品

close