Notes
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.
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.
Utilisez votre éditeur de texte favori pour créer un fichier manifeste YAML tel que
code acstor-volumesnapshotclass.yaml
.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)
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.
Utilisez votre éditeur de texte favori pour créer un fichier manifeste YAML tel que
code acstor-volumesnapshot.yaml
.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. PourpersistentVolumeClaimName
, 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
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éé. SiREADYTOUSE
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.
Utilisez votre éditeur de texte favori pour créer un fichier manifeste YAML tel que
code acstor-pvc-restored.yaml
.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, remplacezstorageClassName
paracstor-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
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é.
- Exécutez
kubectl get pods
pour répertorier les pods. Assurez-vous de supprimer le bon pod. - 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.
Utilisez votre éditeur de texte favori pour créer un fichier manifeste YAML tel que
code acstor-pod2.yaml
.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
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
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
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.