Importando 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, poderá criar um objeto PersistentVolume (PV) e reservá-lo para um PersistentVolumeClaim (PVC) específico.

Esta página explica como criar um PV usando um volume EBS existente preenchido com dados e como usar o PV em um Pod. Esta página é para operadores e especialistas em armazenamento que desejam configurar e gerenciar o armazenamento. Para saber mais sobre funções comuns e tarefas de exemplo que mencionamos em Google Cloud conteúdo, consulte Funções e tarefas comuns do usuário do GKE Enterprise .

Antes de começar

Antes de concluir essas etapas, você deve:

Usando volumes EBS criptografados

Se o seu volume EBS estiver criptografado com o AWS Key Management Service (KMS), você precisará conceder ao plano de controle do GKE na AWS acesso à função AWS IAM para sua chave KMS.

Para conceder à função de plano de controle acesso à sua chave:

  1. Encontre o nome da função do plano de controle do seu cluster.

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

Criando um PersistentVolume para um volume EBS pré-existente

Você pode importar um volume EBS existente especificando um novo PV e adicionando-o ao seu cluster.

  1. Copie o seguinte YAML em 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 seu volume.
    • VOLUME_CAPACITY : tamanho do volume — por exemplo, 30G . Para obter mais informações sobre como especificar a capacidade do volume no Kubernetes, consulte o Significado de memória .
    • STORAGE_CLASS_NAME : o nome da StorageClass que provisiona o volume — por exemplo, standard-rwo .

    • EBS_VOLUME_ID : Seu ID de volume 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 do EBS — por exemplo, us-east-1c .

  2. Aplique o YAML ao seu cluster

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

    kubectl describe pv volume-name
    

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

Usando o volume com um PersistentVolumeClaim e Pod

Depois de importar seu volume, você pode criar um PVC e um Pod que anexa o PVC.

  1. O YAML abaixo cria um PVC e o anexa a um Pod executando o servidor 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 o seguinte:

    • STORAGE_CLASS : O nome da StorageClass do PersistentVolume que você criou anteriormente — por exemplo, standard-rwo .
    • VOLUME_NAME
    • VOLUME_CAPACITY
    • PVC_NAME : Nome do PVC — por exemplo, my-pvc .
  2. Aplique o YAML ao seu cluster

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

    kubectl describe pod web-server
    

O que vem a seguir