Utilizar el sistema de archivos compartidos de Azure

GKE en Azure admite el montaje de recursos compartidos de Azure Files. Si ya tienes un recurso compartido de archivos de Azure para usarlo con 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 objeto PersistentVolume usando un recurso compartido que ya tenga datos y cómo usarlo en un pod.

Antes de empezar

Almacenar la información de la cuenta de almacenamiento de Azure

GKE en Azure almacena información para acceder a tu cuenta de almacenamiento de Azure en un secreto. Si no has creado un secreto en tu clúster, debes añadir uno. Si tienes este secreto en tu clúster, ve a Crear un PersistentVolume para un recurso compartido preexistente.

  1. Para crear el secreto, copia el siguiente manifiesto en un archivo llamado "azure-service-account-key.yaml".

    ---
    apiVersion: v1
    kind: Secret
    metadata:
      name: azure-secret-account-key
    type: Opaque
    stringData:
      accountname: STORAGE_ACCOUNT_NAME
      accountkey: STORAGE_ACCOUNT_KEY
    

    Haz los cambios siguientes:

    • STORAGE_ACCOUNT_NAME: nombre de tu cuenta de almacenamiento de Azure
    • STORAGE_ACCOUNT_KEY: la clave de tu cuenta de almacenamiento de Azure
  2. Aplica el archivo a tu clúster con la herramienta kubectl:

    kubectl apply -f azure-service-account-key.yaml
    

Crear un PersistentVolume para un recurso compartido preexistente

Para importar un recurso compartido de archivos de Azure, especifica un nuevo PV en el clúster. Para crear la PV, siga estos pasos:

  1. Copia el siguiente código YAML en un archivo llamado existing-volume.yaml:

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: VOLUME_NAME
    spec:
      capacity:
        storage: VOLUME_CAPACITY
      storageClassName: standard-rwx
      accessModes:
        - ReadWriteMany
      persistentVolumeReclaimPolicy: Retain
      csi:
        driver: file.csi.azure.com
        readOnly: false
        volumeHandle: VOLUME_ID
    

    Haz los cambios siguientes:

    • VOLUME_NAME: nombre del volumen
    • 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.
    • VOLUME_ID: ID único del volumen, con formato de cadena de RESOURCE_GROUP_NAME#STORAGE_ACCOUNT_NAME#FILESHARE_NAME# donde
    • FILE_SHARE_NAME: el nombre del recurso compartido de archivos de Azure

    Si tu cuenta de almacenamiento está en un grupo de recursos diferente al de tu clúster, debes añadir una referencia a un secreto que contenga la clave de tu cuenta de almacenamiento. Para añadir la referencia, inserte lo siguiente en la sección spec.csi:

    # Optional. Only required if your storageAccount is in a different resource group than the cluster.
        nodeStageSecretRef:
          name: NODE_STAGE_SECRET_NAME
          namespace: NODE_STAGE_SECRET_NAMESPACE
    

    Haz los cambios siguientes:

    • NODE_STAGE_SECRET_NAME: el nombre del secreto.
    • NODE_STAGE_SECRET_NAMESPACE el espacio de nombres que contiene el secreto
  2. Aplica el archivo YAML a tu clúster.

    kubectl apply -f existing-volume.yaml
    
  3. Confirma la creación de tu PV con kubectl describe pv.

    kubectl describe pv VOLUME_NAME
    

    El resultado de este comando contiene el estado del PV.

Usar el volumen con un objeto PersistentVolumeClaim y un pod

Una vez que hayas importado el volumen, puedes crear un PVC y un pod que monte el PVC.

  1. El siguiente archivo YAML 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:
        - 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
    

    Haz los cambios siguientes:

    • STORAGE_CLASS: el nombre de StorageClass del PersistentVolume que has creado anteriormente. Por ejemplo, standard-rwo.
    • ACCESS_MODE: el modo de acceso del volumen. En el caso de los discos de Azure, usa ReadWriteOnce. En el caso de Azure File, usa ReadWriteMany.
    • VOLUME_CAPACITY: tamaño del volumen. Por ejemplo, 30Gi.
  2. Aplica el archivo YAML a tu 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
    
  4. Para eliminar el pod, usa el comando kubectl delete.

    kubectl delete -f nginx.yaml
    

Siguientes pasos