Este conteúdo foi traduzido por máquina para sua conveniência e a Huawei Cloud não pode garantir que o conteúdo foi traduzido com precisão. Para exibir o conteúdo original, use o link no canto superior direito para mudar para a página em inglês.
Atualizado em 2024-11-28 GMT+08:00

Configuração das opções de montagem do OBS

Esta seção descreve como configurar as opções de montagem de volume do OBS. Você pode configurar opções de montagem em um PV e vincular o PV a uma PVC. Como alternativa, configure as opções de montagem em uma StorageClass e use a StorageClass para criar uma PVC. Dessa forma, os PVs podem ser criados dinamicamente e herdar opções de montagem configuradas na StorageClass por padrão.

Pré-requisitos

A versão do complemento Armazenamento do contêiner do CCE (Everest) deve ser 1.2.8 ou posterior. Esse complemento identifica as opções de montagem e as transfere para os recursos de armazenamento subjacentes. As configurações de parâmetros terão efeito somente se os recursos de armazenamento subjacentes suportarem as opções especificadas.

Restrições

As opções de montagem não podem ser configuradas para contêineres do Kata.

Opções de montagem do OBS

Ao montar um volume do OBS, o complemento everest pré-ajusta as opções descritas em Tabela 1 e Tabela 2 por padrão. As opções em Tabela 1 são obrigatórias. Você pode definir outras opções de montagem, se necessário. Para obter detalhes, consulte Montagem de um sistema de arquivos paralelo.

Tabela 1 Opções de montagem obrigatórias configuradas por padrão

Parâmetro

Valor

Descrição

use_ino

Deixe em branco.

Se ativado, obsfs aloca o número do inode. Ativado por padrão no modo de leitura/gravação.

big_writes

Deixe em branco.

Se configurado, o tamanho máximo do cache pode ser modificado.

nonempty

Deixe em branco.

Permite caminhos de montagem não vazios.

allow_other

Deixe em branco.

Permite que outros usuários acessem o sistema de arquivos paralelo.

no_check_certificate

Deixe em branco.

Desativa a verificação do certificado do servidor.

enable_noobj_cache

Deixe em branco.

Ativa entradas de cache para objetos que não existem, o que pode melhorar o desempenho. Ativado por padrão no modo de leitura/gravação do intervalo de objetos.

Esta opção não está mais configurada por padrão desde o everest 1.2.40.

sigv2

Deixe em branco.

Especifica a versão de assinatura. Usado por padrão em buckets de objetos.

Tabela 2 Opções de montagem opcionais configuradas por padrão

Parâmetro

Valor

Descrição

max_write

131072

Este parâmetro é válido somente quando big_writes é configurado. O valor recomendado é de 128 KB.

ssl_verify_hostname

0

Desativa a verificação do certificado SSL com base no nome do host.

max_background

100

Permite definir o número máximo de solicitações em espera em segundo plano. Usado por padrão em sistemas de arquivos paralelos.

public_bucket

1

Se definido como 1, os buckets públicos são montados anonimamente. Ativado por padrão no modo de leitura/gravação do intervalo de objetos.

umask

Deixe em branco.

Máscara da permissão do arquivo de configuração.

Configurar opções de montagem em um PV

Você pode usar o campo mountOptions para configurar opções de montagem em um PV. As opções que você pode configurar em mountOptions estão listadas em Opções de montagem do OBS.

  1. Use o kubectl para se conectar ao cluster. Para mais detalhes, consulte Conexão a um cluster usando o kubectl.
  2. Configurar opções de montagem em um PV. Exemplo:

    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, 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. Depois que um PV é criado, você pode criar uma PVC e vinculá-la ao PV e, em seguida, montar o PV ao contêiner na carga de trabalho. Para mais detalhes, consulte Uso de um bucket do OBS existente através de um PV estático.
  4. Verifique se as opções de montagem têm efeito.

    Neste exemplo, a PVC é montada na carga de trabalho que usa a imagem nginx:latest. Você pode fazer logon no nó onde reside o pod no qual o volume do OBS é montado e exibir os detalhes do andamento.

    Execute o seguinte comando:
    • Bucket do objeto: 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 arquivos 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

Configurar opções de montagem em uma StorageClass

Você pode usar o campo mountOptions para configurar opções de montagem em uma StorageClass. As opções que você pode configurar em mountOptions estão listadas em Opções de montagem do OBS.

  1. Use o kubectl para se conectar ao cluster. Para mais detalhes, consulte Conexão a um cluster usando o kubectl.
  2. Crie uma StorageClass personalizada. Exemplo:

    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. Depois que a StorageClass é configurada, você pode usá-la para criar uma PVC. Por padrão, os PVs criados dinamicamente herdam as opções de montagem configuradas no StorageClass. Para mais detalhes, consulte Uso de um bucket do OBS através de um PV dinâmico.
  4. Verifique se as opções de montagem têm efeito.

    Neste exemplo, a PVC é montada na carga de trabalho que usa a imagem nginx:latest. Você pode fazer logon no nó onde reside o pod no qual o volume do OBS é montado e exibir os detalhes do andamento.

    Execute o seguinte comando:
    • Bucket do objeto: 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 arquivos 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