Partager via


Utiliser le Stockage de conteneurs Azure avec des disques managés Azure

Azure Container Storage est un service cloud de gestion, de déploiement et d’orchestration de volumes conçu de manière native pour les conteneurs. Cet article vous explique comment configurer Azure Container Storage pour utiliser un disque managé Azure comme stockage principal pour vos charges de travail Kubernetes. À la fin, vous aurez un pod qui utilise des disques managés Azure comme stockage.

Prérequis

  • Si vous n’avez pas d’abonnement Azure, créez un compte gratuit avant de commencer.

  • Cet article nécessite la dernière version (2.35.0 ou ultérieure) de l’interface Azure CLI. Consultez Comment installer l’interface Azure CLI. Si vous utilisez l’environnement Bash dans Azure Cloud Shell, la version la plus récente est déjà installée. Si vous prévoyez d’exécuter les commandes localement et non dans Azure Cloud Shell, veillez à le faire avec des privilèges Administrateur. Pour obtenir plus d’informations, consultez Démarrage d’Azure Cloud Shell.

  • Vous aurez besoin du client de ligne de commande Kubernetes, kubectl. Si vous utilisez Azure Cloud Shell, il est déjà installé ; vous pouvez aussi l’installer localement en exécutant la commande az aks install-cli.

  • Si vous n’avez pas encore installé Azure Container Storage, suivez les instructions dans Utiliser Azure Container Storage avec Azure Kubernetes Service.

  • Vérifiez si votre région cible est prise en charge dans les Régions de stockage de conteneurs Azure.

  • Pour utiliser le Stockage de conteneurs Azure avec des disques managés Azure, votre cluster AKS doit disposer d’un pool de nœuds d’au moins trois machines virtuelles à usage général telles que standard_d4s_v5 pour les nœuds de cluster, chacune avec un minimum de quatre processeurs virtuels (vCPU).

Créer et attacher des volumes persistants

Suivez ces étapes pour créer et attacher un volume persistant.

1. Créer un pool de stockage

Tout d’abord, créez un pool de stockage, qui est un regroupement logique de stockage pour votre cluster Kubernetes, en le définissant dans un fichier manifeste YAML.

Vous disposez des options suivantes pour la création d’un pool de stockage :

Si vous avez activé Azure Container Storage en utilisant les commandes az aks create ou az aks update, il est possible que vous disposiez déjà d’un pool de stockage. Utilisez kubectl get sp -n acstor pour obtenir la liste des pools de stockage. Si vous souhaitez utiliser un pool de stockage déjà disponible, vous pouvez ignorer cette étape et passer à Afficher les classes de stockage disponibles.

Créer un pool de stockage dynamique

Suivez ces étapes afin de créer un pool de stockage dynamique pour des disques Azure.

  1. Utilisez votre éditeur de texte favori pour créer un fichier manifeste YAML tel que code acstor-storagepool.yaml.

  2. Collez le code suivant. Vous pouvez choisir n’importe quelle valeur nom du pool de stockage. Pour skuName, spécifiez le niveau de performance et de redondance. Les valeurs acceptables sont Premium_LRS, Standard_LRS, StandardSSD_LRS, UltraSSD_LRS, Premium_ZRS, PremiumV2_LRS et StandardSSD_ZRS. Pour le stockage, spécifiez la capacité de stockage du pool en Gi ou Ti.

    apiVersion: containerstorage.azure.com/v1
    kind: StoragePool
    metadata:
      name: azuredisk
      namespace: acstor
    spec:
      poolType:
        azureDisk:
          skuName: Premium_LRS
      resources:
        requests:
          storage: 1Ti
    

    Si vous utilisez des disques UltraSSD_LRS ou PremiumV2_LRS, vous pouvez définir les IOPS et le débit à l’aide des paramètres IOPSReadWrite et MBpsReadWrite de la définition de votre pool de stockage.

    IOPSReadWrite fait référence au nombre d’IOPS autorisés pour les disques SSD Ultra et Premium v2 LRS. Pour plus d’informations, consultez IOPS des disques Ultra et IOPS des SSD Premium v2.

    MBpsReadWrite fait référence à la bande passante autorisée pour les disques SSD Ultra et Premium v2 LRS. Les Mbits/s font référence à des millions d’octets par seconde (Mo/s = 10^6 octets par seconde). Pour plus d’informations, consultez débit des disques Ultra et débit des SSD Premium v2.

    apiVersion: containerstorage.azure.com/v1
    kind: StoragePool
    metadata:
      name: azuredisk
      namespace: acstor
    spec:
      poolType:
        azureDisk:
          skuName: PremiumV2_LRS
          iopsReadWrite: 5000
          mbpsReadWrite: 200
      resources:
        requests:
          storage: 1Ti
    
  3. Enregistrez le fichier manifeste YAML, puis appliquez-le pour créer le pool de stockage.

    kubectl apply -f acstor-storagepool.yaml 
    

    Une fois la création du pool de stockage terminée, vous verrez un message comme suit :

    storagepool.containerstorage.azure.com/azuredisk created
    

    Vous pouvez également exécuter cette commande pour vérifier l’état du pool de stockage. Remplacez <storage-pool-name> par la valeur nom de votre pool de stockage. Pour cet exemple, la valeur est azuredisk.

    kubectl describe sp <storage-pool-name> -n acstor
    

Lorsque le pool de stockage est créé, Azure Container Storage crée une classe de stockage en votre nom, à l’aide de la convention d’affectation de noms acstor-<storage-pool-name>. Vous pouvez maintenant afficher les classes de stockage disponibles et créer une revendication de volume persistant.

Créer un pool de stockage préprovisionné

Si vous disposez de disques managés Azure déjà provisionnés, vous pouvez créer un pool de stockage préprovisionné en utilisant ces disques. Comme les disques sont déjà provisionnés, vous n’avez pas besoin de spécifier le skuName ou la capacité de stockage lors de la création du pool de stockage.

Suivez ces étapes pour créer un pool de stockage préprovisionné pour des disques Azure.

  1. Connectez-vous au portail Azure.

  2. Pour chaque disque que vous voulez utiliser, accédez au disque managé Azure, puis sélectionnez Paramètres>Propriétés. Copiez l’intégralité de la chaîne sous ID de ressource et placez-la dans un fichier texte.

  3. Utilisez votre éditeur de texte favori pour créer un fichier manifeste YAML tel que code acstor-storagepool.yaml.

  4. Collez le code suivant. Vous pouvez choisir n’importe quelle valeur nom du pool de stockage. Remplacez <resource-id> par l’ID de ressource de chaque disque managé. Enregistrez le fichier.

    apiVersion: containerstorage.azure.com/v1
    kind: StoragePool
    metadata:
      name: sp-preprovisioned
      namespace: acstor
    spec:
      poolType:
        azureDisk:
          disks:
            - reference <resource-id1>
            - reference <resource-id2>
    
  5. Appliquez le fichier manifeste YAML pour créer le pool de stockage.

    kubectl apply -f acstor-storagepool.yaml 
    

    Une fois la création du pool de stockage terminée, vous verrez un message comme suit :

    storagepool.containerstorage.azure.com/sp-preprovisioned created
    

    Vous pouvez également exécuter cette commande pour vérifier l’état du pool de stockage. Remplacez <storage-pool-name> par la valeur nom de votre pool de stockage. Pour cet exemple, la valeur est sp-preprovisioned.

    kubectl describe sp <storage-pool-name> -n acstor
    

Lorsque le pool de stockage est créé, Azure Container Storage crée une classe de stockage en votre nom, à l’aide de la convention d’affectation de noms acstor-<storage-pool-name>. Vous pouvez maintenant afficher les classes de stockage disponibles et créer une revendication de volume persistant.

Créer un pool de stockage dynamique au moyen de votre propre clé de chiffrement (facultatif)

Toutes les données d’un compte de stockage Azure sont chiffrées au repos. Par défaut, les données sont chiffrées avec des clés managées par Microsoft Pour obtenir plus de contrôle sur les clés de chiffrement, vous pouvez appliquer des clés gérées par le client (CMK) à la création de votre pool de stockage pour chiffrer les volumes persistants que vous créez.

Pour utiliser votre propre clé pour le chiffrement côté serveur, vous devez avoir Azure Key Vault avec une clé. Le coffre de clés doit avoir une protection contre le vidage activée et utiliser le modèle d’autorisation RBAC Azure. Découvrez plus d’informations sur les clés managées par le client sur Linux.

Lors de la création de votre pool de stockage, vous devez définir les paramètres de CMK. Les paramètres de chiffrement de CMK requis sont :

  • KeyVersion spécifie la version de clé à utiliser
  • KeyName est le nom de votre clé
  • keyVaultUri est l’URI d’Azure Key Vault, par exemple https://user.vault.azure.net
  • Identité spécifie l’identité managée avec accès au coffre, par exemple /subscriptions/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/resourcegroups/MC_user-acstor-westus2-rg_user-acstor-westus2_westus2/providers/Microsoft.ManagedIdentity/userAssignedIdentities/user-acstor-westus2-agentpool

Suivez ces étapes pour créer un pool de stockage en utilisant votre propre clé de chiffrement. Tous les volumes persistants créés à partir de ce pool de stockage sont chiffrés en utilisant la même clé.

  1. Utilisez votre éditeur de texte favori pour créer un fichier manifeste YAML tel que code acstor-storagepool-cmk.yaml.

  2. Collez dans le code suivant, fournissez les paramètres requis et enregistrez le fichier. Vous pouvez choisir n’importe quelle valeur nom du pool de stockage. Pour skuName, spécifiez le niveau de performance et de redondance. Les valeurs acceptables sont Premium_LRS, Standard_LRS, StandardSSD_LRS, UltraSSD_LRS, Premium_ZRS, PremiumV2_LRS et StandardSSD_ZRS. Pour le stockage, spécifiez la capacité de stockage du pool en Gi ou Ti. Veillez à fournir les paramètres de chiffrement CMK.

    apiVersion: containerstorage.azure.com/v1
    kind: StoragePool
    metadata:
      name: azuredisk
      namespace: acstor
    spec:
      poolType:
        azureDisk:
          skuName: Premium_LRS
          encryption: {
            keyVersion: "<key-version>",
            keyName: "<key-name>",
            keyVaultUri: "<key-vault-uri>",
            identity: "<identity>"
          }
      resources:
        requests:
          storage: 1Ti
    
  3. Appliquez le fichier manifeste YAML pour créer le pool de stockage.

    kubectl apply -f acstor-storagepool-cmk.yaml 
    

    Une fois la création du pool de stockage terminée, vous verrez un message comme suit :

    storagepool.containerstorage.azure.com/azuredisk created
    

    Vous pouvez également exécuter cette commande pour vérifier l’état du pool de stockage. Remplacez <storage-pool-name> par la valeur nom de votre pool de stockage. Pour cet exemple, la valeur est azuredisk.

    kubectl describe sp <storage-pool-name> -n acstor
    

Lorsque le pool de stockage est créé, Azure Container Storage crée une classe de stockage en votre nom, à l’aide de la convention d’affectation de noms acstor-<storage-pool-name>.

2. Afficher les classes de stockage disponibles

Lorsque le pool de stockage est prêt à être utilisé, vous devez sélectionner une classe de stockage pour définir la façon dont le stockage est créé dynamiquement lors de la création de revendications de volume persistant et du déploiement de volumes persistants.

Exécutez kubectl get sc pour afficher les classes de stockage disponibles Vous devriez voir une classe de stockage appelée acstor-<storage-pool-name>.

Important

N’utilisez pas la classe de stockage marquée interne. Il s’agit d’une classe de stockage interne nécessaire au fonctionnement d’Azure Container Storage.

3. Créer une revendication de volume persistant

Une revendication de volume persistant (PVC) est utilisée pour configurer automatiquement le stockage basé sur une classe de stockage. Suivez ces étapes pour créer une revendication de volume persistant à l’aide de la nouvelle classe de stockage.

  1. Utilisez votre éditeur de texte favori pour créer un fichier manifeste YAML tel que code acstor-pvc.yaml.

  2. Collez le code suivant et enregistrez le fichier. Vous pouvez choisir n’importe quelle valeur name de la revendication de volume persistant.

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: azurediskpvc
    spec:
      accessModes:
        - ReadWriteOnce
      storageClassName: acstor-azuredisk # replace with the name of your storage class if different
      resources:
        requests:
          storage: 100Gi
    
  3. Appliquez le fichier manifeste YAML pour créer la revendication de volume persistant.

    kubectl apply -f acstor-pvc.yaml
    

    La sortie doit ressembler à celle-ci :

    persistentvolumeclaim/azurediskpvc created
    

    Vous pouvez vérifier l’état de la revendication de volume persistant en exécutant la commande suivante :

    kubectl describe pvc azurediskpvc
    

Une fois la revendication de volume persistant créée, elle peut être utilisée par un pod.

4. Déployer un pod et attacher un volume persistant

Créez un pod à l’aide de Fio (testeur d’E/S flexible) pour l’évaluation et la simulation de charge de travail, puis spécifiez un chemin de montage pour le volume persistant. Pour nomRevendication, utilisez la valeur nom que vous avez utilisée lors de la création de la revendication de volume persistant.

  1. Utilisez votre éditeur de texte favori pour créer un fichier manifeste YAML tel que code acstor-pod.yaml.

  2. Collez le code suivant et enregistrez le fichier.

    kind: Pod
    apiVersion: v1
    metadata:
      name: fiopod
    spec:
      nodeSelector:
        acstor.azure.com/io-engine: acstor
      volumes:
        - name: azurediskpv
          persistentVolumeClaim:
            claimName: azurediskpvc
      containers:
        - name: fio
          image: nixery.dev/shell/fio
          args:
            - sleep
            - "1000000"
          volumeMounts:
            - mountPath: "/volume"
              name: azurediskpv
    
  3. Appliquez le fichier manifeste YAML pour déployer le pod.

    kubectl apply -f acstor-pod.yaml
    

    Vous devez obtenir une sortie similaire à la suivante :

    pod/fiopod created
    
  4. Vérifiez que le pod est en cours d’exécution et que la revendication de volume persistant a bien été liée au pod :

    kubectl describe pod fiopod
    kubectl describe pvc azurediskpvc
    
  5. Vérifiez les tests Fio pour voir son état actuel :

    kubectl exec -it fiopod -- fio --name=benchtest --size=800m --filename=/volume/test --direct=1 --rw=randrw --ioengine=libaio --bs=4k --iodepth=16 --numjobs=8 --time_based --runtime=60
    

Vous avez maintenant déployé un pod qui utilise des disques Azure comme stockage et vous pouvez l’utiliser pour vos charges de travail Kubernetes.

Gérer les volumes persistants et les pools de stockage

Maintenant que vous avez créé un volume persistant, vous pouvez le détacher et le rattacher en fonction des besoins. Vous pouvez également développer ou supprimer un pool de stockage.

Détacher et rattacher un volume persistant

Pour détacher un volume persistant, supprimez le pod auquel le volume persistant est attaché. Remplacez <pod-name> par le nom du pod, par exemple fiopod.

kubectl delete pods <pod-name>

Pour rattacher un volume persistant, il vous suffit de référencer le nom de la revendication de volume persistant dans le fichier manifeste YAML, comme décrit dans la section Déployer un pod et attacher un volume persistant.

Pour vérifier à quel volume persistant une revendication de volume persistant est liée, exécutez kubectl get pvc <persistent-volume-claim-name>.

Développer un pool de stockage

Vous pouvez développer des pools de stockage basés sur des disques Azure pour effectuer un scale-up rapidement et sans temps d’arrêt. La réduction des pools de stockage n’est actuellement pas prise en charge. L’extension du pool de stockage n’est pas prise en charge pour les disques Ultra ou SSD Premium v2.

Remarque

Le fait de développer un pool de stockage peut augmenter vos coûts pour Azure Container Storage et pour les disques Azure. Consultez les pages Tarification du Stockage de conteneurs Azure et Comprendre la facturation du Stockage de conteneurs Azure.

Actuellement, l’extension du pool de stockage présente la limitation suivante lors de l’utilisation des références SKU Premium_LRS, Standard_LRS, StandardSSD_LRS, Premium_ZRS et StandardSSD_ZRS :

  • Si votre pool de stockage existant est inférieur à 4 Tio (4 096 Gio), vous ne pouvez l’étendre qu’à 4095 Gio. Pour éviter les erreurs, n’essayez pas d’étendre votre pool de stockage actuel au-delà de 4095 Gio s’il est initialement inférieur à 4 Tio (4096 Gio). Les pools de stockage > 4 Tio peuvent être étendus jusqu’à la capacité de stockage maximale disponible.

Suivez ces instructions pour développer un pool de stockage existant pour des disques Azure.

  1. En utilisant un éditeur de texte, ouvrez le fichier manifeste YAML que vous avez utilisé pour créer le pool de stockage, par exemple code acstor-storagepool.yaml.

  2. Remplacez l’entrée storage spécifiée dans le fichier manifeste YAML par la valeur souhaitée. Cette valeur doit être supérieure à la capacité actuelle du pool de stockage. Par exemple, si la spécification est définie sur storage: 1Ti, remplacez-la par storage: 2Ti. Si vous avez créé un pool de stockage préprovisionné, il n’y a pas d’entrée storage, car le pool de stockage a hérité de la taille de capacité des disques Azure préprovisionnés. Si vous ne voyez pas d’entrée storage dans YAML, ajoutez le code suivant en spécifiant la capacité de stockage souhaitée, puis enregistrez le fichier manifeste :

    spec:
      resources:
        requests:
          storage: 2Ti
    

Remarque

Si vous avez deux disques dans un pool de stockage avec une capacité de 1 Tio chacun et que vous modifiez le fichier manifeste YAML pour lire storage: 4Ti, les deux disques seront étendus à 2 Tio lorsque le YAML est appliqué, ce qui vous donne une nouvelle capacité totale de 4 Tio.

  1. Appliquez le fichier manifeste YAML pour développer le pool de stockage.

    kubectl apply -f acstor-storagepool.yaml 
    
  2. Exécutez cette commande pour vérifier l’état du pool de stockage. Remplacez <storage-pool-name> par la valeur nom de votre pool de stockage.

    kubectl describe sp <storage-pool-name> -n acstor
    

    Vous devez voir un message tel que « Le pool de stockage est en cours d’expansion ». Réexécutez la commande après quelques minutes : le message doit avoir disparu.

  3. Exécutez kubectl get sp -A : le pool de stockage doit avoir la nouvelle taille.

Supprimer un pool de stockage

Si vous souhaitez supprimer un pool de stockage, exécutez la commande suivante. Remplacez <storage-pool-name> par le nom du pool de stockage.

kubectl delete sp -n acstor <storage-pool-name>

Voir aussi