Información general
Si ya tienes un volumen de Elastic Block Store (EBS) de AWS que quieres importar a GKE en AWS, puedes crear un objeto PersistentVolume (PV) y reservarlo para una PersistentVolumeClaim (PVC) específica.
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. Esta página está dirigida a operadores y especialistas en almacenamiento que quieran configurar y gestionar el almacenamiento. Para obtener más información sobre los roles habituales y las tareas de ejemplo a las que hacemos referencia en el contenido de Google Cloud , consulta Roles y tareas de usuario habituales de GKE.
Antes de empezar
Antes de completar estos pasos, debes hacer lo siguiente:
- Crea un clúster de GKE en AWS y configura el acceso a él con
kubectl
. - Conectarse y autenticarse en tu clúster
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 conceder acceso al rol del plano de control a tu clave, sigue estos pasos:
Busca el nombre del rol del plano de control de tu clúster.
Elige la clave de AWS KMS que se usa para encriptar tu volumen de EBS y añade el rol del plano de control como usuario de la clave siguiendo las instrucciones que se indican en Permitir que los usuarios de la clave usen la clave de KMS.
Crear un PersistentVolume para un volumen de EBS ya creado
Puedes importar un volumen de EBS ya creado especificando un nuevo PV y añadiéndolo a tu clúster.
Copia el siguiente código YAML en un archivo llamado
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
: el nombre del volumen.VOLUME_CAPACITY
: tamaño del volumen (por ejemplo,30G
). 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,standard-rwo
).EBS_VOLUME_ID
: el ID de tu 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
.
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
: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
Haz los cambios siguientes:
STORAGE_CLASS
: el nombre de StorageClass del PersistentVolume que has creado anteriormente. Por ejemplo,standard-rwo
.VOLUME_NAME
VOLUME_CAPACITY
PVC_NAME
: nombre del PVC (por ejemplo,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
Siguientes pasos
- Usa controladores de almacenamiento adicionales con GKE en AWS.