Usar un recurso compartido de archivos de Azure

GKE en Azure permite montar recursos compartidos de Azure Files . Si ya tiene un recurso compartido de Azure Files para usar con GKE en Azure, puede crear un objeto PersistentVolume (PV) y reservarlo para un PersistentVolumeClaim (PVC) específico.

Esta página explica cómo crear un PV usando un recurso compartido existente lleno de datos y cómo usar el PV en un Pod.

Antes de empezar

Almacene la información de su cuenta de almacenamiento de Azure

GKE en Azure almacena la información para acceder a su cuenta de almacenamiento de Azure en un secreto. Si no ha creado un secreto en su clúster, debe agregar uno. Si ya tiene este secreto en su clúster, vaya a "Crear un volumen persistente para un recurso compartido preexistente" .

  1. Para crear el secreto, copie 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
    

    Reemplace lo siguiente:

    • STORAGE_ACCOUNT_NAME : el nombre de su cuenta de almacenamiento de Azure
    • STORAGE_ACCOUNT_KEY : su clave de cuenta de almacenamiento de Azure
  2. Aplique el archivo a su 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 existente, especifique un nuevo PV en el clúster. Para crear el PV, siga estos pasos:

  1. Copie el siguiente 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
    

    Reemplace lo siguiente:

    • VOLUME_NAME : un nombre para el volumen
    • VOLUME_CAPACITY : tamaño del volumen. Por ejemplo, 30Gi . Para obtener más información sobre cómo especificar la capacidad del volumen en Kubernetes, consulte el significado de memoria .
    • VOLUME_ID : un ID único para el volumen, formateado como una cadena de RESOURCE_GROUP_NAME # STORAGE_ACCOUNT_NAME # FILESHARE_NAME # donde
    • FILE_SHARE_NAME : el nombre del recurso compartido de archivos de Azure

    Si su cuenta de almacenamiento pertenece a un grupo de recursos diferente al de su clúster, debe agregar una referencia a un secreto que contenga la clave de su cuenta de almacenamiento. Para agregar 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
    

    Reemplace lo siguiente:

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

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

    kubectl describe pv VOLUME_NAME
    

    La salida de este comando contiene el estado del PV.

Utilice el volumen con un PersistentVolumeClaim y Pod

Después de haber importado su volumen, puede crear un PVC y un Pod que monte el PVC.

  1. El siguiente YAML crea un PVC y lo conecta a un pod que ejecuta el servidor web Nginx. Cópielo 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
    

    Reemplace lo siguiente:

    • STORAGE_CLASS : el nombre de la clase de almacenamiento del volumen persistente creado anteriormente. Por ejemplo, standard-rwo .
    • ACCESS_MODE : el modo de acceso del volumen. Para discos de Azure, use ReadWriteOnce . Para archivos de Azure, use ReadWriteMany .
    • VOLUME_CAPACITY : tamaño del volumen. Por ejemplo, 30Gi .
  2. Aplique el YAML a su clúster.

    kubectl apply -f nginx.yaml
    
  3. Comprueba el estado de tu instancia de Nginx con kubectl describe . La salida debe tener el STATUS En Running .

    kubectl describe pod web-server
    
  4. Para eliminar el Pod, utilice el comando kubectl delete .

    kubectl delete -f nginx.yaml
    

¿Qué sigue?