Share via


Utiliser la préversion d’Azure Container Storage avec un disque éphémère

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 éphémère comme stockage principal pour vos charges de travail Kubernetes. À la fin, vous disposez d’un pod qui utilise un NVMe local ou un SSD temporaire comme stockage.

Important

Les disques locaux sont éphémères. Cela signifie qu’ils sont créés sur le stockage de machine virtuelle locale et non enregistrés dans un service de stockage Azure. Si vous arrêtez ou désaffectez votre machine virtuelle, les données seront perdues sur ces disques. Vous pouvez uniquement créer des volumes éphémères génériques Kubernetes à partir d’un pool de stockage de disques éphémères. Si vous souhaitez créer un volume persistant, vous devez activer la réplication du pool de 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.

Remarque

Pour utiliser Azure Container Storage avec un disque éphémère, votre cluster AKS doit avoir un pool de nœuds d’au moins trois machines virtuelles à stockage optimisé tels que standard_l8s_v3. Il est recommandé de disposer d’au moins 4 processeurs virtuels (vCPU).

Disponibilité régionale

Azure CDN est uniquement disponible pour un sous-ensemble de régions Azure :

  • (Afrique) Afrique du Sud Nord
  • (Asie-Pacifique) Australie Est
  • (Asie-Pacifique) Asie Est
  • (Asie-Pacifique) Japon Est
  • (Asie-Pacifique) Corée Centre
  • (Asie-Pacifique) Asie Sud-Est
  • (Asie-Pacifique) Inde Centre
  • (Europe) France Centre
  • (Europe) Europe Nord
  • (Europe) Europe Ouest
  • (Europe) Royaume-Uni Sud
  • (Europe) Suède Centre
  • (Europe) Suisse Nord
  • (Moyen-Orient) Émirats arabes unis Nord
  • (Amérique du Nord) USA Est
  • (Amérique du Nord) USA Est 2
  • (Amérique du Nord) USA Ouest
  • (Amérique du Nord) USA Ouest 2
  • (Amérique du Nord) USA Ouest 3
  • (Amérique du Nord) USA Centre
  • (Amérique du Nord) USA Centre Nord
  • (Amérique du Nord) USA Centre Sud
  • (Amérique du Nord) USA Centre-Ouest
  • (Amérique du Nord) Canada Centre
  • (Amérique du Nord) Canada Est
  • (Amérique du Sud) Brésil Sud

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.

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 section et passer à la section Afficher les classes de stockage disponibles.

Vous avez trois options pour créer un pool de stockage qui utilise le disque éphémère :

Créer un pool de stockage avec NVMe

Suivez ces étapes pour créer un pool de stockage à l’aide d’un NVMe local.

  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 et enregistrez le fichier. Vous pouvez choisir n’importe quelle valeur nom du pool de stockage.

    apiVersion: containerstorage.azure.com/v1
    kind: StoragePool
    metadata:
      name: ephemeraldisk
      namespace: acstor
    spec:
      poolType:
        ephemeralDisk: {}
    
  3. 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/ephemeraldisk 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. Dans cet exemple, la valeur est ephemeraldisk.

    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>.

Créer un pool de stockage avec SSD temporaire

Suivez ces étapes pour créer un pool de stockage à l’aide d’un SSD temporaire.

  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 et enregistrez le fichier. Vous pouvez choisir n’importe quelle valeur nom du pool de stockage.

    apiVersion: containerstorage.azure.com/v1
    kind: StoragePool
    metadata:
      name: ephemeraldisk
      namespace: acstor
    spec:
      poolType:
        ephemeralDisk:
          diskType: temp
    
  3. 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/ephemeraldisk 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. Dans cet exemple, la valeur est ephemeraldisk.

    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>.

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.

Déployer un pod avec un volume éphémère générique

Créez un pod à l’aide de Fio (testeur d’E/S flexible) pour l’évaluation et la simulation de charge de travail, qui utilise un volume éphémère générique.

  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
      containers:
        - name: fio
          image: nixery.dev/shell/fio
          args:
            - sleep
            - "1000000"
          volumeMounts:
            - mountPath: "/volume"
              name: ephemeralvolume
      volumes:
        - name: ephemeralvolume
          ephemeral:
            volumeClaimTemplate:
              metadata:
                labels:
                  type: my-ephemeral-volume
              spec:
                accessModes: [ "ReadWriteOnce" ]
                storageClassName: "acstor-ephemeraldisk-nvme" # replace with the name of your storage class if different
                resources:
                  requests:
                    storage: 1Gi
    
  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 éphémère a bien été liée au pod :

    kubectl describe pod fiopod
    kubectl describe pvc fiopod-ephemeralvolume
    
  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 un disque éphémère comme stockage et vous pouvez l’utiliser pour vos charges de travail Kubernetes.

Développer un pool de stockage

Vous pouvez développer des pools de stockage sauvegardés par NVMe local ou SSD temporaire pour effectuer un scale-up rapide et sans temps d’arrêt. La réduction des pools de stockage n’est actuellement pas prise en charge.

Étant donné qu’un pool de stockage sauvegardé par un disque éphémère utilise des ressources de stockage local sur les nœuds de cluster AKS (machines virtuelles), le développement du pool de stockage nécessite l’ajout d’un autre nœud au cluster. Suivez ces instructions pour développer le pool de stockage.

  1. Exécutez la commande suivante pour ajouter un nouveau nœud au cluster AKS. Remplacez <cluster-name>, <nodepool name> et <resource-group-name> par vos propres valeurs. Pour obtenir le nom de votre pool de nœuds, exécutez kubectl get nodes.

    az aks nodepool add --cluster-name <cluster name> --name <nodepool name> --resource-group <resource group> --node-vm-size Standard_L8s_v3 --node-count 1 --labels acstor.azure.com/io-engine=acstor
    
  2. Exécutez kubectl get nodes et vous verrez qu’un nœud a été ajouté au cluster.

  3. Exécutez kubectl get sp -A et vous verrez en principe que la capacité du pool de stockage a augmenté.

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>

Facultatif : créer un pool de stockage avec la réplication de volume (NVMe uniquement)

Les applications qui utilisent NVMe local peuvent tirer parti de la réplication de stockage pour améliorer la résilience. La réplication n’est pas prise en charge actuellement pour le disque SSD temporaire.

Azure Container Storage prend actuellement en charge les configurations à trois réplicas et cinq réplicas. Si vous spécifiez trois réplicas, vous devez avoir au moins trois nœuds dans votre cluster AKS. Si vous spécifiez cinq réplicas, vous devez avoir au moins cinq nœuds.

Procédez comme suit pour créer un pool de stockage à l’aide de NVMe local avec réplication.

Remarque

Étant donné que les pools de stockage de disques éphémères consomment tous les disques NVMe disponibles, vous devez supprimer les pools de stockage NVMe locaux de disques éphémères existants avant de créer un pool de stockage avec réplication.

  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 et enregistrez le fichier. Vous pouvez choisir n’importe quelle valeur nom du pool de stockage. Définissez les réplicas sur 3 ou 5.

    apiVersion: containerstorage.azure.com/v1
    kind: StoragePool
    metadata:
      name: nvme
      namespace: acstor
    spec:
      poolType:
        ephemeralDisk:
          diskType: nvme
          replicas: 3
    
  3. 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/nvme 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 nvme.

    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 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: ephemeralpvc
    spec:
      accessModes:
        - ReadWriteOnce
      storageClassName: acstor-ephemeraldisk-nvme # 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/ephemeralpvc created
    

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

    kubectl describe pvc ephemeralpvc
    

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

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: ephemeralpv
          persistentVolumeClaim:
            claimName: ephemeralpvc
      containers:
        - name: fio
          image: nixery.dev/shell/fio
          args:
            - sleep
            - "1000000"
          volumeMounts:
            - mountPath: "/volume"
              name: ephemeralpv
    
  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 ephemeralpvc
    
  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 un disque éphémère comme stockage et vous pouvez l’utiliser pour vos charges de travail Kubernetes.

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>.

Voir aussi