Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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 d’blobfuse ou de NFS (Network File System).
Cet article vous montre comment créer dynamiquement et statiquement des conteneurs de stockage Blob Azure à utiliser par plusieurs pods dans un cluster Azure Kubernetes Service (AKS).
Prerequisites
Le pilote CSI de stockage Blob Azure est activé sur votre cluster AKS.
Un compte de stockage activé NFS v3 pour pouvoir monter un volume persistant à l’aide du protocole NFS. Vous ne pouvez pas activer NFS v3 sur un compte de stockage existant. Pour plus d’informations, consultez Créer un compte NFS v3.
Pour prendre en charge un compte Azure Data Lake Storage lors de l’utilisation du montage blobfuse, effectuez les tâches suivantes :
- Pour créer un compte Data Lake Storage à l’aide du pilote dans l’approvisionnement dynamique, spécifiez
isHnsEnabled: "true"les paramètres de classe de stockage. - Pour activer l’accès blobfuse à un compte Data Lake Storage dans l’approvisionnement statique, spécifiez l’option
--use-adls=truede montage dans le volume persistant. - Si vous activez un compte de stockage avec un espace de noms hiérarchique, les volumes persistants existants doivent être remontés avec l’option de montage
--use-adls=trueappropriée.
- Pour créer un compte Data Lake Storage à l’aide du pilote dans l’approvisionnement dynamique, spécifiez
Par défaut, le cache blobfuse se trouve dans le
/mntrépertoire. Si la référence SKU de machine virtuelle fournit un disque temporaire, le/mntrépertoire est monté sur le disque temporaire. Toutefois, si la référence SKU de machine virtuelle ne fournit pas de disque temporaire, le/mntrépertoire est monté sur le disque du système d’exploitation, vous pouvez définir--tmp-path=l’option de montage pour spécifier un autre répertoire de cache.
Utiliser des classes de stockage intégrées pour créer des PV dynamiques avec le stockage Blob Azure
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. Quand vous utilisez des pilotes de stockage CSI sur AKS, il y a deux autres StorageClasses intégrées qui utilisent le pilote de stockage Azure Blob CSI.
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.
Note
La réduction des volumes persistants n’est pas prise en charge.
Vous pouvez sélectionner l’un des SKU de redondance de stockage Azure suivants pour le paramètre skuname dans la définition de la classe de stockage.
- Standard_LRS : stockage localement redondant standard
- Premium_LRS : stockage localement redondant Premium
- Standard_ZRS : stockage redondant dans une zone standard
- Premium_ZRS : stockage redondant interzone (ZRS) Premium
- Standard_GRS : stockage géoredondant standard
- Standard_RAGRS : Stockage géoredondant avec accès en lecture standard
Créer des classes de stockage personnalisées pour les PV dynamiques avec Stockage Blob Azure
Les classes de stockage par défaut conviennent à la plupart des scénarios. Dans certains cas, vous pouvez avoir votre propre classe de stockage personnalisée avec vos propres paramètres. Dans cette section, nous fournissons deux exemples : l’un utilisant le protocole NFS et l’autre à l’aide de blobfuse.
Exemple de classe de stockage personnalisé utilisant le protocole NFS
Le manifeste de cet exemple monte un conteneur de stockage Blob à l’aide du protocole NFS. Vous pouvez l’utiliser pour ajouter le tags paramètre.
Créez un fichier nommé
blob-nfs-sc.yamlet collez-le dans l’exemple de manifeste suivant :apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: blob-nfs provisioner: blob.csi.azure.com parameters: protocol: nfs tags: environment=Development volumeBindingMode: Immediate allowVolumeExpansion: trueCréez la classe de stockage à l’aide de la
kubectl applycommande :kubectl apply -f blob-nfs-sc.yamlVotre sortie doit ressembler à l’exemple suivant :
storageclass.storage.k8s.io/blob-nfs created
Exemple de classe de stockage personnalisé utilisant blobfuse
Le manifeste dans cet exemple utilise Blobfuse et monte un conteneur de stockage Blob. Vous pouvez l’utiliser pour mettre à jour le skuName paramètre.
Créez un fichier nommé
blobfuse-sc.yamlet collez-le dans l’exemple de manifeste suivant :apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: blob-fuse provisioner: blob.csi.azure.com parameters: skuName: Standard_GRS # available values: Standard_LRS, Premium_LRS, Standard_GRS, Standard_RAGRS reclaimPolicy: Delete volumeBindingMode: Immediate allowVolumeExpansion: true mountOptions: - -o allow_other - --file-cache-timeout-in-seconds=120 - --use-attr-cache=true - --cancel-list-on-mount-seconds=10 # prevent billing charges on mounting - -o attr_timeout=120 - -o entry_timeout=120 - -o negative_timeout=120 - --log-level=LOG_WARNING # LOG_WARNING, LOG_INFO, LOG_DEBUG - --cache-size-mb=1000 # Default will be 80% of available memory, eviction will happen beyond that.Créez la classe de stockage à l’aide de la
kubectl applycommande :kubectl apply -f blobfuse-sc.yamlVotre sortie doit ressembler à l’exemple suivant :
storageclass.storage.k8s.io/blob-fuse created
Paramètres de classe de stockage pour les PV dynamiques avec Stockage Blob Azure
Utilisez les groupes de paramètres suivants pour définir une classe de stockage personnalisée pour vos revendications de volume persistant (PVC) avec Azure Stockage Blob :
-
Compte de stockage :
skuName, ,locationresourceGroup,subscriptionID,networkEndpointTypetagsstorageAccountrequireInfraEncryptionaccessTierallowBlobPublicAccessallowSharedKeyAccesspublicNetworkAccess.matchTags -
Conteneur et point de terminaison :
protocol, ,containerName,useDataPlaneAPIstorageEndpointSuffixserversoftDeleteBlobscontainerNamePrefixsoftDeleteContainerset .enableBlobVersioning -
BlobFuse :
storeAccountKey, ,secretNamegetLatestAccountKey,secretNamespace, etisHnsEnabled. -
NFS :
mountPermissionsetfsGroupChangePolicy. -
Réseau virtuel :
vnetResourceGroup, ,subnetNamevnetNameetvnetLinkName.
Configurer les paramètres de compte de stockage pour les VV dynamiques avec Azure stockage d’objets blob
Utilisez les paramètres suivants pour configurer le compte de stockage Azure pour un pv approvisionné dynamiquement :
| Nom | Signification | Valeurs disponibles | Obligatoire | Valeur par défaut |
|---|---|---|---|---|
skuName |
Spécifiez un type de compte de stockage Azure (alias : storageAccountType). |
Standard_LRS, , Premium_LRS, Standard_RAGRSStandard_GRS, , Standard_ZRSPremium_ZRS |
Non | Standard_LRS |
location |
Spécifiez un emplacement Azure. | eastus |
Non | Si le paramètre est vide, le pilote utilise le même nom d’emplacement que le cluster actuel. |
resourceGroup |
Spécifiez un nom groupe de ressources Azure. | myResourceGroup | Non | Si le paramètre est vide, le pilote utilise le même nom de groupe de ressources que le cluster actuel. |
subscriptionID |
Spécifiez l’ID d’abonnement Azure dans lequel le répertoire de stockage d’objets blob est créé. | ID d’abonnement Azure | Non | Si le paramètre n’est pas vide, resourceGroup doit être fourni. |
storageAccount |
Spécifiez un type de compte de stockage de Azure. | storageAccountName | Non | Lorsqu’un nom de compte de stockage spécifique n’est pas 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. |
networkEndpointType |
Spécifiez le type de point de terminaison réseau pour le compte de stockage créé par le pilote. Si vous spécifiez privateEndpoint, le pilote crée un point de terminaison privé pour le compte de stockage. Dans d’autres cas, le pilote crée un point de terminaison de service pour le protocole NFS. |
"", privateEndpoint |
Non |
"". Pour un cluster AKS, ajoutez le nom du cluster AKS au rôle Contributeur dans le groupe de ressources hébergeant le réseau virtuel. |
accessTier |
Spécifiez le niveau d’accès du compte de stockage. |
Hot, , CoolPremium |
Non | Utilise le niveau par défaut pour le type de compte de stockage sélectionné. Les comptes Premium prennent en charge uniquement Premium. |
allowBlobPublicAccess |
Autoriser ou interdire l’accès public à tous les objets blob ou conteneurs pour un compte de stockage créé par le pilote. |
true, false |
Non | false |
allowSharedKeyAccess |
Autoriser ou interdire l’accès à clé partagée pour un compte de stockage créé par le pilote. Ce paramètre s’applique aux montages NFS et aux montages BlobFuse qui utilisent l’identité managée. |
true, false |
Non | true |
requireInfraEncryption |
Exiger une couche secondaire de chiffrement géré par la plateforme pour les données au repos dans un compte de stockage créé par le pilote. |
true, false |
Non | false |
publicNetworkAccess |
Définissez la propriété d’accès réseau public pour un compte de stockage créé par le pilote. |
Enabled, , DisabledSecuredByPerimeter |
Non | Utilise la stockage Azure par défaut. |
tags |
Créez des étiquettes sur un nouveau compte de stockage. | Format des étiquettes : foo=aaa,bar=bbb |
Non | "" |
matchTags |
Mettre en correspondance les balises lorsque le pilote recherche un compte de stockage approprié. |
true, false |
Non | false |
Configurer des paramètres de conteneur et de point de terminaison pour les VV dynamiques avec Azure stockage Blob
Utilisez les paramètres suivants pour configurer le conteneur, le protocole de montage, le point de terminaison de stockage et les balises d’un pv approvisionné dynamiquement :
| Nom | Description | Valeurs disponibles | Obligatoire | Valeur par défaut |
|---|---|---|---|---|
protocol |
Spécifiez le montage BlobFuse, BlobFuse2 ou NFS v3. |
fuse, , fuse2nfs |
Non | fuse |
containerName |
Spécifiez le nom du conteneur (répertoire) existant. | container | Non | S’il est vide, le pilote crée un nom de conteneur, en commençant par pvc-fuse blobfuse ou pvc-nfs pour NFS v3. |
containerNamePrefix |
Spécifiez le préfixe du répertoire de stockage Azure créé par le pilote. | Ne peut contenir que des lettres minuscules, des chiffres et des traits d’union et doit comporter moins de 21 caractères. | Non | |
server |
Spécifiez le nom de domaine du compte de stockage Azure. | Nom de domaine DNS du compte de stockage existant, par exemple <storage-account>.blob.core.windows.net. |
Non | S’il est vide, le pilote utilise par défaut <storage-account>.blob.core.windows.net ou d’autres noms de domaine DNS du compte de stockage cloud souverain. |
storageEndpointSuffix |
Spécifiez le suffixe de point de terminaison de stockage Azure. | core.windows.net |
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. |
useDataPlaneAPI |
Utilisez l’API de plan de données stockage Azure pour créer et supprimer des conteneurs. Cette option peut éviter la limitation du fournisseur de ressources de stockage, mais échoue lorsque le pare-feu du compte de stockage ou les règles de réseau virtuel bloquent l’accès au plan de données. |
true, false |
Non | false |
softDeleteBlobs |
Activez la suppression réversible pour les objets blob et spécifiez la période de rétention en jours. | Période de rétention, par exemple 7 |
Non | Désactivé |
softDeleteContainers |
Activez la suppression réversible pour les conteneurs et spécifiez la période de rétention en jours. | Période de rétention, par exemple 7 |
Non | Désactivé |
enableBlobVersioning |
Activer le contrôle de version des objets blob. Vous ne pouvez pas activer le contrôle de version lorsque protocol c’est nfs ou isHnsEnabled est true. |
true, false |
Non | false |
Configurer des paramètres BlobFuse pour les VV dynamiques avec Azure stockage Blob
Les paramètres suivants s’appliquent uniquement lorsque vous utilisez BlobFuse pour un pv approvisionné dynamiquement :
| Nom | Description | Valeurs disponibles | Obligatoire | Valeur par défaut |
|---|---|---|---|---|
storeAccountKey |
Spécifiez la clé de compte de magasin sur le secret Kubernetes. Remarque : false signifie que le pilote utilise l’identité kubelet pour obtenir la clé de compte. |
true,false |
Non | true |
getLatestAccountKey |
Obtenez la dernière clé de compte de stockage en fonction de son heure de création au lieu d’utiliser la première clé. |
true, false |
Non | false |
secretName |
Spécifiez le nom du secret pour stocker la clé de compte. | Non | ||
secretNamespace |
Spécifiez l’espace de noms de secret pour stocker la clé de compte. |
default, kube-system, etc. |
Non | Espace de noms PVC |
isHnsEnabled |
Activer Hierarchical namespace pour un compte Azure Data Lake Storage. |
true,false |
Non | false |
Configurer des paramètres NFS pour les VV dynamiques avec Azure stockage Blob
Le paramètre suivant s’applique uniquement lorsque vous utilisez NFS pour un pv approvisionné dynamiquement :
| Nom | Description | Valeurs disponibles | Obligatoire | Valeur par défaut |
|---|---|---|---|---|
mountPermissions |
Spécifiez les autorisations de dossiers montés. | La valeur par défaut est 0777. Si la valeur est définie à 0, le pilote n’exécute pas chmod après le montage. |
Non | 0777 |
fsGroupChangePolicy |
Spécifiez comment le pilote modifie la propriété du volume. Le pilote ignore securityContext.fsGroupChangePolicy dans la spécification du pod. |
OnRootMismatch, , AlwaysNone |
Non | OnRootMismatch |
Configurer des paramètres de réseau virtuel pour les machines virtuelles dynamiques avec Azure stockage d’objets blob
Utilisez les paramètres suivants lorsque le pilote configure l’accès au réseau virtuel pour un pv approvisionné dynamiquement :
| Nom | Description | Valeurs disponibles | Obligatoire | Valeur par défaut |
|---|---|---|---|---|
vnetResourceGroup |
Spécifiez le groupe de ressources qui contient le réseau virtuel. | Nom du groupe de ressources existant | Non | Utilise la vnetResourceGroup valeur dans la configuration cloud Azure. |
vnetName |
Spécifiez le nom du réseau virtuel. | Nom de réseau virtuel existant | Non | Utilise la vnetName valeur dans la configuration cloud Azure. |
subnetName |
Spécifiez un ou plusieurs sous-réseaux de nœuds AKS existants. Séparez plusieurs noms de sous-réseau par des virgules. | Noms de sous-réseaux existants | Non | Met à jour tous les sous-réseaux du réseau virtuel du cluster. |
vnetLinkName |
Spécifiez la liaison de réseau virtuel associée à la zone DNS privée. | Nom de lien de réseau virtuel existant ou nouveau | Non | <vnetName>-vnetlink |
Configurer des points de terminaison privés pour les VV dynamiques avec Azure stockage d’objets blob
Note
Si le compte de stockage est créé par le pilote, vous devez uniquement spécifier le networkEndpointType: privateEndpoint paramètre dans la classe de stockage. Le pilote CSI crée le point de terminaison privé et la zone DNS privée (nommée privatelink.blob.core.windows.net) avec le compte. Si vous apportez votre propre compte de stockage, vous devez créer le point de terminaison privé pour le compte de stockage. Si vous utilisez le stockage Blob Azure dans un cluster isolé réseau, vous devez créer une classe de stockage personnalisée avec « networkEndpointType : privateEndpointpoint ». Vous pouvez utiliser l’exemple de manifeste suivant comme référence :
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: blob-fuse
provisioner: blob.csi.azure.com
parameters:
skuName: Premium_LRS # available values: Standard_LRS, Premium_LRS, Standard_GRS, Standard_RAGRS, Standard_ZRS, Premium_ZRS
protocol: fuse2
networkEndpointType: privateEndpoint
reclaimPolicy: Delete
volumeBindingMode: Immediate
allowVolumeExpansion: true
mountOptions:
- -o allow_other
- --file-cache-timeout-in-seconds=120
- --use-attr-cache=true
- --cancel-list-on-mount-seconds=10 # prevent billing charges on mounting
- -o attr_timeout=120
- -o entry_timeout=120
- -o negative_timeout=120
- --log-level=LOG_WARNING # LOG_WARNING, LOG_INFO, LOG_DEBUG
- --cache-size-mb=1000 # Default will be 80% of available memory, eviction will happen beyond that.
Créer un PVC pour l’approvisionnement dynamique
Une revendication de volume persistant utilise l’objet de classe de stockage pour provisionner dynamiquement un stockage Blob Azure. Vous pouvez utiliser l’exemple de manifeste YAML dans cette section pour créer un PVC d'une taille de 5 Go avec un accès ReadWriteMany. Pour plus d’informations sur les modes d’accès, consultez les modes d’accès Kubernetes PV.
Créez un fichier nommé
blob-nfs-pvc.yamlet collez-le dans le manifeste YAML suivant :apiVersion: v1 kind: PersistentVolumeClaim metadata: name: azure-blob-storage spec: accessModes: - ReadWriteMany storageClassName: azureblob-nfs-premium resources: requests: storage: 5GiCréez le PVC à l’aide de la
kubectl createcommande :kubectl create -f blob-nfs-pvc.yamlAffichez l’état du PVC avec la
kubectl getcommande :kubectl get pvc azure-blob-storageVotre sortie doit ressembler à l’exemple de sortie suivant, ce qui montre que le PVC est dans un
Boundétat :NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE azure-blob-storage Bound pvc-aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb 5Gi RWX azureblob-nfs-premium 92m
Monter un volume de stockage d’objets blob provisionné dynamiquement dans un pod
Le YAML suivant crée un pod qui utilise la réclamation de volume persistant azure-blob-storage pour monter le stockage Blob Azure sur le chemin /mnt/blob.
Créez un fichier nommé
blob-nfs-pvet collez le manifeste YAML suivant. Vérifiez que les correspondances avecclaimNamele PVC que vous avez créé précédemment (azure-blob-storage).kind: Pod apiVersion: v1 metadata: name: mypod spec: containers: - name: mypod image: mcr.microsoft.com/oss/nginx/nginx:1.17.3-alpine resources: requests: cpu: 100m memory: 128Mi limits: cpu: 250m memory: 256Mi volumeMounts: - mountPath: "/mnt/blob" name: volume readOnly: false volumes: - name: volume persistentVolumeClaim: claimName: azure-blob-storageCréez le pod à l’aide de la
kubectl applycommande :kubectl apply -f blob-nfs-pv.yamlUne fois le pod en cours d’exécution, créez un fichier nommé
test.txtà l’aide de la commande suivante :kubectl exec mypod -- touch /mnt/blob/test.txtVérifiez que le disque est correctement monté à l’aide de la commande suivante pour répertorier les fichiers dans le répertoire monté :
kubectl exec mypod -- ls /mnt/blobVotre sortie doit ressembler à l’exemple de sortie suivant, qui montre le
test.txtfichier que vous avez créé dans le stockage Blob Azure monté :test.txt
Utiliser un StatefulSet pour gérer le cycle de vie d’un volume avec stockage Blob Azure
Pour conserver un volume de stockage pour votre charge de travail, vous pouvez utiliser un StatefulSet. Cet état permet d’assurer la correspondance entre les volumes existants et les nouveaux modules destinés à remplacer ceux défaillants. Les exemples suivants montrent comment configurer un StatefulSet pour le stockage d’objets blob à l’aide du protocole NFS ou d’Blobfuse.
Note
Si vous utilisez le protocole NFS, l'identité de votre plan de contrôle de cluster AKS (nom de votre cluster AKS) doit être ajoutée au rôle Contributeur sur le réseau virtuel et le groupe de sécurité réseau.
Créez un fichier nommé
azure-blob-nfs-ss.yamlet collez-le dans le manifeste 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/azurelinux/base/nginx:1.25 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: 100GiCréez l’objet StatefulSet à l’aide de la
kubectl createcommande :kubectl create -f azure-blob-nfs-ss.yaml
Créer un PV statique avec Stockage Blob Azure
Les sections suivantes fournissent des instructions pour créer un PV statique avec le stockage Blob Azure. Un pv statique est un volume persistant créé manuellement par un administrateur. Ce PV est disponible pour être utilisé par les pods du cluster. Pour utiliser un PV statique, vous créez un PVC qui fait référence au PV, puis créez un pod qui fait référence au PVC.
Paramètres de volume CSI pour les applications virtuelles statiques avec Azure stockage d’objets blob
Le tableau suivant répertorie les paramètres que vous pouvez utiliser dans la source de volume CSI pour un pv statique avec Azure Stockage Blob :
| Nom | Signification | Valeurs disponibles | Obligatoire | Valeur par défaut |
|---|---|---|---|---|
volumeHandle |
Spécifiez une valeur que le pilote peut utiliser pour identifier de manière unique le conteneur d’objets blob de stockage dans le cluster. | Une méthode recommandée pour produire une valeur unique consiste à combiner le nom du compte de stockage global unique et le nom du conteneur : {account-name}_{container-name}.Remarque : Les caractères # et / sont réservés à une utilisation interne et ne peuvent pas être utilisés dans un descripteur de volume. |
Oui | |
volumeAttributes.subscriptionID |
Spécifiez l’ID d’abonnement Azure où se trouve le compte de stockage. | ID d’abonnement Azure | Non | Si le paramètre n’est pas vide, volumeAttributes.resourceGroup doit être fourni. |
volumeAttributes.resourceGroup |
Spécifiez le nom du groupe de ressources Azure. | myResourceGroup | Non | 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 | Oui | |
volumeAttributes.containerName |
Spécifiez le nom du conteneur existant. | container | Oui | |
volumeAttributes.protocol |
Spécifiez le montage BlobFuse, BlobFuse2 ou NFS v3. |
fuse, , fuse2nfs |
Non | fuse |
volumeAttributes.server |
Spécifiez l’adresse du serveur de compte de stockage Azure. | Adresse du serveur existante, par exemple <storage-account>.blob.core.windows.net |
Non | Utilise l’adresse du serveur par défaut pour l’environnement cloud actuel. |
volumeAttributes.storageEndpointSuffix |
Spécifiez le suffixe de point de terminaison de stockage Azure. |
core.windows.netou le suffixe d’un autre Azure cloud |
Non | Utilise le suffixe par défaut pour l’environnement cloud actuel. |
| --- | Les paramètres suivants sont uniquement pour blobfuse | --- | --- | --- |
volumeAttributes.secretName |
Nom de secret qui stocke le nom et la clé du compte de stockage (s’applique uniquement à SMB). | Non | ||
volumeAttributes.secretNamespace |
Spécifiez le namespace du secret pour stocker la clé de compte. | default |
Non | Espace de noms PVC |
volumeAttributes.getLatestAccountKey |
Obtenez la dernière clé de compte de stockage en fonction de son heure de création au lieu d’utiliser la première clé. |
true, false |
Non | false |
nodeStageSecretRef.name |
Spécifiez le nom du secret Kubernetes qui contient les informations d’identification pour la mise en lots du volume. | Nom de secret Kubernetes existant. Le secret doit contenir l’une des clés suivantes : azurestorageaccountkey, , azurestorageaccountsastoken, msisecretou azurestoragespnclientsecret. |
Non | |
nodeStageSecretRef.namespace |
Spécifiez l’espace de noms du secret. | Espace de noms Kubernetes | Oui | |
| --- | Les paramètres suivants sont uniquement pour le protocole NFS | --- | --- | --- |
volumeAttributes.mountPermissions |
Spécifiez les autorisations de dossiers montés. | 0777 |
Non | |
volumeAttributes.fsGroupChangePolicy |
Spécifiez comment le pilote modifie la propriété du volume. Le pilote ignore securityContext.fsGroupChangePolicy dans la spécification du pod. |
OnRootMismatch, , AlwaysNone |
Non | OnRootMismatch |
| --- |
Les paramètres suivants concernent uniquement la fonctionnalité : blobfuse Authentification de l'identité gérée et du Nom Principal du Service |
--- | --- | --- |
volumeAttributes.AzureStorageAuthType |
Spécifiez le type d’authentification. |
Key, , SASMSI, ,SPN |
Non | Key |
volumeAttributes.AzureStorageIdentityClientID |
Spécifiez l’ID client d’identité. | Non | ||
volumeAttributes.AzureStorageIdentityObjectID |
Spécifiez l’ID d’objet d’identité. Ce paramètre est déconseillé. | Non | ||
volumeAttributes.AzureStorageIdentityResourceID |
Spécifiez l’ID de ressource d’identité. | Non | ||
volumeAttributes.MSIEndpoint |
Spécifiez le point de terminaison MSI. | Non | ||
volumeAttributes.AzureStorageSPNClientID |
Spécifiez l’ID client du Principal de Service Azure (SPN). | Non | ||
volumeAttributes.AzureStorageSPNTenantID |
Spécifiez l’ID de locataire Azure SPN. | Non | ||
volumeAttributes.AzureStorageAADEndpoint |
Spécifiez le point de terminaison Microsoft Entra. | Non | ||
| --- | Les paramètres suivants sont uniquement pour l’authentification d’identité de charge de travail blobfuse | --- | --- | --- |
volumeAttributes.ClientID |
Spécifiez l’ID client de l’identité managée utilisée pour l’authentification d’identité de charge de travail. | ID client d'identité gérée | Non | |
volumeAttributes.mountWithWorkloadIdentityToken |
Monter BlobFuse avec un jeton d’identité de charge de travail. Cette fonctionnalité est en préversion. Spécifiez la valeur sous forme de chaîne. |
"true", "false" |
Non | "false" |
| --- | Les paramètres suivants sont uniquement destinés à la fonctionnalité : clé de compte de lecture blobfuse ou jeton SAP à partir du coffre de clés | --- | --- | --- |
volumeAttributes.keyVaultURL |
Spécifiez le nom DNS d’Azure Key Vault. | {vault-name}.vault.azure.net | Non | |
volumeAttributes.keyVaultSecretName |
Spécifiez le nom du secret Azure Key Vault. | Nom de secret Azure Key Vault existant. | Non | |
volumeAttributes.keyVaultSecretVersion |
Version du secret Azure Key Vault. | Version existante | Non | S’il est vide, le pilote utilise la version actuelle. |
Créer un conteneur de stockage Blob
Lorsque vous créez une ressource de stockage Blob Azure à utiliser avec AKS, vous pouvez créer la ressource dans le groupe de ressources de nœud. Cette approche permet au cluster AKS d’accéder à la ressource de stockage Blob et de la gérer.
Obtenez le nom du groupe de ressources de nœud de votre cluster AKS en utilisant la commande
az aks showavec le paramètre--query nodeResourceGroup.az aks show --resource-group myResourceGroup --name myAKSCluster --query nodeResourceGroup -o tsvLa sortie de la commande ressemble à l’exemple suivant :
MC_myResourceGroup_myAKSCluster_eastusSi vous créez le compte de stockage dans le groupe de ressources de nœud, utilisez le nom du groupe de ressources de nœud retourné à l’étape précédente (par exemple).
MC_myResourceGroup_myAKSCluster_eastusEnsuite, suivez les étapes décrites dans Gérer le stockage d’objets blob pour autoriser l’accès et créer un conteneur dans ce compte de stockage.
Monter le volume
Dans cette section, vous montez le volume persistant à l’aide du protocole NFS ou d’Blobfuse.
Le compte de stockage doit avoir NFS v3 et l’espace de noms hiérarchique activés. Le montage du stockage Blob à l’aide du protocole NFS v3 ne s’authentifie pas à l’aide d’une clé de compte. Le sous-réseau du nœud AKS doit disposer d’un accès réseau au compte de stockage NFS via un réseau virtuel ou un point de terminaison privé sélectionné. Assurez-vous que les groupes de sécurité réseau autorisent le trafic NFS sur les ports 111 et 2048. Pour plus d’informations sur la configuration de l’accès NFS à votre compte de stockage, consultez Mount Stockage Blob à l’aide du protocole NFS (Network File System) 3.0.
L’exemple suivant montre comment monter un conteneur de stockage d’objets blob en tant que volume persistant à l’aide du protocole NFS.
Créez un fichier nommé
pv-blob-nfs.yamlet collez le fichier YAML suivant. Sousspec.csi.volumeAttributes, mettez à jourresourceGroup,storageAccountetcontainerName.Note
volumeHandlela valeur doit être un volumeID unique pour chaque conteneur blob identique dans le cluster. Le caractère#et/sont réservés à une utilisation interne et ne peuvent pas être utilisés.apiVersion: v1 kind: PersistentVolume metadata: annotations: pv.kubernetes.io/provisioned-by: blob.csi.azure.com name: pv-blob spec: capacity: storage: 1Pi accessModes: - ReadWriteMany persistentVolumeReclaimPolicy: Retain # If set as "Delete" container would be removed after pvc deletion storageClassName: azureblob-nfs-premium csi: driver: blob.csi.azure.com # make sure volumeid is unique for every identical storage blob container in the cluster # character `#` and `/` are reserved for internal use and cannot be used in volumehandle volumeHandle: account-name_container-name volumeAttributes: resourceGroup: resourceGroupName storageAccount: storageAccountName containerName: containerName protocol: nfsNote
Bien que l'attribut de capacité de l'API Kubernetes soit obligatoire, le pilote CSI de stockage Blob Azure n'utilise pas cette valeur, car vous pouvez écrire des données de manière flexible jusqu'à atteindre la limite de capacité de votre compte de stockage. La valeur est utilisée uniquement pour la correspondance de taille entre les PC et les PC. L’exemple utilise une valeur fictive de
1Pi; cette valeur ne définit pas la capacité du conteneur de stockage d’objets blob.Créez le PV à l’aide de la
kubectl createcommande :kubectl create -f pv-blob-nfs.yamlCréez un fichier nommé
pvc-blob-nfs.yamlet collez-le dans le yaML suivant. SousvolumeName, mettez à jour la valeur pour qu’elle corresponde au nom du pv créé à l’étape précédente.kind: PersistentVolumeClaim apiVersion: v1 metadata: name: pvc-blob spec: accessModes: - ReadWriteMany resources: requests: storage: 10Gi volumeName: pv-blob storageClassName: azureblob-nfs-premiumCréez le PVC à l’aide de la
kubectl createcommande :kubectl create -f pvc-blob-nfs.yaml
Utiliser le volume persistant
Le fichier YAML suivant crée un pod qui utilise le PV ou le PVC nommé pvc-blob, créé précédemment, pour monter le stockage Azure Blob sur le chemin /mnt/blob.
Créez un fichier nommé
nginx-pod-blob.yamlet collez-le dans le manifeste YAML suivant. Vérifiez que les correspondances avecclaimNamele PVC créé précédemment (pvc-blob).kind: Pod apiVersion: v1 metadata: name: nginx-blob spec: nodeSelector: "kubernetes.io/os": linux containers: - image: mcr.microsoft.com/oss/nginx/nginx:1.17.3-alpine name: nginx-blob volumeMounts: - name: blob01 mountPath: "/mnt/blob" readOnly: false volumes: - name: blob01 persistentVolumeClaim: claimName: pvc-blobCréez le pod et montez le PVC à l’aide de la
kubectl createcommande :kubectl create -f nginx-pod-blob.yamlCréez une session shell interactive avec le pod pour vérifier que le stockage Blob est monté correctement à l’aide de la commande suivante
kubectl exec:kubectl exec -it nginx-blob -- df -hVotre sortie devrait ressembler à l’exemple de sortie suivant, qui montre que le stockage Blob est monté sur le chemin
/mnt/blob:Filesystem Size Used Avail Use% Mounted on ... blobfuse 14G 41M 13G 1% /mnt/blob ...