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:
- Criar um cluster do GKE na AWS e
configurar o acesso a ele com
kubectl
. - Conectar-se e autenticar-se no cluster
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:
Encontre o nome do papel do plano de controle do cluster.
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.
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
;
Aplicar o YAML ao cluster
kubectl apply -f existing-volume.yaml
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.
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
.
Aplicar o YAML ao cluster
kubectl apply -f nginx.yaml
Verifique o status da sua instância do Nginx com
kubectl describe
. A saída precisa ter umSTATUS
deRunning
.kubectl describe pod web-server
A seguir
- Use mais drivers de armazenamento com o GKE na AWS.