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:
- Crie um cluster do GKE na AWS e
configure o acesso ao mesmo com o
kubectl
. - Estabeleça ligação e autentique-se no seu cluster
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:
Encontre o nome da função do plano de controlo do seu cluster.
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.
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
.
Aplique o YAML ao seu cluster
kubectl apply -f existing-volume.yaml
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.
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
.
Aplique o YAML ao seu cluster
kubectl apply -f nginx.yaml
Verifique o estado da sua instância do Nginx com
kubectl describe
. O resultado deve ter umSTATUS
deRunning
.kubectl describe pod web-server
O que se segue?
- Use controladores de armazenamento adicionais com o GKE no AWS.