Importar un volumen de EBS ya creado

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, usa anthos-gke para cambiar el contexto a tu clúster de usuarios.
    cd anthos-aws
    env HTTPS_PROXY=http://localhost:8118 \
      anthos-gke aws clusters get-credentials CLUSTER_NAME
    Sustituye CLUSTER_NAME por el nombre de tu clúster de usuario.

Crear un PersistentVolume para un volumen de EBS ya creado

Puede importar un volumen de EBS ya creado especificando un nuevo PV.

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

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

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

    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:

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

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

    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.

  3. Para conceder acceso al plano de control a tus volúmenes de EBS, añade el perfil de gke-xxxxxx-controlplaneIAM de AWS como usuario de clave a la clave de KMS de AWS que se usa para cifrar tu volumen de EBS.

Siguientes pasos