Importar un volumen de disco preexistente de Azure

Si ya tienes un volumen de disco de Azure para usar con clústeres de GKE en Azure, 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 con un volumen existente propagado con datos, y cómo usarlo en un Pod.

Antes de comenzar

Crea un PersistentVolume para un volumen preexistente

Puedes importar un volumen existente si especificas un nuevo PV.

  1. 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: disk.csi.azure.com
    spec:
      capacity:
        storage: VOLUME_CAPACITY
      accessModes:
        - ReadWriteOnce
      persistentVolumeReclaimPolicy: Retain
      storageClassName: STORAGE_CLASS_NAME
      claimRef:
        name: my-pvc
        namespace: default
      csi:
        driver: disk.csi.azure.com
        volumeHandle: /subscriptions/SUBSCRIPTION_ID/resourcegroups/RESOURCE_GROUP_NAME/providers/microsoft.compute/disks/DISK_NAME
        fsType: FILE_SYSTEM_TYPE
    

    Reemplaza lo siguiente:

    • VOLUME_NAME: nombre para el volumen
    • VOLUME_CAPACITY: El 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 Significado de memoria.
    • STORAGE_CLASS_NAME: El nombre de la StorageClass que aprovisiona el volumen. Por ejemplo, puedes usar el standard-rwo predeterminado.

    • SUBSCRIPTION_ID: ID de suscripción de Azure que contiene el volumen.

    • RESOURCE_GROUP_NAME: grupo de recursos de Azure que contiene el volumen.

    • DISK_NAME: nombre del volumen de disco de Azure.

    • FS_TYPE: el tipo de sistema de archivos del volumen. Por ejemplo, ext4.

  2. Aplica el YAML al clúster.

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

  1. Mediante el siguiente YAML, 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:
        - ACCESS_MODE
      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
    

    Reemplaza lo siguiente:

    • STORAGE_CLASS: nombre de la StorageClass del PersistentVolume que creaste antes. Por ejemplo, standard-rwo
    • ACCESS_MODE: modo de acceso del volumen. Para Azure Disk, usa ReadWriteOnce. Para Azure File, usa ReadWriteMany.
    • VOLUME_CAPACITY: El tamaño del volumen. Por ejemplo, 30Gi.
  2. Aplica el YAML al clúster.

    kubectl apply -f nginx.yaml
    
  3. Verifica el estado de la instancia Nginx con kubectl describe. El resultado debería tener un STATUS de Running.

    kubectl describe pod web-server
    

¿Qué sigue?