Utiliser le pilote CSI (Container Storage Interface) pour le stockage Blob Azure
Le pilote CSI (Container Storage Interface) pour le stockage Blob Azure est un pilote conforme à la spécification CSI utilisé par Azure Kubernetes Service (AKS) pour gérer le cycle de vie du stockage Blob Azure. CSI est une norme pour exposer des systèmes de stockage de blocs et de fichiers arbitraires à des charges de travail en conteneur sur Kubernetes.
En adoptant et en utilisant CSI, AKS peut désormais écrire, déployer et itérer les plug-ins pour exposer de nouveaux systèmes de stockage ou améliorer les existants dans Kubernetes. L’utilisation de pilotes CSI dans AKS permet d’éviter de toucher au code Kubernetes de base et d’attendre ses cycles de mise en production.
Lorsque vous montez du stockage Blob Azure en tant que système de fichiers dans un conteneur ou un pod, cela vous permet d’utiliser le stockage d’objets blob avec un certain nombre d’applications qui fonctionnent avec de grandes quantités de données non structurées. Par exemple :
- Données du fichier journal
- Images, documents et diffusion en continu de vidéos ou d’audio
- Données de récupération d’urgence
Les données sur le stockage d’objets sont accessibles par les applications à l’aide du protocole BlobFuse ou NFS (Network File System) 3.0. Avant l’introduction du pilote CSI pour le stockage Blob Azure, la seule option consistait à installer manuellement un pilote non pris en charge pour accéder au stockage Blob à partir de votre application s’exécutant sur AKS. Lorsque le pilote CSI pour le stockage Blob Azure est activé sur AKS, il existe deux classes de stockage intégrées : azureblob-fuse-premium et azureblob-nfs-premium.
Pour créer un cluster AKS avec prise en charge des pilotes CSI, consultez Pilotes CSI sur AKS. Pour en savoir plus sur les différences d’accès entre chacun des types de stockage Azure à l’aide du protocole NFS, consultez Comparer l’accès à Azure Files, au Stockage Blob et à Azure NetApp Files avec NFS.
Fonctionnalités du pilote CSI pour le stockage Blob Azure
Le pilote CSI pour le stockage Blob Azure prend en charge les fonctionnalités suivantes :
- Protocole BlobFuse et NFS (Network File System) version 3.0
Avant de commencer
Vérifiez qu’Azure CLI version 2.42 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. Si vous avez installé l’extensionaks-preview
Azure CLI, veillez à mettre à jour l’extension vers la dernière version en appelantaz extension update --name aks-preview
.Effectuez les étapes de ce lien si vous avez précédemment installé le pilote open source du Stockage Blob CSI pour accéder au stockage Blob Azure à partir de votre cluster.
Remarque
Si le proxy blobfuse n'est pas activé lors de l'installation du pilote open source, la désinstallation du pilote open source perturbera les montages blobfuse existants. Cependant, les montages NFS ne seront pas affectés.
Activer le pilote CSI sur un cluster AKS, nouveau ou existant
À l’aide d’Azure CLI, vous pouvez activer le pilote CSI de stockage Blob sur un cluster AKS nouveau ou existant avant de configurer un volume persistant pour une utilisation par les pods du cluster.
Pour activer le pilote sur un nouveau cluster, ajoutez le paramètre --enable-blob-driver
avec la commande az aks create
, comme indiqué dans l’exemple suivant :
az aks create \
--enable-blob-driver \
--name myAKSCluster \
--resource-group myResourceGroup \
--generate-ssh-keys
Pour activer le pilote sur un cluster existant, ajoutez le paramètre --enable-blob-driver
avec la commande az aks update
, comme indiqué dans l’exemple suivant :
az aks update --enable-blob-driver --name myAKSCluster --resource-group myResourceGroup
Vous êtes invité à confirmer qu’aucun pilote CSI d’objet blob open source n’est installé. Après que vous l’ayez confirmée, l’exécution de cette action peut prendre plusieurs minutes. Une fois l’opération terminée, vous devez voir dans la sortie l’état d’activation du pilote sur votre cluster. L’exemple suivant ressemble à la section indiquant les résultats de la commande précédente :
"storageProfile": {
"blobCsiDriver": {
"enabled": true
},
Désactiver le pilote CSI sur un cluster AKS existant
À l’aide d’Azure CLI, vous pouvez désactiver le pilote CSI de stockage Blob sur un cluster AKS existant après avoir supprimé le volume persistant du cluster.
Pour désactiver le pilote sur un cluster existant, ajoutez le paramètre --disable-blob-driver
avec la commande az aks update
, comme indiqué dans l’exemple suivant :
az aks update --disable-blob-driver --name myAKSCluster --resource-group myResourceGroup
Utiliser un volume persistant avec le stockage Blob Azure
Un volume persistant représente un élément de stockage provisionné pour une utilisation dans des pods Kubernetes. Un volume persistant peut être utilisé par un ou plusieurs pods et être provisionné de façon statique ou dynamique. Si plusieurs pods ont besoin d’un accès simultané au même volume de stockage, vous pouvez utiliser le Stockage Blob Azure pour vous connecter à l’aide du système de fichiers réseau (NFS) ou de blobfuse. Cet article vous montre comment créer un partage de conteneur de stockage Blob Azure de manière dynamique utilisé par plusieurs pods dans un cluster AKS.
Pour plus d’informations sur les volumes Kubernetes, consultez Options de stockage pour les applications dans AKS.
Créer dynamiquement des volumes persistants de stockage Blob Azure à l’aide des classes de stockage intégrées
Une classe de stockage est utilisée pour définir la façon dont un conteneur de stockage d’objets blob Azure est créé. 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 le conteneur de stockage Azure Blob. Faites votre choix parmi les références SKU de redondance de stockage Azure suivantes pour skuName :
- Standard_LRS : Stockage localement redondant standard
- Premium_LRS : Stockage Premium localement redondant
- Standard_ZRS : stockage redondant interzone standard
- Premium_ZRS : stockage redondant interzone Premium
- Standard_GRS : Stockage géo-redondant standard
- Standard_RAGRS : Stockage géo-redondant avec accès en lecture standard
Lorsque vous utilisez des pilotes CSI de stockage sur AKS, il existe deux classes StorageClass supplémentaires intégrées qui utilisent le pilote CSI pour le stockage Blob Azure.
La stratégie de récupération sur les deux classes de stockage garantit que le stockage Azure Blob sous-jacent est supprimé lorsque le volume persistant respectif est supprimé. Les classes de stockage configurent également le conteneur pour qu’il soit extensible par défaut, car le paramètre set allowVolumeExpansion
a la valeur true.
Remarque
La réduction des volumes persistants n’est pas prise en charge.
Utilisez la commande kubectl get sc pour voir les classes de stockage. L’exemple suivant montre les classes de stockage azureblob-fuse-premium
et azureblob-nfs-premium
disponibles au sein d’un cluster AKS :
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
azureblob-fuse-premium blob.csi.azure.com Delete Immediate true 23h
azureblob-nfs-premium blob.csi.azure.com Delete Immediate true 23h
Pour utiliser ces classes de stockage, créez un PVC et un pod respectif qui les référence et les utilise. Une revendication de volume persistant est utilisée pour configurer automatiquement le stockage basé sur une classe de stockage. Un PVC peut utiliser l’une des classes de stockage précréées ou une classe de stockage définie par l’utilisateur pour créer un conteneur de stockage Azure Blob pour la référence SKU, la taille et le protocole 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é.
Utilisation d’un StatefulSet
Pour conserver un volume de stockage pour votre charge de travail, vous pouvez utiliser un StatefulSet. Cela facilite la correspondance entre les volumes existants et les nouveaux pods qui remplacent les volumes qui ont échoué. Les exemples suivants montrent comment configurer un StatefulSet pour le stockage d’objets blob à l’aide de Blobfuse ou du protocole NFS.
Prérequis
- L’identité de Plan de contrôle de votre cluster AKS (le nom de votre cluster AKS) est ajoutée au rôle Contributeur sur le réseau virtuel et NetworkSecurityGroup.
Créez un fichier nommé
azure-blob-nfs-ss.yaml
et copiez-y le YAML suivant.apiVersion: apps/v1 kind: StatefulSet metadata: name: statefulset-blob-nfs labels: app: nginx spec: serviceName: statefulset-blob-nfs replicas: 1 template: metadata: labels: app: nginx spec: nodeSelector: "kubernetes.io/os": linux containers: - name: statefulset-blob-nfs image: mcr.microsoft.com/oss/nginx/nginx:1.22 volumeMounts: - name: persistent-storage mountPath: /mnt/blob updateStrategy: type: RollingUpdate selector: matchLabels: app: nginx volumeClaimTemplates: - metadata: name: persistent-storage spec: storageClassName: azureblob-nfs-premium accessModes: ["ReadWriteMany"] resources: requests: storage: 100Gi
Créez le StatefulSet avec la commande kubectl create :
kubectl create -f azure-blob-nfs-ss.yaml
Étapes suivantes
- Pour savoir comment configurer un volume persistant statique ou dynamique, consultez Créer et utiliser un volume avec Stockage Blob Azure.
- Pour savoir comment utiliser le pilote CSI pour les disques Azure, consultez Utiliser des disques Azure avec un pilote CSI.
- Pour savoir comment utiliser le pilote CSI pour Azure Files, consultez Utiliser Azure Files avec un pilote CSI.
- Pour plus d’informations sur les bonnes pratiques en matière de stockage, consultez Meilleures pratiques relatives au stockage et aux sauvegardes dans Azure Kubernetes Service (AKS).
Azure Kubernetes Service