Estos contenidos se han traducido de forma automática para su comodidad, pero Huawei Cloud no garantiza la exactitud de estos. Para consultar los contenidos originales, acceda a la versión en inglés.
Actualización más reciente 2024-09-10 GMT+08:00

Configuración de opciones de montaje de OBS

Esta sección describe cómo configurar las opciones de montaje de volumen de OBS. Puede configurar las opciones de montaje en un PV y vincularlo a un PVC. Alternativamente, configure las opciones de montaje en un StorageClass y use el StorageClass para crear un PVC. De esta manera, los PV se pueden crear dinámicamente y heredar opciones de montaje configuradas en el StorageClass de forma predeterminada.

Requisitos previos

La versión del complemento más antiguo debe ser 1.2.8 o posterior. El complemento identifica las opciones de montaje y las transfiere a los recursos de almacenamiento subyacentes, que determinan si las opciones especificadas son válidas.

Restricciones

Las opciones de montaje no se pueden configurar para el contenedor de Kata.

Opciones de montaje de OBS

Al montar un volumen de OBS, el complemento siempre preestablece las opciones descritas en Tabla 1 y Tabla 2 de forma predeterminada. Las opciones de Tabla 1 son obligatorias. Puede configurar otras opciones de montaje si es necesario. Para obtener más información, consulte Montaje de un sistema de archivos paralelo.

Tabla 1 Opciones de montaje obligatorias configuradas por defecto

Parámetro

Descripción

use_ino

Si está habilitado, obsfs asigna el número inode. Habilitado por defecto en el modo de lectura/escritura.

big_writes

Si se configura, se puede modificar el tamaño máximo de la caché.

nonempty

Permite rutas de montaje no vacías.

allow_other

Permite a otros usuarios acceder al sistema de archivos paralelo.

no_check_certificate

Deshabilita la verificación de certificados del servidor.

enable_noobj_cache

Habilita las entradas de caché para objetos que no existen, lo que puede mejorar el rendimiento. Habilitado por defecto en el modo de lectura/escritura del bucket de objetos.

Esta opción ya no está establecida de forma predeterminada desde everest 1.2.40.

sigv2

Especifica la versión de firma. Se utiliza de forma predeterminada en bucket de objetos.

Tabla 2 Opciones de montaje opcionales configuradas por defecto

Parámetro

Descripción

max_write=131072

Este parámetro solo es válido cuando big_writes está configurado. El valor recomendado es 128 KB.

ssl_verify_hostname=0

Deshabilita la verificación del certificado SSL basada en el nombre del host.

max_background=100

Permite establecer el número máximo de solicitudes de espera en segundo plano. Se utiliza de forma predeterminada en sistemas de archivos paralelos.

public_bucket=1

Si se establece en 1, los bucket públicos se montan de forma anónima. Habilitado por defecto en el modo de lectura/escritura del bucket de objetos.

umask

Máscara del permiso del archivo de configuración.

Configuración de opciones de montaje en un PV

Puede utilizar el campo mountOptions para configurar las opciones de montaje en un PV. Las opciones que puede configurar en mountOptions se enumeran en Opciones de montaje de OBS.

  1. Utilice kubectl para conectarse al clúster. Para obtener más información, véase Conexión a un clúster con kubectl.
  2. Configure las opciones de montaje en un PV. Por ejemplo:

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      annotations:
        pv.kubernetes.io/provisioned-by: everest-csi-provisioner
        everest.io/reclaim-policy: retain-volume-only      # (Optional) The PV is deleted while the underlying volume is retained.
      name: pv-obs       # PV name.
    spec:
      accessModes:
      - ReadWriteMany    # Access mode. The value must be ReadWriteMany for OBS.
      capacity:
        storage: 1Gi     # OBS volume capacity.
      csi:
        driver: obs.csi.everest.io        # Dependent storage driver for the mounting.
        fsType: obsfs                     # Instance type.
        volumeHandle: <your_volume_id>    # Name of the OBS volume.
        volumeAttributes:
          storage.kubernetes.io/csiProvisionerIdentity: everest-csi-provisioner
          everest.io/obs-volume-type: STANDARD
          everest.io/region: <your_region>                        # Region where the OBS volume is.
          everest.io/enterprise-project-id: <your_project_id>     # (Optional) Enterprise project ID. If an enterprise project is specified, you need to use the same enterprise project when creating a PVC. Otherwise, the PVC cannot be bound to a PV.
        nodePublishSecretRef:            # Custom secret of the OBS volume.
          name: <your_secret_name>       # Custom secret name.
          namespace: <your_namespace>    # Namespace of the custom secret.
      persistentVolumeReclaimPolicy: Retain    # Reclaim policy.
      storageClassName: csi-obs               # Storage class name.
      mountOptions:                            # Mount options.
      - umask=0027

  3. Después de crear un PV, puede crear un PVC y vincularlo al PV y, a continuación, montar el PV en el contenedor en la carga de trabajo. Para obtener más información, véase Uso de un bucket de OBS existente con un PV estático.
  4. Compruebe si las opciones de montaje tienen efecto.

    En este ejemplo, el PVC se monta en la carga de trabajo que utiliza la imagen nginx:latest. Puede iniciar sesión en el nodo donde reside el pod en el que está montado el volumen OBS y ver los detalles de progreso.

    Ejecute el siguiente comando:
    • Bucket de objetos ps -ef | grep s3fs
      root     22142     1  0 Jun03 ?        00:00:00 /usr/bin/s3fs {your_obs_name} /mnt/paas/kubernetes/kubelet/pods/{pod_uid}/volumes/kubernetes.io~csi/{your_pv_name}/mount -o url=https://{endpoint}:443 -o endpoint={region} -o passwd_file=/opt/everest-host-connector/***_obstmpcred/{your_obs_name} -o nonempty -o big_writes -o sigv2 -o allow_other -o no_check_certificate -o ssl_verify_hostname=0 -o umask=0027 -o max_write=131072 -o multipart_size=20
    • Sistema de archivos paralelo ps -ef | grep obsfs
      root      1355     1  0 Jun03 ?        00:03:16 /usr/bin/obsfs {your_obs_name} /mnt/paas/kubernetes/kubelet/pods/{pod_uid}/volumes/kubernetes.io~csi/{your_pv_name}/mount -o url=https://{endpoint}:443 -o endpoint={region} -o passwd_file=/opt/everest-host-connector/***_obstmpcred/{your_obs_name} -o allow_other -o nonempty -o big_writes -o use_ino -o no_check_certificate -o ssl_verify_hostname=0 -o max_background=100 -o umask=0027 -o max_write=131072

Configuración de las opciones de montaje en un StorageClass

Puede utilizar el campo mountOptions para configurar las opciones de montaje en un StorageClass. Las opciones que puede configurar en mountOptions se enumeran en Opciones de montaje de OBS.

  1. Utilice kubectl para conectarse al clúster. Para obtener más información, véase Conexión a un clúster con kubectl.
  2. Cree un StorageClass personalizado. Por ejemplo:

    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:                            # Mount options.
    - umask=0027

  3. Una vez configurado el StorageClass, puede usarlo para crear un PVC. De forma predeterminada, los PV creados dinámicamente heredan las opciones de montaje configuradas en el StorageClass. Para obtener más información, véase Uso de un bucket de OBS con un PV dinámico.
  4. Compruebe si las opciones de montaje tienen efecto.

    En este ejemplo, el PVC se monta en la carga de trabajo que utiliza la imagen nginx:latest. Puede iniciar sesión en el nodo donde reside el pod en el que está montado el volumen OBS y ver los detalles de progreso.

    Ejecute el siguiente comando:
    • Bucket de objetos ps -ef | grep s3fs
      root     22142     1  0 Jun03 ?        00:00:00 /usr/bin/s3fs {your_obs_name} /mnt/paas/kubernetes/kubelet/pods/{pod_uid}/volumes/kubernetes.io~csi/{your_pv_name}/mount -o url=https://{endpoint}:443 -o endpoint={region} -o passwd_file=/opt/everest-host-connector/***_obstmpcred/{your_obs_name} -o nonempty -o big_writes -o sigv2 -o allow_other -o no_check_certificate -o ssl_verify_hostname=0 -o umask=0027 -o max_write=131072 -o multipart_size=20
    • Sistema de archivos paralelo ps -ef | grep obsfs
      root      1355     1  0 Jun03 ?        00:03:16 /usr/bin/obsfs {your_obs_name} /mnt/paas/kubernetes/kubelet/pods/{pod_uid}/volumes/kubernetes.io~csi/{your_pv_name}/mount -o url=https://{endpoint}:443 -o endpoint={region} -o passwd_file=/opt/everest-host-connector/***_obstmpcred/{your_obs_name} -o allow_other -o nonempty -o big_writes -o use_ino -o no_check_certificate -o ssl_verify_hostname=0 -o max_background=100 -o umask=0027 -o max_write=131072