Partager via


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

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

Cet article explique comment utiliser les classes de stockage intégrées CSI (Container Storage Interface) pour créer dynamiquement des volumes persistants de disque et créer des classes de stockage personnalisées dans AKS activé par Arc.

Vue d’ensemble du CSI dans AKS activé par 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. En utilisant 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 à la spécification CSI.

La prise en charge des pilotes 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 à plusieurs pods, utilisez les 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.

Créer dynamiquement des volumes persistants de disque à l’aide de la classe de stockage intégrée

Une classe de stockage permet de définir la création dynamique d’une unité de stockage avec un volume persistant. Pour plus d’informations sur la façon d’utiliser des classes de stockage, consultez Classes de stockage Kubernetes.

Dans AKS Arc, la classe de stockage par défaut est créée par défaut et utilise CSI pour créer des volumes VHDX. La stratégie de récupération veille à ce que le VHDX sous-jacent soit supprimé quand le volume persistant qui l’a utilisé est supprimé. La classe de stockage configure également les volumes persistants pour qu’ils soient extensibles. Il vous suffit de modifier la revendication de volume persistant avec la nouvelle taille.

Pour tirer parti de cette classe de stockage, créez un PVC et un pod respectif qui la référence et l’utilise. Une revendication de volume persistant est utilisée pour configurer automatiquement le stockage basé sur une classe de stockage. Une PVC peut utiliser l’une des classes de stockage précréées ou une classe de stockage définie par l’utilisateur afin de créer un VHDX de la taille de votre choix. Lorsque vous créez une définition de pod, la revendication de volume persistant est spécifiée pour demander le stockage souhaité.

Créer une classe de stockage personnalisée pour les disques

La classe de stockage par défaut convient pour les scénarios les plus courants. Dans certains cas cependant, vous voulez créer votre propre classe de stockage qui stocke les volumes persistants à un emplacement particulier mappé à un niveau de performances spécifique.

Si vous avez des charges de travail Linux (pods), vous devez créer une classe de stockage personnalisée avec le paramètre fsType: ext4. Cette exigence s’applique à Kubernetes versions 1.19 et 1.20 ou ultérieures. L’exemple suivant montre une définition de classe de stockage personnalisée avec fsType un paramètre défini :

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: aks-hci-disk-custom
parameters:
  blocksize: "33554432"
  container: SqlStorageContainer
  dynamic: "true"
  group: clustergroup-summertime
  hostname: TESTPATCHING-91.sys-sqlsvr.local
  logicalsectorsize: "4096"
  physicalsectorsize: "4096"
  port: "55000"
  fsType: ext4
provisioner: disk.csi.akshci.com
reclaimPolicy: Delete
volumeBindingMode: Immediate
allowVolumeExpansion: true  

Si vous créez une classe de stockage personnalisée, vous pouvez spécifier l’emplacement où vous souhaitez stocker les volumes persistants. Si l’infrastructure sous-jacente est Azure Stack HCI, ce nouvel emplacement peut être un volume soutenu par des disques SSD/NVMe hautes performances ou un volume à coût optimisé soutenu par des disques durs.

La création d’une classe de stockage personnalisée est un processus en deux étapes :

  1. Créez un chemin d’accès de stockage à l’aide stack-hci-vm storagepath des applets de commande pour créer, afficher et répertorier les chemins de stockage sur votre cluster Azure Stack HCI. Pour plus d’informations sur la création d’un chemin de stockage, consultez Chemin d’accès au stockage.

    Pour $path, créez un chemin d’accès de stockage nommé $storagepathname; par exemple, C :\ClusterStorage\test-storagepath :

    az stack-hci-vm storagepath create --resource-group $resource_group --custom-location $customLocationID --name $storagepathname --path $path
    

    Obtenez l’ID de ressource du chemin d’accès de stockage :

    $storagepathID = az stack-hci-vm storagepath show --name $storagepathname --resource-group $resource_group --query "id" -o tsv 
    
  2. Créez une classe de stockage personnalisée à l’aide du nouveau chemin d’accès de stockage.

    1. Créez un fichier nommé sc-aks-hci-disk-custom.yaml, puis copiez le manifeste à partir du fichier YAML suivant. La classe de stockage est identique à la classe de stockage par défaut, hormis le fait qu’elle utilise le nouveau container. Utilisez le storage path ID créé à l’étape précédente pour container. Pour group et hostname, interrogez la classe de stockage par défaut en exécutant kubectl get storageclass default -o yaml, puis utilisez les valeurs spécifiées :

      kind: StorageClass
      apiVersion: storage.k8s.io/v1
      metadata:
       name: aks-hci-disk-custom
      provisioner: disk.csi.akshci.com
      parameters:
       blocksize: "33554432"
       container: <storage path ID>
       dynamic: "true"
       group: <e.g clustergroup-akshci> # same as the default storageclass
       hostname: <e.g. ca-a858c18c.ntprod.contoso.com> # same as the default storageclass
       logicalsectorsize: "4096"
       physicalsectorsize: "4096"
       port: "55000"
       fsType: ext4 # refer to the note above to determine when to include this parameter
      allowVolumeExpansion: true
      reclaimPolicy: Delete
      volumeBindingMode: Immediate
      
    2. Créez la classe de stockage avec la commande kubectl apply et spécifiez votre fichier sc-aks-hci-disk-custom.yaml :

       $ kubectl apply -f sc-aks-hci-disk-custom.yaml
       storageclass.storage.k8s.io/aks-hci-disk-custom created
      

Étapes suivantes