Importar un volumen de EBS ya creado

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:

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:

  1. Busca el nombre del rol del plano de control de tu clúster.

  2. 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.

  1. 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.

  2. Aplica el archivo YAML al clúster

    kubectl apply -f existing-volume.yaml
    
  3. 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.

  1. 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).
  2. Aplica el archivo YAML al clúster

    kubectl apply -f nginx.yaml
    
  3. Comprueba el estado de tu instancia de Nginx con kubectl describe. El resultado debe tener un STATUS de Running.

    kubectl describe pod web-server
    

Siguientes pasos