Partager via


Utiliser des pilotes de fichiers CSI (Container Storage Interface) dans AKS activés par Azure Arc

> S’applique à : AKS sur Azure Stack HCI 22H2, AKS sur Windows Server, AKS sur Azure Local, version 23H2

Cet article explique comment utiliser des pilotes CSI (Container Storage Interface) pour les fichiers pour monter un partage SMB (Server Message Block) ou NFS lorsque plusieurs nœuds ont besoin d’un accès simultané au même volume de stockage dans AKS activé par Azure Arc.

Vue d’ensemble de CSI dans AKS Arc

CSI (Container Storage Interface) est une norme pour exposer des systèmes de stockage de blocs et de fichiers arbitraires à des charges de travail conteneurisées sur Kubernetes. À l’aide de CSI, AKS activé par Arc peut écrire, déployer et itérer des plug-ins pour exposer de nouveaux systèmes de stockage. L’utilisation de CSI peut aussi améliorer ceux existants dans Kubernetes sans avoir à modifier le code de Kubernetes et attendre ses cycles de publication.

Les pilotes CSI de disque et de fichier utilisés par AKS Arc sont des pilotes conformes aux spécifications CSI.

La prise en charge du pilote de stockage CSI sur AKS Arc vous permet d’utiliser :

  • Disques AKS Arc que vous pouvez utiliser pour créer une ressource DataDisk Kubernetes. Ces disques étant montés en tant que ReadWriteOnce, ils ne sont disponibles que pour un seul pod à la fois. Pour les volumes de stockage accessibles simultanément par plusieurs pods, utilisez des fichiers AKS Arc.

  • Fichiers AKS Arc que vous pouvez utiliser pour monter un partage SMB ou NFS sur des pods. Ces fichiers étant montés en tant que ReadWriteMany, vous pouvez partager des données entre plusieurs nœuds et pods. Ils peuvent également être montés en tant que ReadWriteOnce en fonction de la spécification PVC.

Utiliser des volumes persistants de fichiers à l’aide de pilotes CSI ReadWriteMany

Si plusieurs nœuds ont besoin d’un accès simultané aux mêmes volumes de stockage dans AKS Arc, vous pouvez utiliser des pilotes CSI pour monter des partages SMB ou NFS en tant que ReadWriteMany. Vous devez provisionner les partages SMB ou NFS à l’avance.

Utiliser des pilotes SMB

  1. Vérifiez que le pilote SMB est déployé. Le pilote CSI SMB est installé par défaut lorsque vous créez un cluster Kubernetes à l’aide de la Portail Azure ou de la az aksarc create commande. Si vous créez un cluster Kubernetes à l’aide --disable-smb-driverde , vous devez activer le pilote SMB sur ce cluster à l’aide de la az aksarc update commande :

    az aksarc update -n $aksclustername -g $resource_group --enable-smb-driver
    
  1. Créez des secrets Kubernetes afin de stocker les informations d’identification nécessaires pour accéder aux partages SMB en exécutant la commande suivante :

    kubectl create secret generic smbcreds --from-literal username=$username --from-literal password=$password --from-literal domain=$domain
    
  2. Créez une classe de stockage en utilisant kubectl pour créer une classe de stockage SMB avec le manifeste suivant :

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: smb-csi
    provisioner: smb.csi.akshci.com
    parameters:
       source: \\smb-server\share
       csi.storage.k8s.io/node-stage-secret-name: "smbcreds"
       csi.storage.k8s.io/node-stage-secret-namespace: "default"
    reclaimPolicy: Retain  # only Retain is supported
    volumeBindingMode: Immediate
    mountOptions:
      - dir_mode=0777
      - file_mode=0777
      - uid=1001
      - gid=1001
    

Utiliser des pilotes NFS

  1. Vérifiez que le pilote NFS est déployé. Le pilote CSI NFS est installé par défaut lorsque vous créez un cluster Kubernetes à l’aide de la Portail Azure ou de la az aksarc create commande. Si vous créez un cluster Kubernetes à l’aide --disable-nfs-driverde , vous devez activer le pilote NFS sur ce cluster à l’aide de la az aksarc update commande :

    az aksarc update -n $aksclustername -g $resource_group --enable-nfs-driver
    
  1. Créez une classe de stockage NFS avec le manifeste suivant :

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: nfs-csi
    provisioner: nfs.csi.akshci.com
    parameters:
      server: nfs-server.default.svc.cluster.local # NFS server endpoint
      share: / # NFS share path
    reclaimPolicy: Retain
    volumeBindingMode: Immediate
    mountOptions:
      - hard
      - nfsvers=4.1
    

Pour désinstaller les pilotes SMB ou NFS

Utilisez les commandes Azure CLI suivantes pour désinstaller les pilotes SMB ou NFS :

az aksarc update -n $aksclustername -g $resource_group --disable-smb-driver
az aksarc update -n $aksclustername -g $resource_group --disable-nfs-driver

Étapes suivantes