Creación manual y uso de un volumen con un recurso compartido de Azure Files en Azure Kubernetes Service (AKS)
Un volumen persistente representa un fragmento de almacenamiento aprovisionado para su uso con pods de Kubernetes. Puede usar un volumen persistente con uno o varios pods; también puede aprovisionarlo de manera dinámica o estática. Si varios pods necesitan acceso simultáneo al mismo volumen de almacenamiento, puede usar Azure Files para conectarse mediante el protocolo Bloque de mensajes del servidor (SMB). Este artículo muestra cómo crear dinámicamente un recurso compartido de archivos de Azure para que lo usen varios pods en un clúster de Azure Kubernetes Service (AKS).
En este artículo aprenderá a:
- Trabaje con un volumen persistente dinámico (PV) mediante la instalación del controlador Container Storage Interface (CSI) y la creación dinámica de uno o varios recursos compartidos de archivos de Azure para asociarse a un pod.
- Trabaje con un PV estático mediante la creación de uno o varios recursos compartidos de archivos de Azure, o use uno existente y conéctelo a un pod.
Para más información sobre los volúmenes de Kubernetes, consulte Opciones de almacenamiento para aplicaciones en AKS.
Antes de empezar
- Debe tener una cuenta de almacenamiento de Azure.
- Asegúrese de que tiene instalada y configurada la versión 2.0.59 de la CLI de Azure o una versión posterior. Ejecute
az --version
para encontrar la versión. Si necesita instalarla o actualizarla, vea Instalación de la CLI de Azure. - Al elegir entre recursos compartidos de archivos Estándar y Premium, es importante comprender el modelo de aprovisionamiento t los requisitos del patrón de uso esperado que tiene previsto ejecutar en Azure Files. Para más información, consulte Elección de un nivel de rendimiento de Azure Files en función de los patrones de uso.
Aprovisionar un volumen dinámicamente
En esta sección, se proporcionan instrucciones para los administradores de clústeres que desean aprovisionar uno o varios volúmenes persistentes que incluyen detalles de uno o varios recursos compartidos en Azure Files. Una notificación de volumen persistente (PVC) usa el objeto de clase de almacenamiento para aprovisionar de forma dinámica un recurso compartido de archivos de Azure Files.
Parámetros de clase de almacenamiento para PersistentVolumes dinámicos
En la siguiente tabla se incluyen parámetros que puede usar para definir una clase de almacenamiento personalizada para PersistentVolumeClaim.
Nombre | Significado | Valor disponible | Mandatory | Default value |
---|---|---|---|---|
accountAccessTier | Nivel de acceso para la cuenta de almacenamiento | La cuenta estándar puede elegir Hot o Cool , y la cuenta Premium solo puede elegir Premium . |
No | Vacía. Use la configuración predeterminada para los diferentes tipos de cuenta de almacenamiento. |
accountQuota | Limita la cuota de una cuenta. Puede especificar una cuota máxima en GB (102400 GB de forma predeterminada). Si la cuenta supera la cuota especificada, el controlador omite la selección de la cuenta. | No | 102400 |
|
allowBlobPublicAccess | Permitir o denegar el acceso público a todos los blobs o contenedores para la cuenta de almacenamiento creada por el controlador. | true o false |
No | false |
disableDeleteRetentionPolicy | Especifique si deshabilita DeleteRetentionPolicy para la cuenta de almacenamiento creada por el controlador. | true o false |
No | false |
enableLargeFileShares | Especifique si se va a usar una cuenta de almacenamiento con recursos compartidos de archivos grandes habilitados o no. Si esta marca se establece en true y no existe una cuenta de almacenamiento con recursos compartidos de archivos grandes habilitados, se creará una. Esta marca se debe usar con la SKU Estándar, ya que las cuentas de almacenamiento creadas con la SKU Premium tienen la opción largeFileShares habilitada de forma predeterminada. |
true o false |
No | false |
folderName | Especifique el nombre de carpeta en el recurso compartido de archivos de Azure. | Nombre de carpeta existente en el recurso compartido de archivos de Azure. | No | Si el nombre de carpeta no existe en el recurso compartido de archivos, se produce un error en el montaje. |
getLatestAccount | Determina si se obtiene la clave de cuenta más reciente en función de la hora de creación. Este controlador obtiene la primera clave de forma predeterminada. | true o false |
No | false |
ubicación | Especifique la región de Azure de la cuenta de almacenamiento de Azure. | Por ejemplo, eastus . |
No | Si está vacío, el controlador usa el mismo nombre de ubicación que el clúster de AKS actual. |
matchTags | Coincidencia de etiquetas cuando el controlador intenta encontrar una cuenta de almacenamiento adecuada. | true o false |
No | false |
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 crea un punto de conexión de servicio de forma predeterminada. |
"",privateEndpoint |
No | "" |
protocol | Especifique el protocolo de recurso compartido de archivos. | smb , nfs |
No | smb |
requireInfraEncryption | Especifique si el servicio aplica o no una capa secundaria de cifrado con claves administradas por la plataforma para los datos en reposo para la cuenta de almacenamiento creada por el controlador. | true o false |
No | false |
resourceGroup | Especifique el grupo de recursos para los discos de Azure. | Nombre del grupo de recursos existente | No | Si está vacío, el controlador usa el mismo nombre de grupo de recursos que el clúster de AKS actual. |
selectRandomMatchingAccount | Determina si se va a seleccionar aleatoriamente una cuenta coincidente. De manera predeterminada, el controlador siempre selecciona la primera cuenta coincidente en orden alfabético (Nota: Este controlador usa la caché de búsqueda de cuentas, lo que da lugar a una distribución desigual de la creación de archivos en varias cuentas). | true o false |
No | false |
server | Especifique la dirección del servidor de la cuenta de almacenamiento de Azure. | Dirección del servidor existente, por ejemplo accountname.privatelink.file.core.windows.net . |
No | Si está vacío, el controlador usa el accountname.file.core.windows.net predeterminado u otra dirección de la cuenta en la nube soberana. |
shareAccessTier | Nivel de acceso para el recurso compartido de archivos | La cuenta de uso general v2 puede elegir entre TransactionOptimized (valor predeterminado), Hot y Cool . Tipo de cuenta de almacenamiento Prémium solo para recursos compartidos de archivos. |
No | Vacía. Use la configuración predeterminada para los diferentes tipos de cuenta de almacenamiento. |
shareName | Especifique el nombre del recurso compartido de archivos de Azure. | Nombre de recurso compartido de archivos de Azure existente o nuevo. | No | Si está vacío, el controlador genera un nombre de recurso compartido de archivos de Azure. |
shareNamePrefix | Especifique el prefijo de nombre del recurso compartido de archivos de Azure creado por el controlador. | El nombre del recurso compartido solo puede contener letras minúsculas, números, guiones y la longitud debe ser inferior a 21 caracteres. | No | |
skuName | Tipo de cuenta de almacenamiento de Azure Files (alias: storageAccountType ) |
Standard_LRS , Standard_ZRS , Standard_GRS , Standard_RAGRS , Standard_RAGZRS ,Premium_LRS , Premium_ZRS |
No | StandardSSD_LRS El tamaño mínimo del recurso compartido de archivos para el tipo de cuenta Premium es de 100 GB. El tipo de cuenta ZRS se admite en regiones limitadas. El recurso compartido de archivos NFS solo admite el tipo de cuenta Premium. |
StorageAccount | Especifique un nombre de cuenta de almacenamiento de Azure. | storageAccountName | No- | Cuando no se proporcione un nombre de cuenta de almacenamiento específico, el controlador buscará una cuenta de almacenamiento adecuada que coincida con la configuración de la cuenta que se encuentre en el mismo grupo de recursos. Si no encuentra una cuenta de almacenamiento coincidente, la creará. Sin embargo, si se especifica un nombre de cuenta de almacenamiento, dicha cuenta debe existir. |
storageEndpointSuffix | Especifique el sufijo del punto de conexión de Azure Storage. | core.windows.net , core.chinacloudapi.cn , etc. |
No | Si está vacío, el controlador usa el sufijo de punto de conexión de almacenamiento predeterminado según el entorno de nube. Por ejemplo, core.windows.net . |
etiquetas | Las etiquetas se crean en una nueva cuenta de almacenamiento. | Formato de etiqueta: 'foo=aaa,bar=bbb' | No | "" |
--- | Los parámetros siguientes solo son para el protocolo SMB | --- | --- | |
subscriptionID | Especifique el identificador de suscripción de Azure donde se crea el recurso compartido de archivos de Azure. | Identificador de suscripción de Azure | No | Si no está vacío, se debe proporcionar resourceGroup . |
storeAccountKey | Especifique si quiere almacenar la clave de cuenta en el secreto de Kubernetes. | true o false false significa que el controlador usa la identidad de kubelet para obtener la clave de cuenta. |
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. Nota: Si secretNamespace no se especifica, el secreto se crea en el mismo espacio de nombres que el pod. |
default ,kube-system , etc. |
No | Espacio de nombres PVC, por ejemplo csi.storage.k8s.io/pvc/namespace |
useDataPlaneAPI | Especifique si se va a usar la API del plano de datos para crear, eliminar o cambiar el tamaño del recurso compartido de archivos, lo que podría resolver el problema de limitación de la API de SRP, ya que la API del plano de datos casi no tiene ningún límite. No obstante, se producirá un error cuando exista una configuración de firewall o red virtual en la cuenta de almacenamiento. | true o false |
No | false |
--- | Los parámetros siguientes solo son para el protocolo NFS | --- | --- | |
mountPermissions | Permisos de carpeta montada. El valor predeterminado es 0777 . Si se establece en 0 , el controlador no realiza chmod después del montaje |
0777 |
No | |
rootSquashType | Especifique el comportamiento de root squashing en el recurso compartido. El valor predeterminado es NoRootSquash . |
AllSquash , NoRootSquash , RootSquash |
No | |
--- | Los parámetros siguientes solo son para la configuración de red virtual. Por ejemplo, NFS, punto de conexión privado | --- | --- | |
fsGroupChangePolicy | Indica cómo el controlador cambia la propiedad del volumen. Se omite el pod securityContext.fsGroupChangePolicy . |
OnRootMismatch (predeterminado), Always , None |
No | OnRootMismatch |
subnetName | Nombre de subred | Nombre de subred existente del nodo del agente. | No | Si está vacío, el controlador usa el valor subnetName en el archivo de configuración de la nube de Azure. |
vnetName | Nombre de la red virtual | Nombre de la red virtual existente. | No | Si está vacío, el controlador usa el valor vnetName en el archivo de configuración de la nube de Azure. |
vnetResourceGroup | Especifique el grupo de recursos de red virtual donde se define la red virtual. | Nombre del grupo de recursos existente. | No | Si está vacío, el controlador usa el valor vnetResourceGroup en el archivo de configuración de la nube de Azure. |
Creación de una clase de almacenamiento
Las clases de almacenamiento definen cómo crear un recurso compartido de archivos de Azure. En el grupo de recursos node, se crea automáticamente una cuenta de almacenamiento para utilizarla con la clase de almacenamiento donde van a guardarse los recursos compartidos de archivos de Azure Files. Seleccione uno de los siguientes SKU de redundancia de Azure Storage para skuName
:
Standard_LRS
: almacenamiento con redundancia local estándar (LRS)Standard_GRS
: almacenamiento con redundancia geográfica estándar (GRS)Standard_ZRS
: almacenamiento con redundancia de zona (ZRS)Standard_RAGRS
: almacenamiento con redundancia geográfica con acceso de lectura (RA-GRS) estándarPremium_LRS
: almacenamiento con redundancia local (LRS) PremiumPremium_ZRS
: almacenamiento con redundancia de zona (ZRS) Premium
Nota:
El recurso compartido de archivos premium mínimo es de 100 GB.
Para más información sobre las clases de almacenamiento de Kubernetes para Azure Files, consulte las clases de almacenamiento de Kubernetes.
Cree un archivo denominado
azure-file-sc.yaml
y cópielo en el ejemplo siguiente de manifiesto. Para más información sobremountOptions
, consulte la sección Opciones de montaje.kind: StorageClass apiVersion: storage.k8s.io/v1 metadata: name: my-azurefile provisioner: file.csi.azure.com # replace with "kubernetes.io/azure-file" if aks version is less than 1.21 allowVolumeExpansion: true mountOptions: - dir_mode=0777 - file_mode=0777 - uid=0 - gid=0 - mfsymlinks - cache=strict - actimeo=30 - nobrl # disable sending byte range lock requests to the server and for applications which have challenges with posix locks parameters: skuName: Premium_LRS
Cree la clase de almacenamiento con el comando
kubectl apply
.kubectl apply -f azure-file-sc.yaml
Creación de una notificación de volumen persistente
Una notificación de volumen persistente (PVC) usa el objeto de clase de almacenamiento para aprovisionar de forma dinámica un recurso compartido de archivos de Azure. Puede usar el siguiente código de YAML para crear una notificación de volumen persistente con un tamaño de 100 GB y con acceso ReadWriteMany. Para más información sobre los modos de acceso, consultevolumen persistente de Kubernetes.
Cree un archivo denominado
azure-file-pvc.yaml
y cópielo en el siguiente código YAML. Asegúrese de questorageClassName
coincide con la clase de almacenamiento que ha creado en el paso anterior.apiVersion: v1 kind: PersistentVolumeClaim metadata: name: my-azurefile spec: accessModes: - ReadWriteMany storageClassName: my-azurefile resources: requests: storage: 100Gi
Nota
Si usa el SKU
Premium_LRS
para la clase de almacenamiento, el valor mínimo destorage
debe ser100Gi
.Cree la notificación del volumen persistente con el comando
kubectl apply
.kubectl apply -f azure-file-pvc.yaml
Después de completarse, se creará el recurso compartido de archivos. También se crea un secreto de Kubernetes que incluye las credenciales y la información de conexión. Puede usar el comando
kubectl get
para ver el estado de la PVC:kubectl get pvc my-azurefile
La salida del comando es similar al ejemplo siguiente:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE my-azurefile Bound pvc-8436e62e-a0d9-11e5-8521-5a8664dc0477 100Gi RWX my-azurefile 5m
Uso del volumen persistente
El siguiente código de YAML crea un pod que utiliza la notificación de volumen persistente my-azurefile para montar el recurso compartido de archivos de Azure Files en la ruta de acceso /mnt/azure. Para los contenedores de Windows Server, especifique un elemento mountPath
con la convención de ruta de acceso de Windows, como "D:" .
Cree un archivo denominado
azure-pvc-files.yaml
y cópielo en el siguiente código YAML. Asegúrese de queclaimName
coincide con la clase PVC creada en el paso anterior.kind: Pod apiVersion: v1 metadata: name: mypod spec: containers: - name: mypod image: mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine resources: requests: cpu: 100m memory: 128Mi limits: cpu: 250m memory: 256Mi volumeMounts: - mountPath: /mnt/azure name: volume readOnly: false volumes: - name: volume persistentVolumeClaim: claimName: my-azurefile
Cree el pod mediante el comando
kubectl apply
.kubectl apply -f azure-pvc-files.yaml
Ahora tiene un pod en ejecución con el recurso compartido de archivos de Azure Files montado en el directorio /mnt/azure. Esta configuración se puede ver al inspeccionar el pod mediante el comando
kubectl describe
. La siguiente salida de ejemplo condensada muestra el volumen montado en el contenedor.Containers: mypod: Container ID: docker://053bc9c0df72232d755aa040bfba8b533fa696b123876108dec400e364d2523e Image: mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine Image ID: docker-pullable://nginx@sha256:d85914d547a6c92faa39ce7058bd7529baacab7e0cd4255442b04577c4d1f424 State: Running Started: Fri, 01 Mar 2019 23:56:16 +0000 Ready: True Mounts: /mnt/azure from volume (rw) /var/run/secrets/kubernetes.io/serviceaccount from default-token-8rv4z (ro) [...] Volumes: volume: Type: PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace) ClaimName: my-azurefile ReadOnly: false [...]
Opciones de montaje
El valor predeterminado de fileMode
y dirMode
es 0777 para Kubernetes 1.13.0 y versiones posteriores. Si crea dinámicamente el volumen persistente con una clase de almacenamiento, puede especificar las opciones de montaje en el objeto de la clase de almacenamiento. Para más información, consulte Opciones de montaje. En el ejemplo siguiente se establece 0777:
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
name: my-azurefile
provisioner: file.csi.azure.com # replace with "kubernetes.io/azure-file" if aks version is less than 1.21
allowVolumeExpansion: true
mountOptions:
- dir_mode=0777
- file_mode=0777
- uid=0
- gid=0
- mfsymlinks
- cache=strict
- actimeo=30
- nobrl # disable sending byte range lock requests to the server and for applications which have challenges with posix locks
parameters:
skuName: Premium_LRS
Uso de etiquetas de Azure
Para obtener más información sobre el uso de etiquetas de Azure, consulte Uso de etiquetas de Azure en Azure Kubernetes Service (AKS).
Aprovisionar un volumen estáticamente
En esta sección se proporcionan instrucciones para los administradores de clústeres que desean crear uno o varios volúmenes persistentes que incluyan detalles de un recurso compartido de Azure Files existente para usarlo con una carga de trabajo.
Parámetros de aprovisionamiento estáticos para PersistentVolume
En la siguiente tabla se incluyen parámetros que se pueden usar para definir PersistentVolume.
Nombre | Significado | Valor disponible | Mandatory | Valor predeterminado |
---|---|---|---|---|
volumeAttributes.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. |
volumeAttributes.storageAccount | Especifique un nombre de la cuenta de almacenamiento de Azure existente. | storageAccountName | Yes | |
volumeAttributes.shareName | Especifique un nombre de recurso compartido de archivos. | fileShareName | Sí | |
volumeAttributes.folderName | Especifique un nombre de carpeta en el recurso compartido de archivos de Azure. | folderName | No | Si el nombre de carpeta no existe en el recurso compartido de archivos, se producirá un error en el montaje. |
volumeAttributes.protocol | Especifique el protocolo de recurso compartido de archivos. | smb , nfs |
No | smb |
volumeAttributes.server | Especificación de la dirección del servidor de la cuenta de almacenamiento de Azure | Dirección del servidor existente, por ejemplo accountname.privatelink.file.core.windows.net . |
No | Si está vacío, el controlador usa el accountname.file.core.windows.net predeterminado u otra dirección de la cuenta en la nube soberana. |
--- | Los parámetros siguientes solo son para el protocolo SMB | --- | --- | --- |
volumeAttributes.secretName | Especifique un nombre secreto que almacene el nombre y la clave de la cuenta de almacenamiento. | No | ||
volumeAttributes.secretNamespace | Especifique un espacio de nombres secreto. | default ,kube-system , etc. |
No | Espacio de nombres PVC (csi.storage.k8s.io/pvc/namespace ) |
nodeStageSecretRef.name | Especifique un nombre secreto que almacene el nombre y la clave de la cuenta de almacenamiento. | Nombre secreto existente. | No | Si está vacío, el controlador usa la identidad de kubelet para obtener la clave de cuenta. |
nodeStageSecretRef.namespace | Especifique un espacio de nombres secreto. | Espacio de nombres de Kubernetes | No | |
--- | Los parámetros siguientes solo son para el protocolo NFS | --- | --- | --- |
volumeAttributes.fsGroupChangePolicy | Indica cómo cambia el controlador la propiedad de un volumen. Se omite el pod securityContext.fsGroupChangePolicy . |
OnRootMismatch (predeterminado), Always , None |
No | OnRootMismatch |
volumeAttributes.mountPermissions | Especifique los permisos de carpeta montada. El valor predeterminado es 0777 . |
No |
Creación de un recurso compartido de archivos de Azure
Para poder utilizar un recurso compartido de archivos de Azure Files como volumen de Kubernetes, es preciso crear una cuenta de Azure Storage y el recurso compartido de archivos.
Obtenga el nombre del grupo de recursos mediante 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
Cree una cuenta de almacenamiento mediante el comando
az storage account create
con el parámetro--sku
. El siguiente comando crea una cuenta de almacenamiento con el SKUStandard_LRS
. Asegúrese de reemplazar los siguientes marcadores de posición:myAKSStorageAccount
con el nombre de la cuenta de almacenamientonodeResourceGroupName
con el nombre del grupo de recursos en el que se hospedan los nodos del clúster de AKSlocation
con el nombre de la región en la que se va a crear el recurso. Debe ser la misma región que los nodos del clúster de AKS.
az storage account create -n myAKSStorageAccount -g nodeResourceGroupName -l location --sku Standard_LRS
Exporte la cadena de conexión como una variable de entorno mediante el siguiente comando, que se usa para crear el recurso compartido de archivos.
export AZURE_STORAGE_CONNECTION_STRING=$(az storage account show-connection-string -n storageAccountName -g resourceGroupName -o tsv)
Cree el recurso compartido de archivos mediante la ejecución del comando
az storage share create
. Asegúrese de reemplazarshareName
por el nombre del recurso compartido.az storage share create -n shareName --connection-string $AZURE_STORAGE_CONNECTION_STRING
Con el uso del siguiente comando, exporte la clave de la cuenta de almacenamiento como una variable de entorno.
STORAGE_KEY=$(az storage account keys list --resource-group nodeResourceGroupName --account-name myAKSStorageAccount --query "[0].value" -o tsv)
Imprima el nombre y la clave de la cuenta de almacenamiento mediante el siguiente comando. Copie esta información, ya que necesita estos valores al crear el volumen de Kubernetes.
echo Storage account key: $STORAGE_KEY
Creación de un secreto de Kubernetes
Kubernetes necesita credenciales para acceder al recurso compartido de archivos creado en el paso anterior. Estas credenciales se almacenan en un secreto de Kubernetes, al que se hace referencia al crear un pod de Kubernetes.
Cree el secreto mediante el comando
kubectl create secret
. En el ejemplo siguiente se crea un secreto denominado azure-secret y rellena los valores de azurestorageaccountname y azurestorageaccountkey en el paso anterior. Para usar una cuenta de almacenamiento de Azure existente, proporcione su nombre y su clave.kubectl create secret generic azure-secret --from-literal=azurestorageaccountname=myAKSStorageAccount --from-literal=azurestorageaccountkey=$STORAGE_KEY
Montaje de un recurso compartido de archivos como volumen persistente
Cree un archivo llamado
azurefiles-pv.yaml
y copie en él el siguiente contenido. Encsi
, actualiceresourceGroup
,volumeHandle
yshareName
. En el caso de las opciones de montaje, el valor predeterminado defileMode
ydirMode
es 0777.apiVersion: v1 kind: PersistentVolume metadata: annotations: pv.kubernetes.io/provisioned-by: file.csi.azure.com name: azurefile spec: capacity: storage: 5Gi accessModes: - ReadWriteMany persistentVolumeReclaimPolicy: Retain storageClassName: azurefile-csi csi: driver: file.csi.azure.com volumeHandle: "{resource-group-name}#{account-name}#{file-share-name}" # make sure this volumeid is unique for every identical share in the cluster volumeAttributes: resourceGroup: resourceGroupName # optional, only set this when storage account is not in the same resource group as node shareName: aksshare nodeStageSecretRef: name: azure-secret namespace: default mountOptions: - dir_mode=0777 - file_mode=0777 - uid=0 - gid=0 - mfsymlinks - cache=strict - nosharesock - nobrl # disable sending byte range lock requests to the server and for applications which have challenges with posix locks
Cree la notificación del volumen persistente con el comando
kubectl create
.kubectl create -f azurefiles-pv.yaml
Cree un nuevo archivo denominado azurefiles-mount-options-pvc.yaml y copie el siguiente contenido.
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: azurefile spec: accessModes: - ReadWriteMany storageClassName: azurefile-csi volumeName: azurefile resources: requests: storage: 5Gi
Con el comando
kubectl apply
, cree PersistentVolumeClaim.kubectl apply -f azurefiles-mount-options-pvc.yaml
Compruebe que PersistentVolumeClaim se haya creado y enlazado al objeto PersistentVolume mediante el comando
kubectl get
.kubectl get pvc azurefile
La salida del comando es similar al ejemplo siguiente:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE azurefile Bound azurefile 5Gi RWX azurefile 5s
Actualice la especificación del contenedor para hacer referencia al objeto PersistentVolumeClaim y al pod en el archivo YAML. Por ejemplo:
... volumes: - name: azure persistentVolumeClaim: claimName: azurefile
No se puede actualizar una especificación de pod. Debe eliminar el pod mediante el comando
kubectl delete
y volver a crearlo mediante el comandokubectl apply
.kubectl delete pod mypod kubectl apply -f azure-files-pod.yaml
Montaje de un recurso compartido de archivos como volumen insertado
Nota:
Para evitar problemas de rendimiento, se recomienda usar un volumen persistente en lugar de un volumen insertado cuando numerosos pods accedan al mismo recurso compartido de archivos. El volumen insertado solo puede acceder a secretos en el mismo espacio de nombres que el pod. Para especificar un espacio de nombres secreto diferente, use un volumen persistente.
Para montar el recurso compartido de archivos de Azure Files en el pod, configure el volumen en las especificaciones del contenedor.
- Cree un archivo llamado
azure-files-pod.yaml
y copie en él el siguiente contenido. Si ha cambiado el nombre del recurso compartido de Azure Files o el nombre del secreto, actualice los valoresshareName
ysecretName
. Puede actualizar el valor demountPath
, que es la ruta de acceso en la que se monta el recurso compartido de Azure Files en el pod. Para los contenedores de Windows Server, especifique un elementomountPath
con la convención de ruta de acceso de Windows, como "D:" .
apiVersion: v1
kind: Pod
metadata:
name: mypod
spec:
nodeSelector:
kubernetes.io/os: linux
containers:
- image: 'mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine'
name: mypod
resources:
requests:
cpu: 100m
memory: 128Mi
limits:
cpu: 250m
memory: 256Mi
volumeMounts:
- name: azure
mountPath: /mnt/azure
readOnly: false
volumes:
- name: azure
csi:
driver: file.csi.azure.com
volumeAttributes:
secretName: azure-secret # required
shareName: aksshare # required
mountOptions: 'dir_mode=0777,file_mode=0777,cache=strict,actimeo=30,nosharesock,nobrl' # optional
Cree el pod mediante el comando
kubectl apply
.kubectl apply -f azure-files-pod.yaml
Ahora tiene un pod en ejecución con un recurso compartido de archivos de Azure Files montado en /mnt/azure. Puede comprobar que el recurso compartido se ha montado correctamente mediante el comando
kubectl describe
.kubectl describe pod mypod
Pasos siguientes
Para ver los parámetros del controlador CSI de Azure Files, consulte los parámetros del controlador CSI.
Para consultar los procedimientos recomendados asociados, consulte Procedimientos recomendados para el almacenamiento y las copias de seguridad en Azure Kubernetes Service (AKS).
Azure Kubernetes Service