Descripción general
Si ya tienes un volumen de AWS Elastic Block Store (EBS)
para importar a clústeres de GKE en AWS, puedes crear un objeto PersistentVolume (PV) y reservarlo para un PersistentVolumeClaim (PVC) específico.
En esta página, se explica cómo crear un PV mediante un volumen de EBS existente propagado con datos y cómo usarlo en un Pod.
Antes de comenzar
Antes de completar estos pasos, debes hacer lo siguiente:
- Crea un clúster de GKE en AWS
configura el acceso con
kubectl
. - Conéctate a tu clúster y autentícate en él
Usa volúmenes de EBS encriptados
Si tu volumen de EBS está encriptado con el servicio de administración de claves (KMS) de AWS, debes otorgar acceso a tu clave de KMS al rol de IAM de AWS del plano de control de AWS de GKE en AWS.
Para otorgar al rol del plano de control acceso a tu clave, sigue estos pasos:
Busca el nombre del rol del plano de control de tu clúster.
Elige la clave de KMS de AWS que se usa para encriptar el volumen de EBS y agrega el rol del plano de control como un usuario de clave. Para ello, sigue las instrucciones en Permite que los usuarios de clave usen la clave de KMS.
Crea un PersistentVolume para un volumen de EBS preexistente
Puedes importar un volumen de EBS existente si especificas un nuevo PV y lo agregas a tu clúster.
Copia el siguiente 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 volumenVOLUME_CAPACITY
: El 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 Significado de memoria.STORAGE_CLASS_NAME
: El nombre de la StorageClass que aprovisiona el volumen, por ejemplo,standard-rwo
EBS_VOLUME_ID
: El 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
Aplica el YAML al clúster.
kubectl apply -f existing-volume.yaml
Confirma la creación del PV.
kubectl describe pv volume-name
El resultado de este comando contiene el estado del PV.
Usa el volumen con un PersistentVolumeClaim y un Pod
Después de importar el volumen, puedes crear un PVC y un Pod que conecte el PVC.
Mediante el YAML a continuación, se crea un PVC y se lo conecta 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
Reemplaza lo siguiente:
STORAGE_CLASS
: El nombre de la StorageClass del PersistentVolume que creaste antes, por ejemplo,standard-rwo
VOLUME_NAME
VOLUME_CAPACITY
PVC_NAME
: Nombre del PVC, por ejemplo,my-pvc
Aplica el YAML al clúster.
kubectl apply -f nginx.yaml
Verifica el estado de la instancia Nginx con
kubectl describe
. El resultado debería tener unSTATUS
deRunning
.kubectl describe pod web-server
¿Qué sigue?
- Usa controladores de almacenamiento adicionales con GKE en AWS.