Compartir a través de


Creación y administración de volúmenes persistentes con Azure Blob Storage en Azure Kubernetes Service (AKS)

Si varios pods necesitan acceso simultáneo al mismo volumen de almacenamiento, puede usar Azure Blob Storage para conectarse mediante blobfuse o Network File System (NFS).

En este artículo se muestra cómo crear contenedores de Azure Blob Storage de forma dinámica y estática para su uso por varios pods en un clúster de Azure Kubernetes Service (AKS).

Prerrequisitos

  • El controlador CSI de Azure Blob Storage está habilitado en el clúster de AKS.

  • Para admitir una cuenta de almacenamiento de Azure DataLake Gen2 al usar el montaje blobfuse, debe hacer lo siguiente:

    • Para crear una cuenta de ADLS mediante el controlador en el aprovisionamiento dinámico, especifique isHnsEnabled: "true" en los parámetros de la clase de almacenamiento.
    • Para habilitar el acceso de blobfuse a una cuenta de ADLS en aprovisionamiento estático, debe especificar la opción de montaje --use-adls=true en el volumen persistente.
    • Si vas a habilitar una cuenta de almacenamiento con espacio de nombres jerárquico, se deben volver a montar los volúmenes persistentes existentes utilizando la opción de montaje --use-adls=true.
  • De forma predeterminada, la caché de blobfuse se encuentra en el /mnt directorio . Si la SKU de máquina virtual proporciona un disco temporal, el /mnt directorio se monta en el disco temporal. Sin embargo, si la SKU de VM no proporciona un disco temporal, el directorio /mnt se monta en el disco del sistema operativo; puede establecer la opción de montaje --tmp-path= para especificar un directorio de caché diferente.

Uso de clases de almacenamiento integradas para crear PV dinámicos con Azure Blob Storage

Se usa una clase de almacenamiento para definir cómo se crea un contenedor de Azure Blob Storage. En el grupo de recursos de nodo, se crea automáticamente una cuenta de almacenamiento para utilizarla con la clase de almacenamiento para guardar el contenedor de Azure Blob Storage. Cuando se usan controladores CSI de almacenamiento en AKS, hay dos clases StorageClasses integradas adicionales que usan los controladores CSI de Azure Blob Storage.

La directiva de recuperación de ambas clases de almacenamiento garantiza que el recurso compartido de Azure Blob Storage subyacente se elimine cuando se elimine el PV correspondiente. Las clases de almacenamiento también configuran el contenedor para que se pueda expandir de forma predeterminada, ya que el parámetro set allowVolumeExpansion se establece en true.

Nota:

No se admite la reducción de volúmenes persistentes.

Puede seleccionar una de las siguientes SKU de redundancia de almacenamiento de Azure para el parámetro skuname en la definición de clase de almacenamiento:

  • Standard_LRS: almacenamiento con redundancia local estándar
  • Premium_LRS: almacenamiento con redundancia local Premium
  • Standard_ZRS: almacenamiento con redundancia de zona
  • Premium_ZRS: almacenamiento con redundancia de zona prémium (ZRS)
  • Standard_GRS: almacenamiento con redundancia geográfica estándar
  • Standard_RAGRS: almacenamiento con redundancia geográfica con acceso de lectura estándar

Creación de clases de almacenamiento personalizadas para máquinas virtuales dinámicas con Azure Blob Storage

Las clases de almacenamiento predeterminadas son adecuadas para la mayoría de los escenarios. En algunos casos, es posible que quiera tener su propia clase de almacenamiento personalizada con sus propios parámetros. En esta sección, se proporcionan dos ejemplos: uno mediante el protocolo NFS y otro mediante blobfuse.

Ejemplo de clase de almacenamiento personalizado mediante el protocolo NFS

El manifiesto de este ejemplo monta un contenedor de Blob Storage mediante el protocolo NFS. Puede usarlo para agregar el tags parámetro .

  1. Cree un archivo denominado blob-nfs-sc.yaml y pegue el siguiente manifiesto de ejemplo:

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: azureblob-nfs-premium
    provisioner: blob.csi.azure.com
    parameters:
      protocol: nfs
      tags: environment=Development
    volumeBindingMode: Immediate
    allowVolumeExpansion: true
    mountOptions:
      - nconnect=4
    
  2. Cree la clase de almacenamiento mediante el kubectl apply comando :

    kubectl apply -f blob-nfs-sc.yaml
    

    La salida debería ser similar a la salida de ejemplo siguiente:

    storageclass.storage.k8s.io/blob-nfs-premium created
    

Ejemplo de clase de almacenamiento personalizada mediante blobfuse

El manifiesto de este ejemplo usa blobfuse y monta un contenedor de Blob Storage. Puede usarlo para actualizar el skuName parámetro .

  1. Cree un archivo denominado blobfuse-sc.yaml y pegue el siguiente manifiesto de ejemplo:

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: azureblob-fuse-premium
    provisioner: blob.csi.azure.com
    parameters:
      skuName: Standard_GRS  # available values: Standard_LRS, Premium_LRS, Standard_GRS, Standard_RAGRS
    reclaimPolicy: Delete
    volumeBindingMode: Immediate
    allowVolumeExpansion: true
    mountOptions:
      - -o allow_other
      - --file-cache-timeout-in-seconds=120
      - --use-attr-cache=true
      - --cancel-list-on-mount-seconds=10  # prevent billing charges on mounting
      - -o attr_timeout=120
      - -o entry_timeout=120
      - -o negative_timeout=120
      - --log-level=LOG_WARNING  # LOG_WARNING, LOG_INFO, LOG_DEBUG
      - --cache-size-mb=1000  # Default will be 80% of available memory, eviction will happen beyond that.
    
  2. Cree la clase de almacenamiento mediante el kubectl apply comando :

    kubectl apply -f blobfuse-sc.yaml
    

    La salida debería ser similar a la salida de ejemplo siguiente:

    storageclass.storage.k8s.io/blob-fuse-premium created
    

Parámetros de clase de almacenamiento para PVs dinámicos con Azure Blob Storage

En la tabla siguiente se incluyen parámetros que puede usar para definir una clase de almacenamiento personalizada para las reclamaciones de volumen persistente (PVC) con Azure Blob Storage.

Nombre Meaning Valores disponibles Obligatorio Valor predeterminado
skuName Especifique un tipo de cuenta de almacenamiento de Azure (alias: storageAccountType). Standard_LRS, Premium_LRS, , Standard_GRS, Standard_RAGRS No Standard_LRS
location Especifique una ubicación de Azure. eastus No Si está vacío, el controlador usa el mismo nombre de ubicación que el clúster actual.
resourceGroup Especifique un nombre de grupo de recursos de Azure. myResourceGroup No Si está vacío, el controlador usa el mismo nombre de grupo de recursos que el clúster actual.
storageAccount Especifique un nombre de cuenta de almacenamiento de Azure. storageAccountName No Cuando no se proporciona un nombre de cuenta de almacenamiento específico, el controlador busca una cuenta de almacenamiento adecuada que coincida con la configuración de la cuenta en el mismo grupo de recursos. Si no encuentra una cuenta de almacenamiento coincidente, crea una nueva. Sin embargo, si se especifica un nombre de cuenta de almacenamiento, dicha cuenta debe existir.
networkEndpointType Especifique el tipo de punto de conexión de red para la cuenta de almacenamiento creada por el controlador. Si se especifica privateEndpoint, se crea un punto de conexión privado para la cuenta de almacenamiento. En otros casos, se creará un punto de conexión de servicio para el protocolo NFS. privateEndpoint No Para un clúster de AKS, agregue el nombre del clúster de AKS al rol de Colaborador en el grupo de recursos que hospeda la VNet.
protocol Especifique el montaje de blobfuse o el montaje de NFSv3. fuse, nfs No fuse
containerName Especifique el nombre del contenedor (directorio) existente. container No Si está vacío, el controlador crea un nuevo nombre de contenedor, empezando por pvc-fuse para blobfuse o pvc-nfs para NFS v3.
containerNamePrefix Especifique el prefijo de directorio de Azure Storage creado por el controlador. mi Solo puede contener letras minúsculas, números, guiones y longitud debe tener menos de 21 caracteres. No
server Especifique el nombre de dominio de la cuenta de almacenamiento de Azure. Nombre de dominio DNS de la cuenta de almacenamiento existente, por ejemplo <storage-account>.blob.core.windows.NET. No Si está vacío, el controlador usa el nombre de dominio DNS predeterminado <storage-account>.blob.core.windows.NET u otra cuenta de almacenamiento en la nube soberana.
allowBlobPublicAccess Permitir o denegar el acceso público a todos los blobs o contenedores para la cuenta de almacenamiento creada por el controlador. true,false No false
storageEndpointSuffix Especifique el sufijo del punto de conexión de Azure Storage. core.windows.net No Si está vacío, el controlador usa el sufijo de punto de conexión de almacenamiento predeterminado según el entorno de nube.
tags Las etiquetas se crearían en una nueva cuenta de almacenamiento. Formato de etiqueta: 'foo=aaa,bar=bbb' No ""
matchTags Coincidencia de etiquetas cuando el controlador intenta encontrar una cuenta de almacenamiento adecuada. true,false No false
--- Los parámetros siguientes solo son para blobfuse. --- --- ---
subscriptionID Especifique el identificador de suscripción de Azure donde se creará el directorio de Blob Storage. Identificador de suscripción de Azure No Si no está vacío, se debe proporcionar resourceGroup.
storeAccountKey Especifique la clave de cuenta de almacén en el secreto de Kubernetes.

Nota:
false significa que el controlador usa la identidad de kubelet para obtener la clave de cuenta.
true,false No true
secretName Especifique el nombre del secreto para almacenar la clave de cuenta. No
secretNamespace Especifique el espacio de nombres del secreto para almacenar la clave de cuenta. default,kube-system, etc. No Espacio de nombres de PVC
isHnsEnabled Habilite Hierarchical namespace para la cuenta de almacenamiento de Azure Data Lake. true,false No false
--- Los parámetros siguientes solo son para el protocolo NFS. --- --- ---
mountPermissions Especifique los permisos de carpeta montada. El valor predeterminado es 0777. Si se establece en 0, el controlador no realizará chmod después del montaje. No 0777

Nota:

Si el controlador crea la cuenta de almacenamiento, solo tiene que especificar el networkEndpointType: privateEndpoint parámetro en la clase de almacenamiento. El controlador CSI crea el punto de conexión privado y la zona DNS privada (denominada privatelink.blob.core.windows.NET) junto con la cuenta. Si trae su propia cuenta de almacenamiento, debe crear el punto de conexión privado para la cuenta de almacenamiento. Si usa Azure Blob Storage en un clúster aislado de red, debe crear una clase de almacenamiento personalizada con "networkEndpointType: privateEndpoint". Puede usar el siguiente manifiesto de ejemplo como referencia:

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: blob-fuse
provisioner: blob.csi.azure.com
parameters:
  skuName: Premium_LRS  # available values: Standard_LRS, Premium_LRS, Standard_GRS, Standard_RAGRS, Standard_ZRS, Premium_ZRS
  protocol: fuse2
  networkEndpointType: privateEndpoint
reclaimPolicy: Delete
volumeBindingMode: Immediate
allowVolumeExpansion: true
mountOptions:
  - -o allow_other
  - --file-cache-timeout-in-seconds=120
  - --use-attr-cache=true
  - --cancel-list-on-mount-seconds=10  # prevent billing charges on mounting
  - -o attr_timeout=120
  - -o entry_timeout=120
  - -o negative_timeout=120
  - --log-level=LOG_WARNING  # LOG_WARNING, LOG_INFO, LOG_DEBUG
  - --cache-size-mb=1000  # Default will be 80% of available memory, eviction will happen beyond that.

Creación de una PVC con Azure Blob Storage

Una PVC utiliza el objeto de clase de almacenamiento para aprovisionar dinámicamente un Azure Blob Storage. Puede usar el manifiesto YAML de ejemplo de esta sección para crear una PVC con un tamaño de 5 GB y acceso ReadWriteMany. Para más información sobre los modos de acceso, consulte Modos de acceso PV de Kubernetes.

  1. Cree un archivo denominado blob-nfs-pvc.yaml y pegue el siguiente manifiesto YAML:

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: azure-blob-storage
    spec:
      accessModes:
      - ReadWriteMany
      storageClassName: azureblob-nfs-premium
      resources:
        requests:
          storage: 5Gi
    
  2. Cree el PVC mediante el kubectl create comando :

    kubectl create -f blob-nfs-pvc.yaml
    
  3. Vea el estado del PVC con el comando [kubectl get pvc][kubectl-get-pvc] :

    kubectl get pvc azure-blob-storage
    

    La salida debe ser similar al siguiente ejemplo, que muestra que la PVC está en estado Bound:

    NAME                 STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS                AGE
    azure-blob-storage   Bound    pvc-aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb   5Gi        RWX            azureblob-nfs-premium       92m
    

Uso de una PVC en un pod para montar Azure Blob Storage

El siguiente código de YAML crea un pod que usa la notificación de volumen persistente Azure-blob-storage para montar Azure Blob Storage en la ruta de acceso "/mnt/blob".

  1. Cree un archivo denominado blob-nfs-pv y pegue el siguiente manifiesto YAML. Asegúrese de que el claimName coincida con el PVC creado en el paso anterior.

    kind: Pod
    apiVersion: v1
    metadata:
      name: mypod
    spec:
      containers:
      - name: mypod
        image: mcr.microsoft.com/oss/nginx/nginx:1.17.3-alpine
        resources:
          requests:
            cpu: 100m
            memory: 128Mi
          limits:
            cpu: 250m
            memory: 256Mi
        volumeMounts:
        - mountPath: "/mnt/blob"
          name: volume
          readOnly: false
      volumes:
        - name: volume
          persistentVolumeClaim:
            claimName: azure-blob-storage
    
  2. Cree el pod mediante el kubectl apply comando :

    kubectl apply -f blob-nfs-pv.yaml
    
  3. Una vez que el pod se esté ejecutando correctamente, cree un nuevo archivo denominado test.txt con el siguiente comando:

    kubectl exec mypod -- touch /mnt/blob/test.txt
    
  4. Valide que el disco se monta correctamente mediante el siguiente comando para enumerar los archivos del directorio montado:

    kubectl exec mypod -- ls /mnt/blob
    

    La salida debe ser similar a la siguiente salida de ejemplo, que muestra el archivo test.txt que creó en Azure Blob Storage montado:

    test.txt
    

Uso de StatefulSet para administrar el ciclo de vida de un volumen con Azure Blob Storage

Para que un volumen de almacenamiento persista para la carga de trabajo, puede usar StatefulSet. Esto facilita la coincidencia de los volúmenes existentes con los nuevos pods que reemplazan a los que se han producido errores. En los ejemplos siguientes se muestra cómo configurar un StatefulSet para Blob Storage mediante el protocolo NFS o Blobfuse.

Nota:

Si usa el protocolo NFS, la identidad del plano de control del clúster de AKS (es decir, el nombre del clúster de AKS) debe añadirse al rol de Colaborador en la VNet y el grupo de seguridad de red.

  1. Cree un archivo denominado Azure-blob-nfs-ss.yaml y pegue el siguiente manifiesto YAML:

    apiVersion: apps/v1
    kind: StatefulSet
    metadata:
      name: statefulset-blob-nfs
      labels:
        app: nginx
    spec:
      serviceName: statefulset-blob-nfs
      replicas: 1
      template:
        metadata:
          labels:
            app: nginx
        spec:
          nodeSelector:
            "kubernetes.io/os": linux
          containers:
            - name: statefulset-blob-nfs
              image: mcr.microsoft.com/azurelinux/base/nginx:1.25
              volumeMounts:
                - name: persistent-storage
                  mountPath: /mnt/blob
      updateStrategy:
        type: RollingUpdate
      selector:
        matchLabels:
          app: nginx
      volumeClaimTemplates:
        - metadata:
            name: persistent-storage
          spec:
            storageClassName: azureblob-nfs-premium
            accessModes: ["ReadWriteMany"]
            resources:
              requests:
                storage: 100Gi
    
  2. Cree el StatefulSet con el comando kubectl create.

    kubectl create -f azure-blob-nfs-ss.yaml
    

Creación de un PV estático con Azure Blob Storage

En las secciones siguientes se proporcionan instrucciones para crear un PV estático con Azure Blob Storage. Un PV estático es un volumen persistente que un administrador crea manualmente. Este PV está disponible para su uso por parte de los pods del clúster. Para usar un PV estático, cree un PVC que haga referencia al PV y, a continuación, cree un pod que haga referencia al PVC.

Parámetros de clase de almacenamiento para PVs estáticos con Azure Blob Storage

En la tabla siguiente se incluyen parámetros que puede usar para definir una clase de almacenamiento personalizada para los PVC estáticos con Azure Blob Storage:

Nombre Meaning Valores disponibles Obligatorio Valor predeterminado
volumeHandle Especifique un valor que el controlador puede usar para identificar de forma única el contenedor de blobs de almacenamiento en el clúster. Una manera recomendada de generar un valor único es combinar el nombre de la cuenta de almacenamiento único global y el nombre del contenedor: {account-name}_{container-name}.
Nota: Los #, / caracteres están reservados para uso interno y no se pueden usar en un manejador de volumen.
volumeAttributes.resourceGroup Especifique el nombre del grupo de recursos de Azure. myResourceGroup No Si está vacío, el controlador usa el mismo nombre de grupo de recursos que el clúster actual.
volumeAttributes.storageAccount Especifique un nombre de la cuenta de almacenamiento de Azure existente. storageAccountName
volumeAttributes.containerName Especifique el nombre del contenedor existente. container
volumeAttributes.protocol Especifique el montaje de blobfuse o el montaje de NFS v3. fuse, nfs No fuse
--- Los parámetros siguientes solo son para blobfuse. --- --- ---
volumeAttributes.secretName Nombre secreto que almacena el nombre y la clave de la cuenta de almacenamiento (solo se aplica a SMB). No
volumeAttributes.secretNamespace Especifique el espacio de nombres del secreto para almacenar la clave de cuenta. default No Espacio de nombres de PVC
nodeStageSecretRef.name Especifique el nombre del secreto que almacena uno de los siguientes elementos:
azurestorageaccountkey
azurestorageaccountsastoken
msisecret
azurestoragespnclientsecret.
No Nombre del secreto de Kubernetes existente
nodeStageSecretRef.namespace Especifique el espacio de nombres del secreto. Espacio de nombres de Kubernetes
--- Los parámetros siguientes solo son para el protocolo NFS. --- --- ---
volumeAttributes.mountPermissions Especifique los permisos de carpeta montada. 0777 No
--- Los parámetros siguientes solo son para la configuración de red virtual NFS. --- --- ---
vnetResourceGroup Especifique el grupo de recursos de red virtual que hospeda la red virtual. myResourceGroup No Si está vacío, el controlador usa el vnetResourceGroup valor especificado en el archivo de configuración de la nube de Azure.
vnetName Especifique el nombre de la red virtual. aksVNet No Si está vacío, el controlador usa el vnetName valor especificado en el archivo de configuración de la nube de Azure.
subnetName Especifique el nombre de subred existente del nodo del agente. aksSubnet No Si está vacío, el controlador actualizará todas las subredes de la red virtual del clúster.
--- Los parámetros siguientes solo son para la característica: blobfuse
Autenticación de Identidad Administrada y Nombre Principal de Servicio
--- --- ---
volumeAttributes.AzureStorageAuthType Especifique el tipo de autenticación. Key, SAS, , MSI, SPN No Key
volumeAttributes.AzureStorageIdentityClientID Especifique el identificador de cliente de identidad. No
volumeAttributes.AzureStorageIdentityResourceID Especifique el identificador de recurso de identidad. No
volumeAttributes.MSIEndpoint Especifique el punto de conexión MSI. No
volumeAttributes.AzureStorageSPNClientID Especifique el identificador de cliente del Principal de Servicio de Azure (SPN). No
volumeAttributes.AzureStorageSPNTenantID Especifique el identificador de inquilino de Azure SPN. No
volumeAttributes.AzureStorageAADEndpoint Especifique el punto de conexión de Microsoft Entra. No
--- Los parámetros siguientes solo son para la característica: blobfuse lee la clave de cuenta o el token de SAS del almacén de claves. --- --- ---
volumeAttributes.keyVaultURL Especifique el nombre DNS de Azure Key Vault. {vault-name}.vault.Azure.NET No
volumeAttributes.keyVaultSecretName Especifique el nombre del secreto de Azure Key Vault. Nombre del secreto de Azure Key Vault existente. No
volumeAttributes.keyVaultSecretVersion Versión del secreto de Azure Key Vault. Versión existente No Si está vacío, el controlador usa la versión actual.

Crear un contenedor de almacenamiento de blobs

Al crear un recurso de Azure Blob Storage para su uso con AKS, puede crear el recurso en el grupo de recursos del nodo. Este enfoque permite que el clúster de AKS acceda y administre el recurso de Blob Storage.

  1. Para obtener el nombre del grupo de recursos del nodo de su clúster de AKS, use el comando az aks show con el parámetro --query nodeResourceGroup.

    az aks show --resource-group myResourceGroup --name myAKSCluster --query nodeResourceGroup -o tsv
    

    La salida del comando es similar al ejemplo siguiente:

    MC_myResourceGroup_myAKSCluster_eastus
    
  2. Cree un contenedor para almacenar blobs siguiendo los pasos descritos en Administración del almacenamiento de blobs para autorizar el acceso y, a continuación, crear el contenedor.

Montar volumen

En esta sección, montará el volumen persistente mediante el protocolo NFS o Blobfuse.

El montaje de Blob Storage mediante el protocolo NFS v3 no se autentica mediante una clave de cuenta. El clúster de AKS necesita residir en la misma red virtual que el nodo del agente o en la red virtual emparejada. La única manera de proteger los datos de la cuenta de almacenamiento es mediante una red virtual y otra configuración de seguridad de red. Para obtener más información sobre cómo configurar el acceso NFS a la cuenta de almacenamiento, consulte Montaje de Blob Storage mediante el protocolo Network File System (NFS) 3.0.

En el ejemplo siguiente se muestra cómo montar un contenedor de Blob Storage como un volumen persistente mediante el protocolo NFS.

  1. Cree un archivo denominado pv-blob-nfs.yaml y pegue el siguiente código YAML. En storageClass, actualice resourceGroup, storageAccounty containerName.

    Nota:

    El valor de volumeHandle debe ser un valor volumeID único para cada contenedor de Blob Storage idéntico en el clúster. El carácter # y / están reservados para uso interno y no se pueden usar.

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      annotations:
        pv.kubernetes.io/provisioned-by: blob.csi.azure.com
      name: pv-blob
    spec:
      capacity:
        storage: 1Pi
      accessModes:
        - ReadWriteMany
      persistentVolumeReclaimPolicy: Retain  # If set as "Delete" container would be removed after pvc deletion
      storageClassName: azureblob-nfs-premium
      mountOptions:
        - nconnect=4
      csi:
        driver: blob.csi.azure.com
        # make sure volumeid is unique for every identical storage blob container in the cluster
        # character `#` and `/` are reserved for internal use and cannot be used in volumehandle
        volumeHandle: account-name_container-name
        volumeAttributes:
          resourceGroup: resourceGroupName
          storageAccount: storageAccountName
          containerName: containerName
          protocol: nfs
    

    Nota:

    Aunque el atributo de capacidad de la API de Kubernetes es obligatorio, este valor no lo usa el controlador CSI de Azure Blob Storage porque puede escribir datos de forma flexible hasta alcanzar el límite de capacidad de la cuenta de almacenamiento. El valor del capacity atributo solo se usa para la coincidencia de tamaño entre PVs y PVC. Se recomienda usar un valor alto ficticio. El pod ve un volumen montado con un tamaño ficticio de 5 Petabytes.

  2. Cree el PV mediante el comando kubectl create:

    kubectl create -f pv-blob-nfs.yaml
    
  3. Cree un archivo denominado pvc-blob-nfs.yaml y pegue el siguiente código YAML. En volumeName, actualice el valor para que coincida con el nombre del PV creado en el paso anterior.

    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: pvc-blob
    spec:
      accessModes:
        - ReadWriteMany
      resources:
        requests:
          storage: 10Gi
      volumeName: pv-blob
      storageClassName: azureblob-nfs-premium
    
  4. Cree el PVC mediante el kubectl create comando :

    kubectl create -f pvc-blob-nfs.yaml
    

Utiliza el volumen persistente

El siguiente código YAML crea un pod que usa el PV o PVC denominado pvc-blob creado anteriormente para montar Azure Blob Storage en la ruta /mnt/blob.

  1. Cree un archivo denominado nginx-pod-blob.yaml y pegue el siguiente manifiesto YAML. Asegúrese de que el claimName coincida con el PVC creado en el paso anterior al crear un PV para NFS o Blobfuse.

    kind: Pod
    apiVersion: v1
    metadata:
      name: nginx-blob
    spec:
      nodeSelector:
        "kubernetes.io/os": linux
      containers:
        - image: mcr.microsoft.com/oss/nginx/nginx:1.17.3-alpine
          name: nginx-blob
          volumeMounts:
            - name: blob01
              mountPath: "/mnt/blob"
              readOnly: false
      volumes:
        - name: blob01
          persistentVolumeClaim:
            claimName: pvc-blob
    
  2. Cree el pod y monte el PVC usando el comando kubectl create.

    kubectl create -f nginx-pod-blob.yaml
    
  3. Cree una sesión de shell interactiva con el pod para comprobar que Blob Storage se monta correctamente mediante el siguiente kubectl exec comando:

    kubectl exec -it nginx-blob -- df -h
    

    La salida debe ser similar a la siguiente salida de ejemplo, que muestra que Blob Storage se monta en la ruta /mnt/blob:

    Filesystem      Size  Used Avail Use% Mounted on
    ...
    blobfuse         14G   41M   13G   1% /mnt/blob
    ...