Importar um volume do EBS pré-existente

Vista geral

Se já tiver um volume do AWS Elastic Block Store (EBS) para importar para o GKE no AWS, pode criar um objeto PersistentVolume (PV) e reservá-lo para um PersistentVolumeClaim (PVC) específico.

Esta página explica como criar um PV através de um volume do EBS existente preenchido com dados e como usar o PV num Pod. Esta página destina-se a operadores e especialistas em armazenamento que pretendam configurar e gerir o armazenamento. Para saber mais sobre as funções comuns e as tarefas de exemplo que referimos no Google Cloud conteúdo, consulte Funções e tarefas comuns do utilizador do GKE.

Antes de começar

Antes de concluir estes passos, tem de:

Usar volumes EBS encriptados

Se o volume do EBS estiver encriptado com o AWS Key Management Service (KMS), tem de conceder à função do AWS IAM do plano de controlo do GKE no AWS acesso à sua chave do KMS.

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

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

  2. Escolha a chave do AWS KMS usada para encriptar o seu volume do EBS e adicione a função do plano de controlo como utilizador da chave seguindo as instruções em Permitir que os utilizadores da chave usem a chave do KMS.

Criar um PersistentVolume para um volume EBS pré-existente

Pode importar um volume EBS existente especificando um novo PV e adicionando-o ao cluster.

  1. Copie o seguinte YAML para um ficheiro com o nome 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 artigo Significado da memória.
    • STORAGE_CLASS_NAME: o nome da StorageClass que aprovisiona o volume, por exemplo, standard-rwo.

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

    • FS_TYPE: O sistema de ficheiros do volume, por exemplo, ext4.

    • ZONE: a zona de disponibilidade da AWS que aloja 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 da sua propriedade de visualização de página

    kubectl describe pv volume-name
    

    O resultado deste comando contém o estado da PV.

Usar o volume com uma PersistentVolumeClaim e um pod

Depois de importar o volume, pode criar um PVC e um pod que anexa o PVC.

  1. O YAML abaixo cria um PVC e anexa-o a um pod que executa o servidor Web Nginx. Copie-o para um ficheiro com o nome 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 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 estado da sua instância do Nginx com kubectl describe. O resultado deve ter um STATUS de Running.

    kubectl describe pod web-server
    

O que se segue?