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

(kubectl) Criação de um PV a partir de um disco EVS existente

Observações e restrições

O exemplo de configuração a seguir se aplica a clusters do Kubernetes 1.13 ou anterior.

Procedimento

  1. Efetue logon no console do EVS, crie um disco EVS e registre o ID do volume, a capacidade e o tipo de disco do disco EVS.
  2. Use o kubectl para se conectar ao cluster. Para mais detalhes, consulte Conexão a um cluster usando o kubectl.
  3. Crie dois arquivos YAML para criar o PV (PersistentVolume) e a PVC (PersistentVolumeClaim). Suponha que os nomes dos arquivos sejam pv-evs-example.yaml e pvc-evs-example.yaml.

    touch pv-evs-example.yaml pvc-evs-example.yaml

    Versão do cluster do Kubernetes

    Descrição

    Exemplo de YAML

    1.11.7 ≤ versão K8s ≤ 1.13

    Clusters da v1.11.7 a v1.13

    Exemplo de YAML

    1.11 ≤ versão K8s < 1.11.7

    Clusters da v1.11 a v1.11.7

    Exemplo de YAML

    Versão K8s = 1.9

    Clusters da v1.9

    Exemplo de YAML

    Clusters da v1.11.7 a v1.13

    • Exemplo de arquivo YAML para o PV:
      apiVersion: v1 
      kind: PersistentVolume 
      metadata: 
        labels: 
          failure-domain.beta.kubernetes.io/region: ap-southeast-1
          failure-domain.beta.kubernetes.io/zone: ap-southeast-1a
        annotations:
          pv.kubernetes.io/provisioned-by: flexvolume-huawei.com/fuxivol
        name: pv-evs-example 
      spec: 
        accessModes: 
        - ReadWriteOnce 
        capacity: 
          storage: 10Gi 
        claimRef:
          apiVersion: v1
          kind: PersistentVolumeClaim
          name: pvc-evs-example
          namespace: default
        flexVolume: 
          driver: huawei.com/fuxivol 
          fsType: ext4 
          options:
            disk-mode: SCSI
            fsType: ext4 
            volumeID: 0992dbda-6340-470e-a74e-4f0db288ed82 
        persistentVolumeReclaimPolicy: Delete 
        storageClassName: sas
      Tabela 1 Parâmetros principais

      Parâmetro

      Descrição

      failure-domain.beta.kubernetes.io/region

      Região onde o cluster está localizado.

      failure-domain.beta.kubernetes.io/zone

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

      storage

      Capacidade de volume do SVE na unidade de Gi.

      storageClassName

      Tipos de disco EVS. Valores compatíveis: High I/O (SAS) and Ultra-high I/O (SSD)

      driver

      Driver de armazenamento.

      Para discos EVS, defina este parâmetro como huawei.com/fuxivol.

      volumeID

      ID do volume do disco EVS.

      Para obter o ID do volume, entre no console do CCE, escolha Resource Management > Storage, clique no nome da PVC na página de guia EVS e copie o ID da PVC na página de detalhes da PVC.

      disk-mode

      Tipo de dispositivo do disco EVS. O valor é VBD ou SCSI.

      Para clusters do CCE anteriores a v1.11.7, você não precisa definir esse campo. O valor padrão é VBD.

      Esse campo é obrigatório para clusters do CCE de v1.11.7 a v1.13 que usam Linux x86. Como os volumes do EVS fornecidos dinamicamente por uma PVC são criados a partir de discos SCSI EVS, é aconselhável escolher SCSI ao criar volumes manualmente (PVs estáticos). Volumes no modo VBD ainda podem ser usados após upgrades de cluster.

      spec.claimRef.apiVersion

      O valor é fixado em v1.

      spec.claimRef.kind

      O valor é fixado em PersistentVolumeClaim.

      spec.claimRef.name

      Nome da PVC. O valor é o mesmo que o nome da PVC criada na próxima etapa.

      spec.claimRef.namespace

      Namespace da PVC. O valor é o mesmo que o namespace da PVC criada na próxima etapa.

    • Exemplo de arquivo YAML para a PVC:
      apiVersion: v1  
      kind: PersistentVolumeClaim  
      metadata:  
        annotations:  
          volume.beta.kubernetes.io/storage-class: sas
          volume.beta.kubernetes.io/storage-provisioner: flexvolume-huawei.com/fuxivol 
        labels: 
          failure-domain.beta.kubernetes.io/region: ap-southeast-1
          failure-domain.beta.kubernetes.io/zone: ap-southeast-1a     
        name: pvc-evs-example 
        namespace: default  
      spec:  
        accessModes:  
        - ReadWriteOnce  
        resources:  
          requests:  
            storage: 10Gi
        volumeName: pv-evs-example
      Tabela 2 Parâmetros principais

      Parâmetro

      Descrição

      volume.beta.kubernetes.io/storage-class

      Classe de armazenamento, que deve ser a mesma do PV existente.

      volume.beta.kubernetes.io/storage-provisioner

      O campo deve ser definido como flexvolume-huawei.com/fuxivol.

      failure-domain.beta.kubernetes.io/region

      Região onde o cluster está localizado.

      failure-domain.beta.kubernetes.io/zone

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

      storage

      Capacidade solicitada na PVC, em Gi.

      O valor deve ser o mesmo que o tamanho de armazenamento do PV existente.

      volumeName

      Nome do PV.

    Clusters da v1.11 a v1.11.7

    • Exemplo de arquivo YAML para o PV:
      apiVersion: v1 
      kind: PersistentVolume 
      metadata: 
        labels: 
          failure-domain.beta.kubernetes.io/region: ap-southeast-1
          failure-domain.beta.kubernetes.io/zone:  ap-southeast-1a
        name: pv-evs-example 
      spec: 
        accessModes: 
        - ReadWriteOnce
        capacity: 
          storage: 10Gi 
        flexVolume: 
          driver: huawei.com/fuxivol 
          fsType: ext4 
          options:
            fsType: ext4 
            volumeID: 0992dbda-6340-470e-a74e-4f0db288ed82 
        persistentVolumeReclaimPolicy: Delete 
        storageClassName: sas
      Tabela 3 Parâmetros principais

      Parâmetro

      Descrição

      failure-domain.beta.kubernetes.io/region

      Região onde o cluster está localizado.

      failure-domain.beta.kubernetes.io/zone

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

      storage

      Capacidade de volume do SVE na unidade de Gi.

      storageClassName

      Tipos de disco EVS. Valores compatíveis: High I/O (SAS) and Ultra-high I/O (SSD)

      driver

      Driver de armazenamento.

      Para discos EVS, defina este parâmetro como huawei.com/fuxivol.

      volumeID

      ID do volume do disco EVS.

      Para obter o ID do volume, entre no console do CCE, escolha Resource Management > Storage, clique no nome da PVC na página de guia EVS e copie o ID da PVC na página de detalhes da PVC.

      disk-mode

      Tipo de dispositivo do disco EVS. O valor é VBD ou SCSI.

      Para clusters do CCE anteriores a v1.11.7, você não precisa definir esse campo. O valor padrão é VBD.

      Esse campo é obrigatório para clusters do CCE de v1.11.7 a v1.13 que usam Linux x86. Como os volumes do EVS fornecidos dinamicamente por uma PVC são criados a partir de discos SCSI EVS, é aconselhável escolher SCSI ao criar volumes manualmente (PVs estáticos). Volumes no modo VBD ainda podem ser usados após upgrades de cluster.

    • Exemplo de arquivo YAML para a PVC:
      apiVersion: v1  
      kind: PersistentVolumeClaim  
      metadata:  
        annotations:  
          volume.beta.kubernetes.io/storage-class: sas
          volume.beta.kubernetes.io/storage-provisioner: flexvolume-huawei.com/fuxivol 
        labels: 
          failure-domain.beta.kubernetes.io/region: ap-southeast-1
          failure-domain.beta.kubernetes.io/zone: ap-southeast-1a     
        name: pvc-evs-example 
        namespace: default  
      spec:  
        accessModes:  
        - ReadWriteOnce
        resources:  
          requests:  
            storage: 10Gi
        volumeName: pv-evs-example
      Tabela 4 Parâmetros principais

      Parâmetro

      Descrição

      volume.beta.kubernetes.io/storage-class

      Classe de armazenamento. O valor pode ser sas ou ssd. O valor deve ser o mesmo do PV existente.

      volume.beta.kubernetes.io/storage-provisioner

      O campo deve ser definido como flexvolume-huawei.com/fuxivol.

      failure-domain.beta.kubernetes.io/region

      Região onde o cluster está localizado.

      failure-domain.beta.kubernetes.io/zone

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

      storage

      Capacidade solicitada na PVC, em Gi.

      O valor deve ser o mesmo que o tamanho de armazenamento do PV existente.

      volumeName

      Nome do PV.

    Clusters da v1.9

    • Exemplo de arquivo YAML para o PV:
      apiVersion: v1 
      kind: PersistentVolume 
      metadata: 
        labels: 
          failure-domain.beta.kubernetes.io/region: ap-southeast-1
          failure-domain.beta.kubernetes.io/zone:  ap-southeast-1a
        name: pv-evs-example 
        namespace: default 
      spec: 
        accessModes: 
        - ReadWriteOnce
        capacity: 
          storage: 10Gi 
        flexVolume: 
          driver: huawei.com/fuxivol 
          fsType: ext4 
          options: 
            fsType: ext4 
            kubernetes.io/namespace: default 
            volumeID: 0992dbda-6340-470e-a74e-4f0db288ed82 
        persistentVolumeReclaimPolicy: Delete 
        storageClassName: sas
      Tabela 5 Parâmetros principais

      Parâmetro

      Descrição

      failure-domain.beta.kubernetes.io/region

      Região onde o cluster está localizado.

      failure-domain.beta.kubernetes.io/zone

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

      storage

      Capacidade de volume do SVE na unidade de Gi.

      storageClassName

      Tipos de disco EVS. Valores compatíveis: High I/O (SAS) and Ultra-high I/O (SSD)

      driver

      Driver de armazenamento.

      Para discos EVS, defina este parâmetro como huawei.com/fuxivol.

      volumeID

      ID do volume do disco EVS.

      Para obter o ID do volume, entre no console do CCE, escolha Resource Management > Storage, clique no nome da PVC na página de guia EVS e copie o ID da PVC na página de detalhes da PVC.

      disk-mode

      Tipo de dispositivo do disco EVS. O valor é VBD ou SCSI.

      Para clusters do CCE anteriores a v1.11.7, você não precisa definir esse campo. O valor padrão é VBD.

      Esse campo é obrigatório para clusters do CCE de v1.11.7 a v1.13 que usam Linux x86. Como os volumes do EVS fornecidos dinamicamente por uma PVC são criados a partir de discos SCSI EVS, é aconselhável escolher SCSI ao criar volumes manualmente (PVs estáticos). Volumes no modo VBD ainda podem ser usados após upgrades de cluster.

    • Exemplo de arquivo YAML para a PVC:
      apiVersion: v1  
      kind: PersistentVolumeClaim  
      metadata:  
        annotations:  
          volume.beta.kubernetes.io/storage-class: sas
          volume.beta.kubernetes.io/storage-provisioner: flexvolume-huawei.com/fuxivol 
        labels: 
          failure-domain.beta.kubernetes.io/region: ap-southeast-1
          failure-domain.beta.kubernetes.io/zone: ap-southeast-1a
        name: pvc-evs-example 
        namespace: default  
      spec:  
        accessModes:  
        - ReadWriteOnce 
        resources:  
          requests:  
            storage: 10Gi
        volumeName: pv-evs-example
        volumeNamespace: default
      Tabela 6 Parâmetros principais

      Parâmetro

      Descrição

      volume.beta.kubernetes.io/storage-class

      Classe de armazenamento, que deve ser a mesma do PV existente.

      volume.beta.kubernetes.io/storage-provisioner

      O campo deve ser definido como flexvolume-huawei.com/fuxivol.

      failure-domain.beta.kubernetes.io/region

      Região onde o cluster está localizado.

      failure-domain.beta.kubernetes.io/zone

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

      storage

      Capacidade solicitada na PVC, em Gi.

      O valor deve ser o mesmo que o tamanho de armazenamento do PV existente.

      volumeName

      Nome do PV.

  4. Crie um PV.

    kubectl create -f pv-evs-example.yaml

  5. Crie uma PVC.

    kubectl create -f pvc-evs-example.yaml

    Depois que a operação for bem-sucedida, escolha Resource Management > Storage para exibir a PVC criada. Você também pode visualizar o disco EVS por nome no console do EVS.

  6. (Opcional) Adicione os metadados associados ao cluster para garantir que o disco do EVS associado ao PV estático montado não seja excluído quando o nó ou o cluster for excluído.

    Se você pular esta etapa neste exemplo ou ao criar um PV ou PVC estático, certifique-se de que o disco EVS associado ao PV estático tenha sido desvinculado do nó antes de excluir o nó.

    1. Obtenha o token do locatário. Para obter detalhes, consulte Obtenção de um token de usuário.
    2. Obtenha o endereço de acesso EVS EVS_ENDPOINT. Para obter detalhes, consulte Regiões e pontos de extremidade.
    3. Adicione os metadados associados ao cluster ao disco EVS que suporta o PV estático.
      curl -X POST ${EVS_ENDPOINT}/v2/${project_id}/volumes/${volume_id}/metadata --insecure \
          -d '{"metadata":{"cluster_id": "${cluster_id}", "namespace": "${pvc_namespace}"}}' \
          -H 'Accept:application/json' -H 'Content-Type:application/json;charset=utf8' \
          -H 'X-Auth-Token:${TOKEN}'
      Tabela 7 Parâmetros principais

      Parâmetro

      Descrição

      EVS_ENDPOINT

      Endereço de acesso ao EVS. Defina este parâmetro para o valor obtido em 2.

      project_id

      ID do projeto.

      volume_id

      ID do disco EVS associado. Defina este parâmetro como volume_id do PV estático a ser criado. Você também pode efetuar logon no console do EVS, clicar no nome do disco EVS a ser importado e obter o ID em Summary na página de detalhes do disco, conforme mostrado em Figura 1.

      cluster_id

      ID do cluster onde o PV do EVS será criado. No console do CCE, escolha Resource Management > Clusters. Clique no nome do cluster a ser associado. Na página de detalhes do cluster, obtenha o ID do cluster, conforme mostrado em Figura 2.

      pvc_namespace

      Namespace onde a PVC deve ser vinculada.

      TOKEN

      Token do usuário. Defina este parâmetro para o valor obtido em 1.

      Figura 1 Obter o ID do disco
      Figura 2 Obter o ID do cluster

      Por exemplo, execute os seguintes comandos:

      curl -X POST https://evs.ap-southeast-1.myhuaweicloud.com:443/v2/060576866680d5762f52c0150e726aa7/volumes/69c9619d-174c-4c41-837e-31b892604e14/metadata --insecure \
          -d '{"metadata":{"cluster_id": "71e8277e-80c7-11ea-925c-0255ac100442", "namespace": "default"}}' \
          -H 'Accept:application/json' -H 'Content-Type:application/json;charset=utf8' \
          -H 'X-Auth-Token:MIIPe******IsIm1ldG

      Depois que a solicitação for executada, execute os seguintes comandos para verificar se o disco EVS foi associado aos metadados do cluster:

      curl -X GET ${EVS_ENDPOINT}/v2/${project_id}/volumes/${volume_id}/metadata --insecure \
          -H 'X-Auth-Token:${TOKEN}'

      Por exemplo, execute os seguintes comandos:

      curl -X GET https://evs.ap-southeast-1.myhuaweicloud.com/v2/060576866680d5762f52c0150e726aa7/volumes/69c9619d-174c-4c41-837e-31b892604e14/metadata --insecure \
          -H 'X-Auth-Token:MIIPeAYJ***9t1c31ASaQ=='

      A saída do comando exibe os metadados atuais do disco EVS.

      {
          "metadata": {
              "namespace": "default",
              "cluster_id": "71e8277e-80c7-11ea-925c-0255ac100442",
              "hw:passthrough": "true"
          }
      }