Créer et utiliser un volume avec Azure Files dans Azure Kubernetes Service (AKS)
Un volume persistant représente un élément de stockage provisionné pour une utilisation dans des pods Kubernetes. Vous pouvez utiliser un volume persistant avec un ou plusieurs pods et il peut être provisionné de façon statique ou dynamique. Si plusieurs pods doivent accéder simultanément au même volume de stockage, vous pouvez utiliser Azure Files pour vous connecter à l’aide du protocole SMB (Server Message Block). Cet article vous montre comment créer un partage de fichiers Azure de manière dynamique utilisé par plusieurs pods dans un cluster Azure Kubernetes Service (AKS).
Cet article vous montre comment :
- Utilisez un volume persistant dynamique en installant le pilote CSI (Container Storage Interface) et en créant dynamiquement un ou plusieurs partages de fichiers Azure à attacher à un pod.
- Utilisez un pv statique en créant un ou plusieurs partages de fichiers Azure, ou utilisez-en un existant et attachez-le à un pod.
Pour plus d’informations sur les volumes Kubernetes, consultez Options de stockage pour les applications dans AKS.
Avant de commencer
- Vous avez besoin d’un compte de stockage Azure.
- Vérifiez qu’Azure CLI version 2.0.59 ou ultérieure est installé et configuré. Exécutez
az --version
pour trouver la version. Si vous devez installer ou mettre à niveau, voir Installer Azure CLI. - Quand vous devez choisir entre les partages de fichiers Standard et Premium, il est important de comprendre le modèle de provisionnement et les besoins liés au modèle d’utilisation attendu que vous comptez exécuter sur Azure Files. Pour plus d’informations, consultez Choix d’un niveau de performance Azure Files en fonction des modèles d’utilisation.
Provisionner un volume de manière dynamique
Cette section fournit des conseils aux administrateurs de cluster qui souhaitent provisionner un ou plusieurs volumes persistants qui incluent les détails d’un ou plusieurs partages sur Azure Files. Une revendication de volume persistant utilise l’objet de classe de stockage pour provisionner dynamiquement un partage de fichiers Azure Files.
Paramètres de classe de stockage pour les PersistentVolumes dynamiques
Le tableau suivant contient des paramètres que vous pouvez utiliser pour définir une classe de stockage personnalisée pour votre PersistentVolumeClaim.
Nom | Signification | Valeur disponible | Obligatoire | Default value |
---|---|---|---|---|
accountAccessTier | Niveau d’accès pour le compte de stockage | Le compte Standard peut choisir Hot ou Cool , et le compte Premium peut uniquement choisir Premium . |
Non | Vide. Utilisez le paramètre par défaut pour différents types de comptes de stockage. |
accountQuota | Limite le quota pour un compte. Vous pouvez spécifier un quota maximal en Go (102 400 Go par défaut). Si le compte dépasse le quota spécifié, le pilote ignore la sélection du compte. | Non | 102400 |
|
allowBlobPublicAccess | Autoriser ou interdire l’accès public à tous les objets blob ou conteneurs pour le compte de stockage créé par le pilote. | true ou false |
Non | false |
disableDeleteRetentionPolicy | Spécifiez si vous désactivez DeleteRetentionPolicy pour le compte de stockage créé par le pilote. | true ou false |
Non | false |
enableLargeFileShares | Spécifiez s'il faut utiliser un compte de stockage avec des partages de fichiers volumineux activés ou non. Si cet indicateur a la valeur true et qu'il n'existe pas de compte de stockage avec l'option de partage de fichiers volumineux, un nouveau compte de stockage avec l'option de partage de fichiers volumineux est créé. Cet indicateur doit être utilisé avec la sku Standard, car les comptes de stockage créés avec la sku Premium ont l'option largeFileShares activée par défaut. |
true ou false |
Non | false |
folderName | Spécifiez le nom du dossier dans le partage de fichiers Azure. | Nom de dossier existant dans le partage de fichiers Azure. | Non | Si le nom du dossier n’existe pas dans le partage de fichiers, le montage échoue. |
getLatestAccount | Détermine s'il faut obtenir la dernière clé de compte en fonction de l'heure de création. Ce pilote obtient la première clé par défaut. | true ou false |
Non | false |
location | Spécifiez la région Azure du compte de stockage Azure. | Par exemple : eastus . |
Non | Si le paramètre est vide, le pilote utilise le même nom d’emplacement que le cluster AKS actuel. |
matchTags | Correspondance des balises lorsque le pilote tente de trouver un compte de stockage approprié. | true ou false |
Non | false |
networkEndpointType | Spécifiez le type de point de terminaison réseau pour le compte de stockage créé par le pilote. Si privateEndpoint est spécifié, un point de terminaison privé est créé pour le compte de stockage. Dans d’autres cas, un point de terminaison de service est créé par défaut. |
"",privateEndpoint |
Non | "" |
protocol | Spécifiez le protocole de partage de fichiers. | smb , nfs |
Non | smb |
requireInfraEncryption | Spécifiez si le service applique ou non une couche secondaire de chiffrement avec des clés gérées par la plateforme pour les données au repos pour le compte de stockage créé par le pilote. | true ou false |
Non | false |
resourceGroup | Spécifiez le groupe de ressources pour les disques Azure. | Nom du groupe de ressources existant | Non | Si le paramètre est vide, le pilote utilise le même nom de groupe de ressources que le cluster AKS actuel. |
selectRandomMatchingAccount | Détermine s'il faut sélectionner de manière aléatoire un compte correspondant. Par défaut, le pilote sélectionne toujours le premier compte correspondant dans l'ordre alphabétique (Remarque : ce pilote utilise le cache de recherche de compte, ce qui entraîne une répartition inégale de la création de fichiers entre plusieurs comptes). | true ou false |
Non | false |
server | Spécifiez l’adresse du serveur du compte de stockage Azure. | Adresse de serveur existante, par exemple accountname.privatelink.file.core.windows.net . |
Non | S’il est vide, le pilote utilise par défaut accountname.file.core.windows.net ou une autre adresse de compte de cloud souverain. |
shareAccessTier | Niveau d’accès pour un partage de fichiers | Le compte v2 à usage général peut choisir entre TransactionOptimized (par défaut), Hot et Cool . Type de compte de stockage Premium pour les partages de fichiers uniquement. |
Non | Vide. Utilisez le paramètre par défaut pour différents types de comptes de stockage. |
shareName | Spécifiez le nom du partage de fichiers Azure. | Nom de partage de fichiers Azure existant ou nouveau. | Non | S’il est vide, le pilote génère un nom de partage de fichiers Azure. |
shareNamePrefix | Spécifiez le préfixe de nom de partage de fichiers Azure créé par le pilote. | Le nom de partage ne peut contenir que des lettres minuscules, des chiffres, des traits d’union et une longueur inférieure à 21 caractères. | Non | |
skuName | Type de compte de stockage Azure Files (alias : storageAccountType ) |
Standard_LRS , Standard_ZRS , Standard_GRS , Standard_RAGRS , Standard_RAGZRS ,Premium_LRS , Premium_ZRS |
Non | StandardSSD_LRS La taille minimale du partage de fichiers pour le type de compte Premium est de 100 Go. Le type de compte ZRS est pris en charge dans des régions limitées. Le partage de fichiers NFS prend uniquement en charge le type de compte Premium. |
storageAccount | Spécifiez un type de compte de stockage de Azure. | storageAccountName | Aucune | Lorsque aucun nom de compte de stockage spécifique n’est fourni, le pilote recherche un compte de stockage approprié qui correspond aux paramètres du compte au sein du même groupe de ressources. S’il ne trouve pas de compte de stockage correspondant, il en crée un nouveau. Toutefois, si un nom de compte de stockage est spécifié, le compte de stockage doit déjà exister. |
storageEndpointSuffix | Spécifiez le suffixe de point de terminaison de stockage Azure. | core.windows.net , core.chinacloudapi.cn , etc. |
Non | S’il est vide, le pilote utilise le suffixe de point de terminaison de stockage par défaut en fonction de l’environnement cloud. Par exemple : core.windows.net . |
tags | Les étiquettes sont créées dans un nouveau compte de stockage. | Format de balise : « foo=aaa,bar=bbb » | Non | "" |
--- | Les paramètres suivants sont uniquement pour le protocole SMB | --- | --- | |
subscriptionID | Spécifiez l’ID d’abonnement Azure dans lequel le partage de fichiers est créé. | ID d’abonnement Azure | Non | Si le paramètre n’est pas vide, resourceGroup doit être fourni. |
storeAccountKey | Spécifiez s’il faut stocker la clé de compte dans le secret Kubernetes. | true ou false false signifie que le pilote utilise l’identité kubelet pour obtenir la clé de compte. |
Non | true |
secretName | Spécifiez le nom du secret pour stocker la clé de compte. | No | ||
secretNamespace | Spécifiez l’espace de noms de secret pour stocker la clé de compte. Remarque : Si secretNamespace n’est pas spécifié, le secret est créé dans le même espace de noms que le pod. |
default ,kube-system , etc. |
No | Espace de noms PVC, par exemple csi.storage.k8s.io/pvc/namespace |
useDataPlaneAPI | Spécifiez s’il faut utiliser l’API de plan de données pour la création, la suppression, le redimensionnement de partage de fichiers, ce qui peut résoudre le problème de limitation de l’API SRP, car l’API de plan de données n’a presque aucune limite, alors qu’elle échoue en cas de paramètres de pare-feu ou de réseau virtuel sur le compte de stockage. | true ou false |
Non | false |
--- | Les paramètres suivants sont uniquement pour le protocole NFS | --- | --- | |
mountPermissions | Autorisations de dossiers montés. Par défaut, il s’agit de 0777 . Si la valeur est définie à 0 , le pilote n’exécute pas chmod après le montage |
0777 |
Non | |
rootSquashType | Spécifiez le comportement de root squash sur le partage. La valeur par défaut est NoRootSquash |
AllSquash , NoRootSquash , RootSquash |
Non | |
--- | Les paramètres suivants sont uniquement pour le paramètre de réseau virtuel. Par exemple, NFS, point de terminaison privé | --- | --- | |
fsGroupChangePolicy | Indique comment le pilote modifie la propriété du volume. Le pod securityContext.fsGroupChangePolicy est ignoré. |
OnRootMismatch (par défaut), Always , None |
Non | OnRootMismatch |
subnetName | Nom du sous-réseau | Le nom de sous-réseau existant du nœud de l’agent. | No | S’il est vide, le pilote utilise la valeur subnetName dans le fichier config du cloud Azure. |
vnetName | Nom du réseau virtuel | Nom de réseau virtuel existant. | No | S’il est vide, le pilote utilise la valeur vnetName dans le fichier config du cloud Azure. |
vnetResourceGroup | Spécifiez le groupe de ressources de réseau virtuel dans lequel le réseau virtuel est défini. | Nom du groupe de ressources existant. | No | S’il est vide, le pilote utilise la valeur vnetResourceGroup dans le fichier config du cloud Azure. |
Créer une classe de stockage
Les classes de stockage définissent comment créer un partage de fichiers Azure. Un compte de stockage est automatiquement créé dans le groupe de ressources de nœud pour être utilisé avec la classe de stockage afin de contenir les partages de fichiers Azure Files. Faites votre choix parmi les références SKU de redondance de stockage Azure suivantes pour skuName
:
Standard_LRS
: Stockage localement redondant standard (LRS)Standard_GRS
: Stockage géo-redondant standard (GRS)Standard_ZRS
: Stockage redondant dans une zone standard (ZRS)Standard_RAGRS
: Stockage géo-redondant avec accès en lecture (RA-GRS)Premium_LRS
: Stockage Premium localement redondant (LRS)Premium_ZRS
: stockage redondant interzone (ZRS) Premium
Remarque
Le partage de fichiers Premium minimal est de 100 Go.
Pour plus d’informations sur les classes de stockage Kubernetes pour Azure Files, consultez Classes de stockage Kubernetes.
Créez un fichier nommé
azure-file-sc.yaml
et copiez-le dans l’exemple de manifeste suivant. Pour plus d’informations surmountOptions
, consultez la section Options de montage.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
Créez la classe de stockage à l’aide de la commande
kubectl apply
.kubectl apply -f azure-file-sc.yaml
Créer une revendication de volume persistant
Une revendication de volume persistant utilise l’objet de classe de stockage pour provisionner dynamiquement un partage de fichiers Azure. Vous pouvez utiliser le code YAML suivant pour créer une revendication de volume persistant d’une taille de 100 Go avec un accès ReadWriteMany. Pour plus d’informations sur les modes d’accès, consultez la documentation Kubernetes sur les volumes persistants.
Créez un fichier nommé
azure-file-pvc.yaml
et copiez-y le YAML suivant. Vérifiez questorageClassName
correspond à la classe de stockage que vous avez créée à la dernière étape.apiVersion: v1 kind: PersistentVolumeClaim metadata: name: my-azurefile spec: accessModes: - ReadWriteMany storageClassName: my-azurefile resources: requests: storage: 100Gi
Notes
Si vous utilisez la référence SKU
Premium_LRS
pour votre classe de stockage, la valeur minimale destorage
doit être100Gi
.Créez la revendication de volume persistant avec la commande
kubectl apply
.kubectl apply -f azure-file-pvc.yaml
Une fois que c’est terminé, le partage de fichiers est créé. Un secret Kubernetes incluant des informations d’identification et des informations de connexion est également créé. Vous pouvez utiliser la commande
kubectl get
pour voir l’état de la revendication de volume persistant :kubectl get pvc my-azurefile
La sortie de la commande ressemble à l’exemple suivant :
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE my-azurefile Bound pvc-8436e62e-a0d9-11e5-8521-5a8664dc0477 100Gi RWX my-azurefile 5m
Utiliser le volume persistant
Le code YAML ci-après crée un pod qui utilise la revendication de volume persistant my-azurefile pour monter le partage de fichiers Azure Files dans le chemin /mnt/azure. Pour les conteneurs Windows Server, spécifiez un mountPath
en utilisant la convention de chemin Windows, par exemple, 'D:' .
Créez un fichier nommé
azure-pvc-files.yaml
et copiez-y le code YAML suivant. Vérifiez queclaimName
correspond à la revendication de volume persistant créée à l’étape précédente.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
Créez le pod à l’aide de la commande
kubectl apply
.kubectl apply -f azure-pvc-files.yaml
Vous disposez maintenant d’un pod en cours d’exécution avec le partage de fichiers Azure Files monté dans le répertoire /mnt/azure. Cette configuration est visible lors de l’inspection de votre pod à l’aide de la commande
kubectl describe
. La sortie de l’exemple condensé suivant montre le volume monté dans le conteneur.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 [...]
Options de montage
La valeur par défaut de fileMode
et dirMode
est 0777 pour Kubernetes 1.13.0 et versions ultérieures. Si vous créez le volume persistant de manière dynamique avec une classe de stockage, vous pouvez spécifier les options de montage sur l’objet de classe de stockage. Pour plus d’informations, consultez Options de montage. L’exemple suivant définit 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
Utilisation de balises Azure
Pour plus d’informations sur l’utilisation des balises Azure, consultez Utiliser des étiquettes Azure dans Azure Kubernetes Service (AKS).
Provisionner un volume de manière statique
Cette section fournit des conseils aux administrateurs de cluster qui souhaitent créer un ou plusieurs volumes persistants qui incluent les détails d’un partage de Azure Files existant à utiliser avec une charge de travail.
Paramètres d’approvisionnement statique pour PersistentVolume
Le tableau suivant contient des paramètres que vous pouvez utiliser pour définir un PersistentVolume.
Nom | Signification | Valeur disponible | Obligatoire | Valeur par défaut |
---|---|---|---|---|
volumeAttributes.resourceGroup | Spécifiez un nom groupe de ressources Azure. | myResourceGroup | No | Si le paramètre est vide, le pilote utilise le même nom de groupe de ressources que le cluster actuel. |
volumeAttributes.storageAccount | Spécifiez un nom de compte de stockage Azure existant. | storageAccountName | Yes | |
volumeAttributes.shareName | Spécifier le nom du partage de fichiers Azure. | fileShareName | Oui | |
volumeAttributes.folderName | Spécifiez un nom de dossier dans le partage de fichiers Azure. | folderName | Non | Si le nom du dossier n’existe pas dans le partage de fichiers, le montage échoue. |
volumeAttributes.protocol | Spécifiez le protocole de partage de fichiers. | smb , nfs |
Non | smb |
volumeAttributes.server | Spécifiez l’adresse du serveur du compte de stockage Azure | Adresse de serveur existante, par exemple accountname.privatelink.file.core.windows.net . |
Non | S’il est vide, le pilote utilise par défaut accountname.file.core.windows.net ou une autre adresse de compte de cloud souverain. |
--- | Les paramètres suivants sont uniquement pour le protocole SMB | --- | --- | --- |
volumeAttributes.secretName | Spécifiez un nom secret qui stocke le nom et la clé du compte de stockage. | No | ||
volumeAttributes.secretNamespace | Spécifiez un espace de noms secret. | default ,kube-system , etc. |
No | Espace de noms PVC (csi.storage.k8s.io/pvc/namespace ) |
nodeStageSecretRef.name | Spécifiez un nom secret qui stocke le nom et la clé du compte de stockage. | Nom du secret existant. | Non | S’il est vide, le pilote utilise l’identité kubelet pour obtenir la clé de compte. |
nodeStageSecretRef.namespace | Spécifiez un espace de noms secret. | Espace de noms Kubernetes | Non | |
--- | Les paramètres suivants sont uniquement pour le protocole NFS | --- | --- | --- |
volumeAttributes.fsGroupChangePolicy | Indique comment le pilote modifie la propriété du volume. Le pod securityContext.fsGroupChangePolicy est ignoré. |
OnRootMismatch (par défaut), Always , None |
Non | OnRootMismatch |
volumeAttributes.mountPermissions | Spécifiez les autorisations de dossiers montés. La valeur par défaut est 0777 |
Non |
Créer un partage de fichiers Azure
Avant d’utiliser un partage de fichiers Azure Files en tant que volume Kubernetes, vous devez créer un compte de stockage Azure et le partage de fichiers.
Obtenez le nom du groupe de ressources à l’aide de la
az aks show
commande avec le paramètre--query nodeResourceGroup
.az aks show --resource-group myResourceGroup --name myAKSCluster --query nodeResourceGroup -o tsv
La sortie de la commande ressemble à l’exemple suivant :
MC_myResourceGroup_myAKSCluster_eastus
Créez un compte de stockage à l’aide de la commande
az storage account create
avec le paramètre--sku
. La commande suivante crée un compte de stockage à l’aide de laStandard_LRS
SKU. Assurez-vous de remplacer les espaces réservés suivants :myAKSStorageAccount
avec le nom du compte de stockagenodeResourceGroupName
avec le nom du groupe de ressources dans lequel les nœuds de cluster AKS sont hébergéslocation
avec le nom de la région dans laquelle créer la ressource. Il doit s’agir de la même région que les nœuds de cluster AKS.
az storage account create -n myAKSStorageAccount -g nodeResourceGroupName -l location --sku Standard_LRS
Exportez la chaîne de connexion en tant que variable d’environnement à l’aide de la commande suivante, que vous utilisez pour créer le partage de fichiers.
export AZURE_STORAGE_CONNECTION_STRING=$(az storage account show-connection-string -n storageAccountName -g resourceGroupName -o tsv)
Créez le partage de fichiers en exécutant la commande
az storage share create
. Veillez à remplacershareName
par votre nom de partage.az storage share create -n shareName --connection-string $AZURE_STORAGE_CONNECTION_STRING
Exportez la clé de compte de stockage en tant que variable d’environnement à l’aide de la commande suivante.
STORAGE_KEY=$(az storage account keys list --resource-group nodeResourceGroupName --account-name myAKSStorageAccount --query "[0].value" -o tsv)
Faire écho au nom et à la clé du compte de stockage à l’aide de la commande suivante. Copiez ces informations, car vous avez besoin de ces valeurs lors de la création du volume Kubernetes.
echo Storage account key: $STORAGE_KEY
Créer un secret Kubernetes
Kubernetes a besoin d’informations d’identification pour accéder au partage de fichiers créé à l’étape précédente. Ces informations d’identification sont stockées dans un secret Kubernetes, qui est référencé lorsque vous créez un pod Kubernetes.
Créez le secret à l’aide de la commande
kubectl create secret
. L’exemple suivant crée un secret nommé azure-secret et remplit les valeurs azurestorageaccountname et azurestorageaccountkey à partir de l’étape précédente. Pour utiliser un compte de stockage Azure existant, indiquez le nom du compte et la clé.kubectl create secret generic azure-secret --from-literal=azurestorageaccountname=myAKSStorageAccount --from-literal=azurestorageaccountkey=$STORAGE_KEY
Monter le partage de fichiers comme un volume persistant
Créez un fichier nommé
azurefiles-pv.yaml
et copiez-y les contenus suivants. Souscsi
, mettez à jourresourceGroup
,volumeHandle
etshareName
. Pour les options de montage, la valeur par défaut pourfileMode
etdirMode
est 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
Créez le volume persistant à l’aide de la commande
kubectl create
.kubectl create -f azurefiles-pv.yaml
Créez un fichier nommé azurefiles-mount-options-pvc.yaml et copiez le contenu suivant.
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: azurefile spec: accessModes: - ReadWriteMany storageClassName: azurefile-csi volumeName: azurefile resources: requests: storage: 5Gi
Utilisez PersistentVolumeClaim à l’aide de la commande
kubectl apply
.kubectl apply -f azurefiles-mount-options-pvc.yaml
Vérifiez que votre PersistentVolumeClaim est créé et lié au PersistentVolume à l’aide de la commande
kubectl get
.kubectl get pvc azurefile
La sortie de la commande ressemble à l’exemple suivant :
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE azurefile Bound azurefile 5Gi RWX azurefile 5s
Mettez à jour les spécifications de votre conteneur pour référencer votre PersistentVolumeClaim et mettre à jour votre pod dans le fichier YAML. Par exemple :
... volumes: - name: azure persistentVolumeClaim: claimName: azurefile
Une spécification de pod ne peut pas être mise à jour sur place. Par conséquent, supprimez le pod à l’aide de la commande
kubectl delete
et recréez-le à l’aide de la commandekubectl apply
.kubectl delete pod mypod kubectl apply -f azure-files-pod.yaml
Monter le partage de fichiers comme un volume inlined
Remarque
Pour éviter les problèmes de niveau de performance, nous vous recommandons d’utiliser un volume persistant plutôt qu’un volume inclus lorsque plusieurs pods accèdent au même partage de fichiers. Le volume inclus peut uniquement accéder aux secrets dans le même espace de noms que le pod. Pour spécifier un autre espace de noms de secret, utilisez un volume persistant.
Pour monter le partage de fichiers Azure Files dans votre pod, configurez le volume dans les spécifications du conteneur.
- Créez un fichier nommé
azure-files-pod.yaml
et copiez-y les contenus suivants : Si vous avez renommé le partage de fichiers ou le secret, mettez à jour les valeursshareName
etsecretName
. Vous pouvez également actualisermountPath
. Il s’agit du chemin du partage Azure Files qui a été monté dans le pod. Pour les conteneurs Windows Server, spécifiez unmountPath
en utilisant la convention de chemin Windows, par exemple, '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
Créez le pod à l’aide de la commande
kubectl apply
.kubectl apply -f azure-files-pod.yaml
Vous disposez maintenant d’un pod en cours d’exécution sur lequel est monté un partage de fichier Azure Files à l’emplacement suivant : /mnt/azure. Vous pouvez vérifier que le partage est monté correctement à l’aide de la commande
kubectl describe
.kubectl describe pod mypod
Étapes suivantes
Pour connaître les paramètres du pilote CSI pour Azure Files, consultez Paramètres du pilote CSI.
Pour connaître les meilleures pratiques associées, consultez Meilleures pratiques relatives au stockage et aux sauvegardes dans Azure Kubernetes Service (AKS).
Azure Kubernetes Service