Visão geral
Se você já tiver um volume do AWS Elastic Block Store (EBS) a ser importado para o GKE na AWS, crie um objeto PersistentVolume (PV) e o reserve para uma PersistentVolumeClaim (PVC) específica.
Nesta página, explicamos como criar um PV usando um volume EBS atual preenchido com dados e como usá-lo em um pod.
Antes de começar
- No diretório
anthos-aws
, useanthos-gke
para alternar o contexto para o cluster de usuários.cd anthos-aws env HTTPS_PROXY=http://localhost:8118 \ anthos-gke aws clusters get-credentials CLUSTER_NAME
Substitua CLUSTER_NAME pelo nome do cluster de usuários.
Como criar um PersistentVolume para um volume EBS preexistente
É possível importar um volume EBS atual especificando um novo PV.
Copie o YAML a seguir em um arquivo chamado
existing-volume.yaml
e conclua a configuração substituindo os valores:- volume-capacity: tamanho do volume. Por exemplo,
30Gi
. Para mais informações sobre como especificar a capacidade do volume no Kubernetes, consulte o Significado da memória. storage-class-name: nome do StorageClass que provisiona o volume. Por exemplo, use o padrão
.standard-rwo
.ebs-id: ID do 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 EBS. Por exemplo,
us-east-1c
.
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
- volume-capacity: tamanho do volume. Por exemplo,
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
e conclua a configuração
substituindo os valores:
- storage-class: o nome do StorageClass do
PersistentVolume criado anteriormente. Por exemplo,
standard-rwo
. - volume-name: o nome do volume que você criou anteriormente.
- volume-capacity: tamanho do volume. Por exemplo,
30Gi
.
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: 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
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 encontrar o nome do papel de IAM da AWS, siga estas etapas:
Mude para o diretório com o GKE na configuração da AWS. Você criou esse diretório ao instalar o serviço de gerenciamento.
cd anthos-aws
Escolha se você criou o ambiente do GKE na AWS com a ferramenta
anthos-gke
ou se criou manualmente os perfis do IAM da AWS.Ferramenta anthos-gke
Use o comando
terraform output
e procure o valor deiamInstanceProfile
.terraform output | grep iamInstanceProfile
Se você criou o ambiente do GKE na AWS com a ferramenta
anthos- gke
, a saída será semelhante a esta:iamInstanceProfile: gke-CLUSTER_ID-controlplane iamInstanceProfile: gke-CLUSTER_ID-nodepool
Em que CLUSTER_ID é o ID do cluster. Copie o valor de
gke-CLUSTER_ID-controlplane
para a etapa a seguir.Criados manualmente
Analise a saída de
terraform output
com o seguinte comando:terraform output | less
Role a resposta até o iamInstanceProfile depois da definição do AWSCluster.
kind: AWSCluster metadata: name: cluster-0 spec: ... controlPlane: ... iamInstanceProfile: INSTANCE_PROFILE_NAME
Copie o valor de
INSTANCE_PROFILE_NAME
para a etapa a seguir.Para conceder ao plano de controle acesso aos volumes do EBS, adicione o perfil do IAM da AWS
gke-xxxxxx-controlplane
como um usuário de chaves à chave do KMS da AWS usada para criptografar o volume do EBS.
A seguir
- Use mais drivers de armazenamento com o GKE na AWS.