Pilotes CSI (Container Storage interface) dans Azure Kubernetes Service (AKS)

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 adoptant et en utilisant CSI, AKS (Azure Kubernetes Service) peut écrire, déployer et itérer des plug-ins afin d’exposer de nouveaux systèmes de stockage ou d’améliorer les systèmes existants dans Kubernetes sans avoir à toucher au code Kubernetes principal ou à attendre ses cycles de publication.

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

  • Les disques Azure permettent de créer une ressource DataDisk Kubernetes. Les disques peuvent utiliser un Stockage Premium Azure, assorti de disques SSD haute performance, ou un Stockage Standard Azure, assorti de disques HDD ordinaires ou de disques SSD standard. Pour la plupart des charges de travail de production et de développement, utilisez le Stockage Premium. Les disques Azure sont montés avec le mode ReadWriteOnce et ne sont disponibles que pour un seul nœud dans AKS. Pour les volumes de stockage accessibles par plusieurs pods simultanément, utilisez Azure Files.
  • Azure Files permet de monter un partage SMB 3.0/3.1 assorti d’un compte de stockage Azure sur des pods. Avec Azure Files, vous pouvez partager des données entre plusieurs nœuds et pods. Azure Files peut utiliser un stockage Standard Azure, assorti de disques HDD standard, ou un stockage Premium Azure, assorti de disques SSD haute performance.
  • Le stockage Blob Azure peut être utilisé pour monter le stockage blob (ou le stockage d’objets) en tant que système de fichiers dans un conteneur ou un pod. L’utilisation du stockage Blob permet à votre cluster de prendre en charge les applications qui fonctionnent avec de grands jeux de données non structurés, tels que des données de fichier journal, des images ou des documents, le HPC et d’autres. En outre, si vous ingérez des données dans Stockage du lac de données Azure, vous pouvez le monter et l’utiliser directement dans AKS sans configurer un autre système de fichiers intermédiaire.

Important

À compter de Kubernetes version 1.21, AKS utilise uniquement les pilotes CSI par défaut et la migration CSI est activée. Les volumes persistants dans l’arborescence existants continueront de fonctionner. Toutefois, en interne, Kubernetes contrôle toutes les opérations de gestion du stockage (ciblant précédemment les pilotes dans l’arborescence) au niveau des pilotes CSI.

Les pilotes dans l’arborescence désignent les pilotes de stockage, qui font partie du code Kubernetes principal, contrairement aux pilotes CSI, qui sont des plug-ins.

Notes

Le pilote CSI de disque Azure v2 (préversion) améliore la scalabilité et réduit la latence de basculement des pods. Il utilise des disques partagés pour provisionner des réplicas d’attachement sur plusieurs nœuds de cluster, et s’intègre au planificateur de pods pour garantir qu’un nœud avec un réplica d’attachement est choisi lors d’un basculement de pod. Le pilote CSI de disque Azure v2 (préversion) offre également la possibilité d’optimiser les performances. Si vous souhaitez participer à la préversion, envoyez une demande : https://aka.ms/DiskCSIv2Preview. Cette préversion est fournie sans contrat de niveau de service, et il se peut que vous rencontriez de temps à temps des changements cassants pendant la préversion. La préversion n’est pas recommandée pour les charges de travail de production. Pour plus d’informations, consultez Conditions d’Utilisation Supplémentaires relatives aux Évaluations Microsoft Azure.

Prérequis

  • La version 2.42 ou ultérieure d’Azure CLI doit être installée et configurée. Exécutez az --version pour trouver la version. Si vous devez installer ou mettre à niveau, voir Installer Azure CLI.
  • Si le pilote pour le stockage Blob CSI open source est installé sur votre cluster, désinstallez-le avant d’activer le pilote pour le stockage Blob Azure.

Désactiver les pilotes pour le stockage CSI sur un cluster nouveau ou existant

Pour désactiver les pilotes pour le stockage CSI sur un nouveau cluster, incluez l’un des paramètres suivants en fonction du système de stockage :

az aks create -n myAKSCluster -g myResourceGroup --disable-disk-driver --disable-file-driver --disable-blob-driver --disable-snapshot-controller 

Pour désactiver les pilotes pour le stockage CSI sur un cluster existant, utilisez l’un des paramètres listés plus haut en fonction du système de stockage :

az aks update -n myAKSCluster -g myResourceGroup --disable-disk-driver --disable-file-driver --disable-blob-driver --disable-snapshot-controller 

Activer les pilotes de stockage CSI sur un cluster existant

Pour activer les pilotes pour le stockage CSI sur un nouveau cluster, incluez l’un des paramètres suivants en fonction du système de stockage :

az aks update -n myAKSCluster -g myResourceGroup --enable-disk-driver --enable-file-driver --enable-blob-driver --enable-snapshot-controller

Migrer des classes de stockage personnalisées dans l’arborescence vers CSI

Si vous avez créé des classes de stockage de pilote dans l’arborescence, celles-ci continuent de fonctionner, car la migration CSI est activée après la mise à niveau de votre cluster vers la version 1.21.x. Mais si vous voulez utiliser des fonctionnalités CSI, vous devrez procéder à la migration.

La migration de ces classes de stockage implique de supprimer celles existantes et de les recréer avec le fournisseur défini sur disk.csi.azure.com si vous utilisez des disques Azure et files.csi.azure.com si vous utilisez Azure Files.

Migrer le provisionneur de classe de stockage

L’exemple de manifeste YAML suivant montre la différence entre la définition de classe de stockage dans l’arborescence configurée pour utiliser des disques Azure et l’équivalent utilisant une définition de classe de stockage CSI. Le système de stockage CSI prend en charge les mêmes fonctionnalités que les pilotes dans l’arborescence, de telle sorte qu’il est seulement nécessaire de changer la valeur de provisioner.

Définition d’origine de la classe de stockage dans l’arborescence

kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: custom-managed-premium
provisioner: kubernetes.io/azure-disk
reclaimPolicy: Delete
parameters:
  storageAccountType: Premium_LRS

Définition de la classe de stockage CSI

kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: custom-managed-premium
provisioner: disk.csi.azure.com
reclaimPolicy: Delete
parameters:
  storageAccountType: Premium_LRS

Le système de stockage CSI prend en charge les mêmes fonctionnalités que les pilotes dans l’arborescence, donc la seule modification nécessaire est le provisionneur.

Migrer des volumes persistants dans l’arborescence

Important

Si votre volume persistant dans l’arborescence reclaimPolicy est défini sur Delete, vous devez définir sa stratégie sur Retain pour rendre vos données persistantes. Vous pouvez le faire à l’aide d’une opération de correction sur le volume persistant. Par exemple :

kubectl patch pv pv-azuredisk --type merge --patch '{"spec": {"persistentVolumeReclaimPolicy": "Retain"}}'

Migrer des volumes persistants sur des disques Azure dans l’arborescence

Si vous disposez de volumes persistants sur disques Azure dans l’arborescence, obtenez diskURI depuis les volumes persistants dans l’arborescence, puis suivez ce guide pour configurer les volumes persistants du pilote CSI.

Migrer des volumes persistants Azure Files dans l’arborescence

Si vous disposez de volumes persistants Azure Files dans l’arborescence, récupérez secretName, shareName depuis les volumes persistants dans l’arborescence, puis suivez ce guide pour configurer les volumes persistants du pilote CSI.

Étapes suivantes