Como importar um volume EBS preexistente

Visão geral

Se você já tiver um volume do AWS Elastic Block Store (EBS) para importar para o GKE na AWS, crie um objeto PersistentVolume (PV) e o reserve para um PersistentVolumeClaim (PVC) específico.

Nesta página, explicamos como criar um PV usando um volume EBS atual preenchido com dados e como usá-lo em um pod. Esta página é destinada a operadores e especialistas em armazenamento que querem configurar e gerenciar o armazenamento. Para saber mais sobre papéis comuns e tarefas de exemplo referenciados no conteúdo do Google Cloud , consulte Tarefas e funções de usuário comuns do GKE.

Antes de começar

Antes de concluir estas etapas:

Como usar volumes EBS criptografados

Se o volume do EBS for criptografado com o serviço de gerenciamento de chaves (KMS) da AWS, você precisará conceder aos papéis do IAM da AWS do plano de controle do GKE na AWS acesso à chave do KMS.

Para conceder ao papel do plano de controle acesso à chave:

  1. Encontre o nome do papel do plano de controle do cluster.

  2. Escolha a chave KMS da AWS usada para criptografar o volume de EBS e adicione o papel do plano de controle como um usuário-chave seguindo as instruções em Permitir que os usuários principais usem a chave KMS.

Como criar um PersistentVolume para um volume EBS preexistente

É possível importar um volume de EBS existente especificando um novo PV e adicionando-o ao cluster.

  1. Copie o seguinte YAML para um arquivo chamado existing-volume.yaml.

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: VOLUME_NAME
      annotations:
        pv.kubernetes.io/provisioned-by: ebs.csi.aws.com
    spec:
      capacity:
        storage: VOLUME_CAPACITY
      accessModes:
        - ReadWriteOnce
      persistentVolumeReclaimPolicy: Retain
      storageClassName: STORAGE_CLASS_NAME
      claimRef:
        name: my-pvc
        namespace: default
      csi:
        driver: ebs.csi.aws.com
        volumeHandle: EBS_VOLUME_ID
        fsType: FILE_SYSTEM_TYPE
      nodeAffinity:
        required:
          nodeSelectorTerms:
          - matchExpressions:
            - key: topology.ebs.csi.aws.com/zone
              operator: In
              values:
              - ZONE
    
    Replace the following:
    
    • VOLUME_NAME: o nome do volume;
    • VOLUME_CAPACITY: tamanho do volume. Por exemplo, 30G. Para mais informações sobre como especificar a capacidade do volume no Kubernetes, consulte o Significado da memória.
    • STORAGE_CLASS_NAME: o nome do StorageClass que provisiona o volume, por exemplo, standard-rwo.

      .
    • EBS_VOLUME_ID: o ID do volume do EBS. Por exemplo, vol-05786ec9ec9526b67.

    • FS_TYPE: o sistema de arquivos do volume, por exemplo, ext4.

    • ZONE: a zona de disponibilidade da AWS que hospeda o volume EBS, por exemplo, us-east-1c;

  2. Aplicar o YAML ao cluster

    kubectl apply -f existing-volume.yaml
    
  3. Confirmar a criação do PV

    kubectl describe pv volume-name
    

    A saída desse comando contém o status do PV.

Como usar o volume com um PersistentVolumeClaim e um pod

Depois de importar o volume, é possível criar um PVC e um Pod que anexe o PVC.

  1. O YAML abaixo cria um PVC e o anexa a um Pod que executa o servidor da Web Nginx. Copie-o para um arquivo chamado nginx.yaml:

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: my-pvc
    spec:
      storageClassName: STORAGE_CLASS_NAME
      volumeName: VOLUME_NAME
      accessModes:
        - ReadWriteOnce
      resources:
        requests:
          storage: VOLUME_CAPACITY
    ---
    
    apiVersion: v1
    kind: Pod
    metadata:
      name: web-server
    spec:
      containers:
       - name: web-server
         image: nginx
         volumeMounts:
           - mountPath: /var/lib/www/html
             name: data
      volumes:
       - name: data
         persistentVolumeClaim:
           claimName: PVC_NAME
    

    Substitua:

    • STORAGE_CLASS: o nome do StorageClass do PersistentVolume criado anteriormente, por exemplo, standard-rwo.
    • VOLUME_NAME
    • VOLUME_CAPACITY
    • PVC_NAME: nome do PVC, por exemplo, my-pvc.
  2. Aplicar o YAML ao cluster

    kubectl apply -f nginx.yaml
    
  3. Verifique o status da sua instância do Nginx com kubectl describe. A saída precisa ter um STATUS de Running.

    kubectl describe pod web-server
    

A seguir