Partager via


Utiliser des instantanés de volume avec le Stockage de conteneurs 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 montre comment prendre un cliché instantané à un point dans le temps d’un volume persistant et le restaurer avec une nouvelle revendication de volume persistant.

Prérequis

  • 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 Azure Cloud Shell, sachez que 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.
  • Vous aurez besoin d’un cluster Azure Kubernetes Service (AKS) avec un pool de nœuds d’au moins trois machines virtuelles (VM) pour les nœuds du cluster, chacune disposant d’un minimum de quatre processeurs virtuels (vCPU).
  • Cet article suppose que vous avez déjà installé Azure Container Storage sur votre cluster AKS et que vous avez créé un pool de stockage et une réclamation de volume persistant (PVC) à l'aide de disques Azure ou d'un disque éphémère (stockage local). Les captures instantanées de volume ne sont actuellement pas pris en charge lorsque vous utilisez Elastic SAN comme stockage de secours.

Créez une classe de clichés instantanés de volume

Tout d’abord, créez une classe de cliché instantané de volume, qui vous permet de spécifier les attributs du cliché instantané de volume, en la définissant dans un fichier manifeste YAML. Procédez comme suit pour créer une classe de cliché instantané de volume pour Disques Azure.

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

  2. Collez le code suivant. La valeur du nom de la classe de cliché instantané de volume peut être celle que vous souhaitez.

    apiVersion: snapshot.storage.k8s.io/v1
    kind: VolumeSnapshotClass
    metadata:
      name: csi-acstor-vsc
    driver: containerstorage.csi.azure.com
    deletionPolicy: Delete
    parameters:
      incremental: "true"  # available values: "true", "false" ("true" by default for Azure Public Cloud, and "false" by default for Azure Stack Cloud)
    
  3. Appliquez le fichier manifeste YAML pour créer la classe de cliché instantané de volume.

    kubectl apply -f acstor-volumesnapshotclass.yaml
    

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

    volumesnapshotclass.snapshot.storage.k8s.io/csi-acstor-vsc created
    

    Vous pouvez également exécuter kubectl get volumesnapshotclass pour vérifier que la classe de cliché instantané de volume a été créée. Vous devriez voir s’afficher des résultats tels que :

    NAME            DRIVER                            DELETIONPOLICY    AGE
    csi-acstor-vsc	 containerstorage.csi.azure.com	   Delete	           11s
    

Créer un instantané de volume

Ensuite, vous allez créer un cliché instantané d’une revendication de volume persistant existante et appliquer la classe de cliché instantané de volume que vous avez créée à l’étape précédente.

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

  2. Collez le code suivant. Le volumeSnapshotClassName doit être le nom de la classe de cliché instantané de volume que vous avez créée à l’étape précédente. Pour persistentVolumeClaimName, utilisez le nom de la revendication de volume persistant dont vous souhaitez prendre un cliché instantané. La valeur du nom de cliché instantané de volume peut être celle que vous souhaitez.

    apiVersion: snapshot.storage.k8s.io/v1
    kind: VolumeSnapshot
    metadata:
      name: azuredisk-volume-snapshot
    spec:
      volumeSnapshotClassName: csi-acstor-vsc
      source:
        persistentVolumeClaimName: azurediskpvc
    
  3. Appliquez le fichier manifeste YAML pour créer le cliché instantané de volume.

    kubectl apply -f acstor-volumesnapshot.yaml
    

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

    volumesnapshot.snapshot.storage.k8s.io/azuredisk-volume-snapshot created
    

    Vous pouvez également exécuter kubectl get volumesnapshot pour vérifier que le cliché instantané de volume a été créé. Si READYTOUSE indique true, vous pouvez passer à l’étape suivante.

Créez une revendication de volume persistant restauré

Vous pouvez maintenant créer une nouvelle revendication de volume persistant qui utilise le cliché instantané de volume comme source de données.

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

  2. Collez le code suivant. Le storageClassName doit correspondre à la classe de stockage que vous avez utilisée lors de la création du volume persistant d’origine. Par exemple, si vous utilisez un disque éphémère (NVMe local) au lieu de Disques Azure pour le stockage back-end, remplacez storageClassName par acstor-ephemeraldisk. Pour la valeur nom de la source de données, utilisez le nom du cliché instantané du volume que vous avez créé à l’étape précédente. La valeur du nom des métadonnées pour la revendication de volume persistant peut être celle que vous souhaitez.

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: pvc-azuredisk-snapshot-restored
    spec:
      accessModes:
        - ReadWriteOnce
      storageClassName: acstor-azuredisk
      resources:
        requests:
          storage: 100Gi
      dataSource:
        name: azuredisk-volume-snapshot
        kind: VolumeSnapshot
        apiGroup: snapshot.storage.k8s.io
    
  3. Appliquez le fichier manifeste YAML pour créer la revendication de volume persistant.

    kubectl apply -f acstor-pvc-restored.yaml
    

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

    persistentvolumeclaim/pvc-azuredisk-snapshot-restored created
    

    Vous pouvez également exécuter kubectl describe pvc pvc-azuredisk-snapshot-restored pour vérifier que le volume persistant a été créé. Vous devriez voir le statut En attente et le message en attente de la création du premier consommateur avant la liaison.

Conseil

Si vous avez déjà créé une revendication de volume persistant restaurée et que vous souhaitez appliquer à nouveau le fichier yaml pour corriger une erreur ou apporter une modification, vous devrez d’abord supprimer l’ancienne revendication de volume persistant avant d’appliquer à nouveau le fichier yaml : kubectl delete pvc <pvc-name>.

Supprimer le pod d'origine (facultatif)

Avant de créer un nouveau pod, vous souhaiterez peut-être supprimer le pod d'origine à partir duquel vous avez créé l'instantané.

  1. Exécutez kubectl get pods pour répertorier les pods. Assurez-vous de supprimer le bon pod.
  2. Pour supprimer le pod, exécutez kubectl delete pod <pod-name>.

Créez un nouveau pod à l’aide du cliché instantané restauré

Ensuite, créez un nouveau pod à l'aide de la revendication de volume persistant restaurée. Créez le 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.

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

  2. Collez le code suivant. La revendication de volume persistant claimName doit être le nom de la revendication de volume persistant du cliché instantané restauré que vous avez créé. La valeur du nom des métadonnées pour le pod peut être celle que vous souhaitez.

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

    kubectl apply -f acstor-pod2.yaml
    

    Vous devez obtenir une sortie similaire à la suivante :

    pod/fiopod2 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 fiopod2
    kubectl describe pvc pvc-azuredisk-snapshot-restored
    
  5. Vérifiez les tests Fio pour voir son état actuel :

    kubectl exec -it fiopod2 -- 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 nouveau pod à partir de la revendication de volume persistant restaurée, et vous pouvez l’utiliser pour vos charges de travail Kubernetes.

Voir aussi