更新时间:2024-12-18 GMT+08:00

设置对象存储挂载参数

本章节主要介绍如何设置对象存储的挂载参数。您可以在PV中设置挂载参数,然后通过PVC绑定PV,也可以在StorageClass中设置挂载参数,然后使用StorageClass创建PVC,动态创建出的PV会默认带有StorageClass中设置的挂载参数。

对象存储挂载参数

CCE Autopilot在挂载对象存储时默认设置了表1表2的参数,其中表1中的参数不可取消。

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

参数

参数值

描述

use_ino

无需填写

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

big_writes

无需填写

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

nonempty

无需填写

允许挂载目录非空

allow_other

无需填写

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

no_check_certificate

无需填写

不校验服务端证书

sigv2

无需填写

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

public_bucket

1

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

表2 默认使用且可修改的挂载参数

参数

参数值

描述

max_write

131072

仅配置big_writes的情况下才生效,推荐使用128KB。

ssl_verify_hostname

0

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

max_background

100

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

umask

0

配置文件权限的掩码。

例如,如果umask值为022,而目录最大权限为777,则设置umask后该目录权限为777 - 022 = 755,即rwxr-xr-x。

在PV中设置挂载参数

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

  1. 使用kubectl连接集群,详情请参见通过kubectl连接集群
  2. 在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-obs       # PV的名称
    spec:
      accessModes:
      - ReadWriteMany    # 访问模式,对象存储必须为ReadWriteMany
      capacity:
        storage: 1Gi     # 对象存储容量大小
      csi:
        driver: obs.csi.everest.io        # 挂载依赖的存储驱动
        fsType: obsfs                     # 实例类型
        volumeHandle: <your_volume_id>    # 对象存储的名称
        volumeAttributes:
          storage.kubernetes.io/csiProvisionerIdentity: everest-csi-provisioner
          everest.io/obs-volume-type: STANDARD
          everest.io/region: <your_region>                        # 对象存储的区域
          everest.io/enterprise-project-id: <your_project_id>     # 可选字段,企业项目ID,如果指定企业项目,则创建PVC时也需要指定相同的企业项目,否则PVC无法绑定PV。
        nodePublishSecretRef:            # 设置对象存储的自定义密钥
          name: <your_secret_name>       # 自定义密钥的名称
          namespace: <your_namespace>    # 自定义密钥的命名空间
      persistentVolumeReclaimPolicy: Retain    # 回收策略
      storageClassName: csi-obs               # 存储类名称
      mountOptions:                            # 挂载参数
      - umask=027

  3. PV创建后,可以创建PVC关联PV,然后在工作负载的容器中挂载,具体操作步骤请参见通过静态存储卷使用已有对象存储

在StorageClass中设置挂载参数

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

  1. 使用kubectl连接集群,详情请参见通过kubectl连接集群
  2. 创建自定义的StorageClass,示例如下:

    kind: StorageClass
    apiVersion: storage.k8s.io/v1
    metadata:
      name: csi-obs-mount-option
    provisioner: everest-csi-provisioner
    parameters:
      csi.storage.k8s.io/csi-driver-name: obs.csi.everest.io
      csi.storage.k8s.io/fstype: s3fs
      everest.io/obs-volume-type: STANDARD
    reclaimPolicy: Delete
    volumeBindingMode: Immediate
    mountOptions:                            # 挂载参数
    - umask=027

  3. StorageClass设置好后,就可以使用这个StorageClass创建PVC,动态创建出的PV会默认带有StorageClass中设置的挂载参数,具体操作步骤请参见通过静态存储卷使用已有对象存储