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.
Antes de começar
- No diretório do
anthos-aws
, useanthos-gke
para mudar o contexto para o cluster de utilizadores. Substitua CLUSTER_NAME pelo nome do cluster de utilizadores.cd anthos-aws env HTTPS_PROXY=http://localhost:8118 \ anthos-gke aws clusters get-credentials CLUSTER_NAME
Criar um PersistentVolume para um volume EBS pré-existente
Pode importar um volume do EBS existente especificando um novo PV.
Copie o seguinte YAML para um ficheiro com o nome
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 artigo Significado da memória. storage-class-name: o nome da StorageClass que aprovisiona o volume. Por exemplo, pode usar o valor predefinido
standard-rwo
.ebs-id: EBS volume id. 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
.
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,
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
e conclua a configuração
substituindo os valores:
- storage-class: o nome da StorageClass do PersistentVolume que criou anteriormente. Por exemplo,
standard-rwo
. - volume-name: o nome do volume que 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
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
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 obter o nome da função do AWS IAM, siga estes passos:
Altere para o diretório com a configuração do GKE na AWS. Criou este diretório quando Instalou o serviço de gestão.
cd anthos-aws
Escolha se criou o seu ambiente do GKE na AWS com a ferramenta
anthos-gke
ou se criou os seus perfis do IAM da AWS manualmente.ferramenta anthos-gke
Use o comando
terraform output
e pesquise o valor deiamInstanceProfile
.terraform output | grep iamInstanceProfile
Se criou o seu ambiente do GKE no AWS com a ferramenta
anthos- gke
, o resultado tem o seguinte aspeto: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 o passo seguinte.Criado manualmente
Examine a saída de
terraform output
com o seguinte comando:terraform output | less
Desloque a saída e encontre o iamInstanceProfile após a definição de AWSCluster.
kind: AWSCluster metadata: name: cluster-0 spec: ... controlPlane: ... iamInstanceProfile: INSTANCE_PROFILE_NAME
Copie o valor de
INSTANCE_PROFILE_NAME
para o seguinte passo.Para conceder ao plano de controlo acesso aos seus volumes EBS, adicione o
gke-xxxxxx-controlplane
perfil do AWS IAM como um utilizador de chaves à chave do AWS KMS usada para encriptar o seu volume EBS.
O que se segue?
- Use controladores de armazenamento adicionais com o GKE no AWS.