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

Uso de um disco EVS por meio de um PV dinâmico

O CCE permite que você especifique uma StorageClass para criar automaticamente um disco EVS e o PV correspondente. Essa função é aplicável quando nenhum volume de armazenamento subjacente está disponível.

Pré-requisitos

Restrições

  • Os discos EVS não podem ser conectados em AZs e não podem ser usados por várias cargas de trabalho, vários pods da mesma carga de trabalho ou várias tarefas. O compartilhamento de dados de um disco compartilhado não é suportado entre nós em um cluster do CCE. Se um disco EVS for atacado a vários nós, podem ocorrer conflitos de I/O e conflitos de cache de dados. Portanto, crie apenas um pod ao criar uma Implementação que use discos EVS.
  • Para clusters anteriores à v1.19.10, se uma política HPA for usada para expandir uma carga de trabalho com discos EVS anexados, os pods existentes não poderão ser lidos ou gravados quando um novo pod for agendado para outro nó.

    Para clusters de v1.19.10 e posterior, se uma política HPA for usada para expandir uma carga de trabalho com discos EVS anexados, um novo pod não poderá ser iniciado porque os discos EVS não podem ser anexados.

  • As tags de recurso podem ser adicionadas quando os discos EVS são criados dinamicamente. Depois que os discos EVS são criados, as tags de recurso não podem ser atualizadas no CCE. Para atualizá-los, acesse o console do EVS. Se você usar um disco EVS existente para criar um PV, também precisará adicionar ou atualizar tags de recursos no console do EVS.

(Console) Criar automaticamente um disco EVS

  1. Efetue logon no console do CCE e clique no nome do cluster para acessar o console do cluster.
  2. Crie dinamicamente uma PVC e um PV.

    1. Escolha Storage no painel de navegação e clique na guia PersistentVolumeClaims (PVCs). Clique em Create PVC no canto superior direito. Na caixa de diálogo exibida, configure os parâmetros de PVC.

      Parâmetro

      Descrição

      PVC Type

      Neste exemplo, selecione EVS.

      PVC Name

      Digite o nome da PVC, que deve ser exclusivo no mesmo namespace.

      Creation Method

      • Se nenhum armazenamento subjacente estiver disponível, selecione Dynamically provision para criar uma PVC, um PV e armazenamento subjacente no console no modo de cascata.
      • Se o armazenamento subjacente estiver disponível, crie um PV ou use um PV existente para criar estaticamente uma PVC com base na disponibilidade de um PV. Para mais detalhes, consulte Uso de um disco EVS existente através de um PV estático.

      Neste exemplo, selecione Dynamically provision.

      Storage Classes

      A classe de armazenamento para discos EVS é csi-disk.

      AZ

      Selecione a AZ do disco EVS. A AZ deve ser a mesma do nó do cluster.

      NOTA:

      Um disco EVS só pode ser montado em um nó na mesma AZ. Depois que um disco EVS é criado, sua AZ não pode ser alterada.

      Disk Type

      Selecione um tipo de disco EVS.

      Access Mode

      Discos EVS suportam apenas ReadWriteOnce indicando que um volume de armazenamento pode ser montado em um nó no modo leitura/gravação. Para mais detalhes, consulte Modos de acesso a volume.

      Capacity (GiB)

      Capacidade do volume de armazenamento solicitado.

      Encryption

      Você pode selecionar Encryption e uma chave de criptografia para criptografar o armazenamento subjacente. Antes de usar a função de criptografia, verifique se a região onde o disco EVS está localizado suporta criptografia de disco.

      Enterprise Project

      Projetos empresariais suportados: padrão, aquele ao qual o cluster pertence ou aquele especificado pela classe de armazenamento.

      Resource Tag

      Você pode adicionar tags de recurso para classificar recursos, que é suportado apenas quando a versão de everest no cluster é 2.1.39 ou posterior.

      Você pode criar tags predefinidas no console do TMS. As tags predefinidas estão disponíveis para todos os recursos que suportam tags. Você pode usar tags predefinidas para melhorar a criação de tags e a eficiência da migração de recursos. Para obter detalhes, consulte Criação de tags predefinidas.

      O CCE cria automaticamente as tags de sistema CCE-Cluster-ID={Cluster ID}, CCE-Cluster-Name={Cluster name} e CCE-Namespace={Namespace name}. Essas tags não podem ser modificadas.

      NOTA:

      Depois que um PV dinâmico do tipo do EVS é criado, as tags de recurso não podem ser atualizadas no console do CCE. Para atualizar essas tags de recurso, acesse o console do EVS.

    2. Clique em Create.

      Você pode escolher Storage no painel de navegação e exibir a PVC e o PV criados nas páginas de guia PersistentVolumeClaims (PVCs) e PersistentVolumes (PVs), respectivamente.

  3. Crie uma aplicação.

    1. No painel de navegação à esquerda, clique em Workloads. No painel direito, clique na guia StatefulSets.
    2. Clique em Create Workload no canto superior direito. Na página exibida, clique em Data Storage na área Container Settings e clique em Add Volume para selecionar PVC.
      Monte e use volumes de armazenamento, conforme mostrado na Tabela 1. Para obter detalhes sobre outros parâmetros, consulte Cargas de trabalho.
      Tabela 1 Montagem de um volume de armazenamento

      Parâmetro

      Descrição

      PVC

      Selecione um volume do EVS existente.

      Um volume do EVS não pode ser montado repetidamente em várias cargas de trabalho.

      Mount Path

      Digite um caminho de montagem, por exemplo, /tmp.

      Este parâmetro indica o caminho do contêiner no qual um volume de dados será montado. Não monte o volume em um diretório do sistema como / ou /var/run. Caso contrário, os contêineres estarão com defeito. Monte o volume em um diretório vazio. Se o diretório não estiver vazio, verifique se não há arquivos que afetem a inicialização do contêiner. Caso contrário, os arquivos serão substituídos, causando falhas de inicialização do contêiner ou falhas de criação de carga de trabalho.
      AVISO:

      Se um volume for montado em um diretório de alto risco, use uma conta com permissões mínimas para iniciar o contêiner. Caso contrário, os arquivos de alto risco na máquina host podem ser danificados.

      Subpath

      Digite um subcaminho, por exemplo, tmp, indicando que os dados no caminho de montagem do contêiner serão armazenados na pasta tmp do volume.

      Um subcaminho é usado para montar um volume local para que o mesmo volume de dados seja usado em um único pod. Se este parâmetro for deixado em branco, o caminho raiz é usado por padrão.

      Permission

      • Read-only: você só pode ler os dados nos volumes montados.
      • Read/Write: você pode modificar os volumes de dados montados no caminho. Os dados recém-gravados não serão migrados se o contêiner for migrado, o que pode causar perda de dados.

      Neste exemplo, o disco é montado no caminho /data do contêiner. Os dados de contêiner gerados nesse caminho são armazenados no disco EVS.

      Um disco EVS não compartilhado não pode ser conectado a vários pods em uma carga de trabalho. Caso contrário, os pods não poderão ser iniciados corretamente. Certifique-se de que o número de pods de carga de trabalho seja 1 ao anexar um disco EVS.

    3. Após a configuração, clique em Create Workload.

      Depois que a carga de trabalho for criada, os dados no diretório de montagem do contêiner serão armazenados persistentemente. Verifique o armazenamento referindo-se a Verificar a persistência dos dados.

(kubectl) Criação automática de um disco EVS

  1. Use o kubectl para se conectar ao cluster.
  2. Use StorageClass para criar dinamicamente uma PVC e um PV.

    1. Crie o arquivo pvc-evs-auto.yaml.
      apiVersion: v1
      kind: PersistentVolumeClaim
      metadata:
        name: pvc-evs-auto
        namespace: default
        annotations:
            everest.io/disk-volume-type: SAS    # EVS disk type.
          everest.io/crypt-key-id: <your_key_id>    # (Optional) Encryption key ID. Mandatory for an encrypted disk.
      
          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.
      
        labels:
          failure-domain.beta.kubernetes.io/region: <your_region>   # Region of the node where the application is to be deployed.
          failure-domain.beta.kubernetes.io/zone: <your_zone>       # AZ of the node where the application is to be deployed.
      spec:
        accessModes:
        - ReadWriteOnce               # The value must be ReadWriteOnce for EVS disks.
        resources:
          requests:
            storage: 10Gi             # EVS disk capacity, ranging from 1 to 32768.
        storageClassName: csi-disk    # Storage class type for EVS disks.
      Tabela 2 Parâmetros principais

      Parâmetro

      Obrigatório

      Descrição

      failure-domain.beta.kubernetes.io/region

      Sim

      Região onde o cluster está localizado.

      Para obter detalhes sobre o valor da region, consulte Regiões e pontos de extremidade.

      failure-domain.beta.kubernetes.io/zone

      Sim

      AZ onde o volume do EVS é criado. Deve ser a mesma que a AZ planejada para a carga de trabalho.

      Para obter detalhes sobre o valor da zone, consulte Regiões e pontos de extremidade.

      everest.io/disk-volume-type

      Sim

      Tipos de disco EVS. Todas as letras estão em maiúsculas.
      • SAS: I/O alta
      • SSD: I/O ultra-alta
      • GPSSD: SSD de uso geral
      • ESSD: SSD extremo

      everest.io/crypt-key-id

      Não

      Este parâmetro é obrigatório quando um disco EVS é criptografado. Insira o ID da chave de criptografia selecionada durante a criação do disco EVS. Você pode usar uma chave personalizada ou a chave padrão chamada evs/default.

      Para obter um ID da chave, faça logon no console do DEW, localize a chave a ser criptografada e copie o ID da chave.

      everest.io/enterprise-project-id

      Não

      Opcional.

      ID do projeto empresarial do disco EVS. Se um projeto empresarial for especificado, use o mesmo projeto empresarial ao criar uma PVC. Caso contrário, a PVC não pode ser vinculada a um PV.

      Para obter um ID de projeto empresarial, efetue logon no console do EPS, clique no nome do projeto empresarial de destino e copie o ID do projeto empresarial.

        

      Sim

      Capacidade de PVC solicitada, em Gi. O valor varia de 1 a 32768.

      storageClassName

      Sim

      O nome da classe de armazenamento dos volumes do EVS é csi-disk.

    2. Execute o seguinte comando para criar uma PVC:
      kubectl apply -f pvc-evs-auto.yaml

  3. Crie uma aplicação.

    1. Crie um arquivo chamado web-evs-auto.yaml. Neste exemplo, o volume do EVS é montado no caminho /data.
      apiVersion: apps/v1
      kind: StatefulSet
      metadata:
        name: web-evs-auto
        namespace: default
      spec:
        replicas: 1
        selector:
          matchLabels:
            app: web-evs-auto
        serviceName: web-evs-auto   # Headless Service name.
        template:
          metadata:
            labels:
              app: web-evs-auto
          spec:
            containers:
            - name: container-1
              image: nginx:latest
              volumeMounts:
              - name: pvc-disk    # Volume name, which must be the same as the volume name in the volumes field.
                mountPath: /data  # Location where the storage volume is mounted.
            imagePullSecrets:
              - name: default-secret
            volumes:
              - name: pvc-disk    # Volume name, which can be customized.
                persistentVolumeClaim:
                  claimName: pvc-evs-auto    # Name of the created PVC.
      ---
      apiVersion: v1
      kind: Service
      metadata:
        name: web-evs-auto   # Headless Service name.
        namespace: default
        labels:
          app: web-evs-auto
      spec:
        selector:
          app: web-evs-auto
        clusterIP: None
        ports:
          - name: web-evs-auto
            targetPort: 80
            nodePort: 0
            port: 80
            protocol: TCP
        type: ClusterIP
    2. Execute o seguinte comando para criar uma carga de trabalho na qual o volume do EVS está montado:
      kubectl apply -f web-evs-auto.yaml

      Depois que a carga de trabalho for criada, os dados no diretório de montagem do contêiner serão armazenados persistentemente. Verifique o armazenamento referindo-se a Verificar a persistência dos dados.

Verificar a persistência dos dados

  1. Visualize a aplicação implementado e os arquivos de volume do EVS.

    1. Execute o seguinte comando para exibir o pod criado:
      kubectl get pod | grep web-evs-auto
      Saída esperada:
      web-evs-auto-0                  1/1     Running   0               38s
    2. Execute o seguinte comando para verificar se o volume do EVS foi montado no caminho /data:
      kubectl exec web-evs-auto-0 -- df | grep data

      Saída esperada:

      /dev/sdc              10255636     36888  10202364   0% /data
    3. Execute o seguinte comando para exibir os arquivos no caminho /data:
      kubectl exec web-evs-auto-0 -- ls /data

      Saída esperada:

      lost+found

  2. Execute o seguinte comando para criar um arquivo chamado static no caminho /data:

    kubectl exec web-evs-auto-0 --  touch /data/static

  3. Execute o seguinte comando para exibir os arquivos no caminho /data:

    kubectl exec web-evs-auto-0 -- ls /data

    Saída esperada:

    lost+found
    static

  4. Execute o seguinte comando para excluir o pod chamado web-evs-auto-0:

    kubectl delete pod web-evs-auto-0

    Saída esperada:

    pod "web-evs-auto-0" deleted

  5. Após a exclusão, o controlador de StatefulSet cria automaticamente uma réplica com o mesmo nome. Execute o seguinte comando para verificar se os arquivos no caminho /data foram modificados:

    kubectl exec web-evs-auto-0 -- ls /data

    Saída esperada:

    lost+found
    static

    Se o arquivo static ainda existir, os dados no volume de EVS podem ser armazenados persistentemente.

Operações relacionadas

Você também pode executar as operações listadas em Tabela 3.
Tabela 3 Operações relacionadas

Operação

Descrição

Procedimento

Expandir a capacidade de um disco EVS

Expanda rapidamente a capacidade de um disco EVS montado no console do CCE.

Somente a capacidade de discos EVS de pagamento por uso pode ser expandida no console do CCE. Para expandir a capacidade de discos EVS anuais/mensais, clique no nome do volume para ir para o console do EVS.

  1. Escolha Storage no painel de navegação e clique na guia PersistentVolumeClaims (PVCs). Clique em More na coluna Operation da PVC de destino e selecione Scale-out.
  2. Insira a capacidade a ser adicionada e clique em OK.

Visualizar eventos

Você pode visualizar nomes de eventos, tipos de eventos, número de ocorrências, eventos do Kubernetes, horário da primeira ocorrência e horário da última ocorrência da PVC ou PV.

  1. Escolha Storage no painel de navegação e clique na guia PersistentVolumeClaims (PVCs) ou PersistentVolumes (PVs).
  2. Clique em View Events na coluna Operation da PVC ou do PV de destino para exibir os eventos gerados em uma hora (os dados do evento são mantidos por uma hora).

Exibir um arquivo YAML

Você pode visualizar, copiar e fazer download dos arquivos YAML de uma PVC ou um PV.

  1. Escolha Storage no painel de navegação e clique na guia PersistentVolumeClaims (PVCs) ou PersistentVolumes (PVs).
  2. Clique em View YAML na coluna Operation da PVC ou PV de destino para exibir ou fazer download do YAML.