Información general
Si ya tiene un volumen de AWS Elastic Block Store (EBS) para importar a GKE en AWS, puede crear un objeto PersistentVolume (PV) y reservarlo para un PersistentVolumeClaim (PVC) específico.
En esta página se explica cómo crear un PV usando un volumen de EBS que ya tenga datos y cómo usar el PV en un pod.
Antes de empezar
- En tu directorio de
anthos-aws
, usaanthos-gke
para cambiar el contexto a tu clúster de usuarios. Sustituye CLUSTER_NAME por el nombre de tu clúster de usuario.cd anthos-aws env HTTPS_PROXY=http://localhost:8118 \ anthos-gke aws clusters get-credentials CLUSTER_NAME
Crear un PersistentVolume para un volumen de EBS ya creado
Puede importar un volumen de EBS ya creado especificando un nuevo PV.
Copia el siguiente código YAML en un archivo llamado
existing-volume.yaml
y completa la configuración sustituyendo los valores:- volume-capacity: tamaño del volumen. Por ejemplo,
30Gi
. Para obtener más información sobre cómo especificar la capacidad de volumen en Kubernetes, consulta el artículo Significado de la memoria. storage-class-name: el nombre de StorageClass que aprovisiona el volumen. Por ejemplo, puedes usar el
standard-rwo
predeterminado.ebs-id: ID de volumen de EBS. Por ejemplo,
vol-05786ec9ec9526b67
.fs-type: el sistema de archivos del volumen. Por ejemplo,
ext4
.zone: la zona de disponibilidad de AWS que aloja el volumen de EBS. Por ejemplo,
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: tamaño del volumen. Por ejemplo,
Aplica el archivo YAML al clúster
kubectl apply -f existing-volume.yaml
Confirma la creación de tu PV
kubectl describe pv volume-name
El resultado de este comando contiene el estado del PV.
Usar el volumen con un PersistentVolumeClaim y un pod
Una vez que hayas importado tu volumen, puedes crear un PVC y un pod que adjunte el PVC.
El archivo YAML que aparece a continuación crea un PVC y lo asocia a un pod que ejecuta el servidor web Nginx. Cópialo en un archivo llamado nginx.yaml
y completa la configuración
sustituyendo los valores:
- storage-class: el nombre de StorageClass del PersistentVolume que has creado anteriormente. Por ejemplo,
standard-rwo
. - volume-name: el nombre del volumen que has creado anteriormente.
- volume-capacity: tamaño del volumen. Por ejemplo,
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
Aplica el archivo YAML al clúster
kubectl apply -f nginx.yaml
Comprueba el estado de tu instancia de Nginx con
kubectl describe
. El resultado debe tener unSTATUS
deRunning
.kubectl describe pod web-server
Usar volúmenes de EBS cifrados
Si tu volumen de EBS está cifrado con AWS Key Management Service (KMS), debes conceder acceso al rol de IAM de AWS del plano de control de GKE en AWS a tu clave de KMS.
Para obtener el nombre del rol de gestión de identidades y accesos de AWS, sigue estos pasos:
Cambia al directorio con tu configuración de GKE en AWS. Has creado este directorio al instalar el servicio de gestión.
cd anthos-aws
Elige si has creado tu entorno de GKE en AWS con la herramienta
anthos-gke
o si has creado tus perfiles de gestión de identidades y accesos de AWS manualmente.Herramienta anthos-gke
Usa el comando
terraform output
y busca el valor deiamInstanceProfile
.terraform output | grep iamInstanceProfile
Si has creado tu entorno de GKE en AWS con la herramienta
anthos- gke
, el resultado será similar al siguiente:iamInstanceProfile: gke-CLUSTER_ID-controlplane iamInstanceProfile: gke-CLUSTER_ID-nodepool
donde CLUSTER_ID es el ID de tu clúster. Copia el valor de
gke-CLUSTER_ID-controlplane
para el siguiente paso.Creada manualmente
Examina el resultado de
terraform output
con el siguiente comando:terraform output | less
Desplázate por la salida y busca el iamInstanceProfile después de la definición de AWSCluster.
kind: AWSCluster metadata: name: cluster-0 spec: ... controlPlane: ... iamInstanceProfile: INSTANCE_PROFILE_NAME
Copia el valor de
INSTANCE_PROFILE_NAME
para el siguiente paso.Para conceder acceso al plano de control a tus volúmenes de EBS, añade el perfil de
gke-xxxxxx-controlplane
IAM de AWS como usuario de clave a la clave de KMS de AWS que se usa para cifrar tu volumen de EBS.
Siguientes pasos
- Usa controladores de almacenamiento adicionales con GKE en AWS.