Partager via


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.

  1. Créez un fichier nommé azure-file-sc.yaml et copiez-le dans l’exemple de manifeste suivant. Pour plus d’informations sur mountOptions, 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
    
  2. 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.

  1. Créez un fichier nommé azure-file-pvc.yaml et copiez-y le YAML suivant. Vérifiez que storageClassName 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 de storage doit être 100Gi.

  2. 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:' .

  1. Créez un fichier nommé azure-pvc-files.yaml et copiez-y le code YAML suivant. Vérifiez que claimName 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
    
  2. 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.

  1. 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
    
  2. 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 la Standard_LRS SKU. Assurez-vous de remplacer les espaces réservés suivants :

    • myAKSStorageAccount avec le nom du compte de stockage
    • nodeResourceGroupName avec le nom du groupe de ressources dans lequel les nœuds de cluster AKS sont hébergés
    • location 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
    
  3. 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)
    
  4. Créez le partage de fichiers en exécutant la commande az storage share create. Veillez à remplacer shareName par votre nom de partage.

    az storage share create -n shareName --connection-string $AZURE_STORAGE_CONNECTION_STRING
    
  5. 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)
    
  6. 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.

  1. 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

  1. Créez un fichier nommé azurefiles-pv.yaml et copiez-y les contenus suivants. Sous csi, mettez à jour resourceGroup, volumeHandleet shareName. Pour les options de montage, la valeur par défaut pour fileMode et dirMode 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
    
  2. Créez le volume persistant à l’aide de la commande kubectl create.

    kubectl create -f azurefiles-pv.yaml
    
  3. 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
    
  4. Utilisez PersistentVolumeClaim à l’aide de la commande kubectl apply.

    kubectl apply -f azurefiles-mount-options-pvc.yaml
    
  5. 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
    
  6. 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
    
  7. 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 commande kubectl 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.

  1. 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 valeurs shareName et secretName. Vous pouvez également actualiser mountPath. Il s’agit du chemin du partage Azure Files qui a été monté dans le pod. Pour les conteneurs Windows Server, spécifiez un mountPath 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
  1. 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).