Comment sauvegarder et restaurer les données d’un cluster DOKS en utilisant Velero

Introduction

Tout comme toute autre configuration, les données dans un cluster Kubernetes peuvent être exposées au risque de perte. Pour éviter les problèmes sérieux, il est essentiel d’avoir un plan de récupération des données à portée de main. Une manière simple et efficace de le faire est de faire des sauvegardes, en veillant à ce que vos données soient en sécurité en cas d’événements inattendus. Les sauvegardes peuvent être exécutées ponctuellement ou planifiées. Il est conseillé d’avoir des sauvegardes planifiées pour garantir que vous disposez d’une sauvegarde récente sur laquelle vous pouvez facilement revenir.

Velero – un outil open-source conçu pour aider aux opérations de sauvegarde et de restauration pour les clusters Kubernetes. Il est idéal pour le cas d’utilisation de la récupération après sinistre, ainsi que pour la capture instantanée de l’état de votre application avant d’effectuer des opérations système sur votre cluster, comme les mises à niveau. Pour plus de détails sur ce sujet, veuillez visiter la page officielle Comment fonctionne Velero.

Dans ce tutoriel, vous apprendrez comment déployer Velero sur votre cluster Kubernetes, créer des sauvegardes et récupérer à partir d’une sauvegarde en cas de problème. Vous pouvez sauvegarder l’intégralité de votre cluster ou choisir facultativement un espace de noms ou un sélecteur d’étiquette pour sauvegarder votre cluster.

Table des matières

Prérequis

Pour accomplir ce tutoriel, vous avez besoin de ce qui suit :

  • A DO Spaces Bucket and access keys. Save the access and secret keys in a safe place for later use.
  • A DigitalOcean API token for Velero to use.
  • A Git client, to clone the Starter Kit repository.
  • Helm pour gérer les versions et les mises à jour de Velero.
  • Doctl pour l’interaction avec l’API DigitalOcean.
  • Kubectl pour l’interaction avec Kubernetes.
  • Client Velero pour gérer les sauvegardes Velero.

Étape 1 – Installation de Velero à l’aide de Helm

Dans cette étape, vous déploierez Velero et tous les composants requis, afin qu’il puisse effectuer des sauvegardes de vos ressources de cluster Kubernetes (y compris les PV). Les données de sauvegarde seront stockées dans le compartiment DO Spaces créé précédemment dans la section Prérequis.

Tout d’abord, clonez le dépôt Git du Starter Kit et changez le répertoire vers votre copie locale :

git clone https://github.com/digitalocean/Kubernetes-Starter-Kit-Developers.git

cd Kubernetes-Starter-Kit-Developers

Ensuite, ajoutez le dépôt Helm et répertoriez les charts disponibles :

helm repo add vmware-tanzu https://vmware-tanzu.github.io/helm-charts

helm repo update vmware-tanzu

helm search repo vmware-tanzu

La sortie ressemble à ce qui suit :

NAME                    CHART VERSION   APP VERSION     DESCRIPTION
vmware-tanzu/velero     2.29.7          1.8.1           A Helm chart for velero

Le chart d’intérêt est vmware-tanzu/velero, qui installera Velero sur le cluster. Veuillez visiter la page velero-chart pour plus de détails sur ce chart.

Ensuite, ouvrez et inspectez le fichier de valeurs Helm de Velero fourni dans le dépôt Starter Kit en utilisant un éditeur de votre choix (de préférence avec prise en charge de la validation YAML).

VELERO_CHART_VERSION="2.29.7"

code 05-setup-backup-restore/assets/manifests/velero-values-v${VELERO_CHART_VERSION}.yaml

Ensuite, veuillez remplacer les espaces réservés <> en conséquence pour votre compartiment Velero DO Spaces (comme le nom, la région et les secrets). Assurez-vous de fournir également votre jeton d’API DigitalOcean (DIGITALOCEAN_TOKEN key).

Enfin, installez Velero en utilisant helm :

VELERO_CHART_VERSION="2.29.7"

helm install velero vmware-tanzu/velero --version "${VELERO_CHART_VERSION}" \
  --namespace velero \
  --create-namespace \
  -f 05-setup-backup-restore/assets/manifests/velero-values-v${VELERO_CHART_VERSION}.yaml

A specific version of the Velero Helm chart is used. In this case 2.29.7 is picked, which maps to the 1.8.1 version of the application (see the output from Step 2.). It’s a good practice in general to lock on a specific version. This helps to have predictable results and allows versioning control via Git.

–create-namespace \

helm ls -n velero

Maintenant, vérifiez votre déploiement Velero en exécutant :

NAME    NAMESPACE       REVISION        UPDATED                                 STATUS          CHART           APP VERSION
velero  velero          1               2022-06-09 08:38:24.868664 +0300 EEST   deployed        velero-2.29.7   1.8.1

La sortie ressemble à ce qui suit (la colonne STATUS devrait afficher deployed) :

kubectl get deployment velero -n velero

Ensuite, vérifiez que Velero est opérationnel :

NAME     READY   UP-TO-DATE   AVAILABLE   AGE
velero   1/1     1            1           67s

La sortie ressemble à ce qui suit (les pods de déploiement doivent être dans l’état Ready):

kubectl -n velero get all

Si vous souhaitez approfondir, vous pouvez consulter les composants côté serveur de Velero:

  • Explorez les pages d’aide de la CLI Velero pour voir quelles commandes et sous-commandes sont disponibles. Vous pouvez obtenir de l’aide pour chacune en utilisant le drapeau --help:
  • Listez toutes les commandes disponibles pour Velero:

Listez les options de commande backup pour Velero:

Velero utilise plusieurs CRD (Custom Resource Definitions) pour représenter ses ressources telles que les sauvegardes, les planifications de sauvegarde, etc. Vous découvrirez chacun dans les prochaines étapes du tutoriel, ainsi que quelques exemples de base.

Étape 2 – Exemple de sauvegarde et de restauration de l’espace de noms

Dans cette étape, vous apprendrez comment effectuer une sauvegarde ponctuelle pour un espace de noms complet à partir de votre cluster DOKS et le restaurer ensuite en vous assurant que toutes les ressources sont recréées. L’espace de noms en question est ambassador.

Création de la sauvegarde de l’espace de noms Ambassador

velero backup create ambassador-backup --include-namespaces ambassador

Tout d’abord, initiez la sauvegarde :

velero backup get

Ensuite, vérifiez que la sauvegarde a été créée :

NAME                                       STATUS      ERRORS   WARNINGS   CREATED                          EXPIRES   STORAGE LOCATION   SELECTOR
ambassador-backup                          Completed   0        0          2021-08-25 19:33:03 +0300 EEST   29d       default            <none>

La sortie ressemble à ceci :

velero backup describe ambassador-backup --details

Puis, après quelques instants, vous pouvez l’inspecter :

Name:         ambassador-backup
Namespace:    velero
Labels:       velero.io/storage-location=default
Annotations:  velero.io/source-cluster-k8s-gitversion=v1.21.2
              velero.io/source-cluster-k8s-major-version=1
              velero.io/source-cluster-k8s-minor-version=21

Phase:  Completed

Errors:    0
Warnings:  0

Namespaces:
  Included:  ambassador
  Excluded:  <none>
  ...
  • La sortie ressemble à ceci :

  • Recherchez la ligne Phase. Elle devrait indiquer Terminée.
  • Vérifiez également qu’aucune erreur n’est signalée.

Un nouvel objet de sauvegarde Kubernetes est créé :

~ kubectl get backup/ambassador-backup -n velero -o yaml

apiVersion: velero.io/v1
kind: Backup
metadata:
annotations:
velero.io/source-cluster-k8s-gitversion: v1.21.2
velero.io/source-cluster-k8s-major-version: "1"
velero.io/source-cluster-k8s-minor-version: "21"
...

Enfin, jetez un œil au compartiment DO Spaces et vérifiez s’il y a un nouveau dossier nommé backups qui contient les éléments créés pour votre ambassador-backup:

Suppression de l’espace de noms et des ressources de l’Ambassadeur

kubectl delete namespace ambassador

Tout d’abord, simulez un désastre en supprimant intentionnellement l’espace de noms ambassador:

kubectl get namespaces

Ensuite, vérifiez que l’espace de noms a été supprimé (la liste des espaces de noms ne devrait pas afficher ambassador):

curl -Li http://quote.starter-kit.online/quote/

curl -Li http://echo.starter-kit.online/echo/

Enfin, vérifiez que le point de terminaison des services backend echo et quote est DOWN. Veuillez vous référer à Création des services backend de l’Empilement des Bords de l’Ambassadeur concernant les applications backend utilisées dans le tutoriel du Kit de Démarrage. Vous pouvez utiliser curl pour tester (ou vous pouvez utiliser votre navigateur web):

Restauration de la Sauvegarde de l’Espace de Noms de l’Ambassadeur

velero restore create --from-backup ambassador-backup

Restaurez le ambassador-backup:

Important: Lorsque vous supprimez l’espace de noms ambassador, la ressource du répartiteur de charge associée au service ambassadeur sera également supprimée. Ainsi, lorsque vous restaurez le service ambassador, le répartiteur de charge sera recréé par DigitalOcean. Le problème ici est que vous obtiendrez une NOUVELLE adresse IP pour votre répartiteur de charge, donc vous devrez ajuster les enregistrements A pour diriger le trafic vers vos domaines hébergés sur le cluster.

Vérification de la Restauration de l’Espace de Noms Ambassador

velero restore describe ambassador-backup

Pour vérifier la restauration de l’espace de noms ambassador, vérifiez la ligne Phase de la sortie de la commande de restauration ambassador-backup. Elle devrait indiquer Terminé (veuillez également prendre note de la section Avertissements – cela indique si quelque chose s’est mal passé) :

kubectl get all --namespace ambassador

Ensuite, vérifiez que toutes les ressources ont été restaurées pour l’espace de noms ambassador. Recherchez les pods ambassador, les services et les déploiements.

NAME                                    READY   STATUS    RESTARTS   AGE
pod/ambassador-5bdc64f9f6-9qnz6         1/1     Running   0          18h
pod/ambassador-5bdc64f9f6-twgxb         1/1     Running   0          18h
pod/ambassador-agent-bcdd8ccc8-8pcwg    1/1     Running   0          18h
pod/ambassador-redis-64b7c668b9-jzxb5   1/1     Running   0          18h

NAME                       TYPE           CLUSTER-IP       EXTERNAL-IP      PORT(S)                      AGE
service/ambassador         LoadBalancer   10.245.74.214    159.89.215.200   80:32091/TCP,443:31423/TCP   18h
service/ambassador-admin   ClusterIP      10.245.204.189   <none>           8877/TCP,8005/TCP            18h
service/ambassador-redis   ClusterIP      10.245.180.25    <none>           6379/TCP                     18h

NAME                               READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/ambassador         2/2     2            2           18h
deployment.apps/ambassador-agent   1/1     1            1           18h
deployment.apps/ambassador-redis   1/1     1            1           18h

NAME                                          DESIRED   CURRENT   READY   AGE
replicaset.apps/ambassador-5bdc64f9f6         2         2         2       18h
replicaset.apps/ambassador-agent-bcdd8ccc8    1         1         1       18h
replicaset.apps/ambassador-redis-64b7c668b9   1         1         1       18h

La sortie ressemble à ceci :

kubectl get hosts -n ambassador

Obtenir les hôtes ambassadeur :

NAME         HOSTNAME                   STATE   PHASE COMPLETED   PHASE PENDING   AGE
echo-host    echo.starter-kit.online    Ready                                     11m
quote-host   quote.starter-kit.online   Ready                                     11m

La sortie ressemble à ceci :

ÉTAT devrait être Prêt et la colonne NOM D'HÔTE devrait pointer vers le nom d’hôte qualifié.

kubectl get mappings -n ambassador

Obtenir les mappages ambassadeur :

NAME                          SOURCE HOST                SOURCE PREFIX                               DEST SERVICE     STATE   REASON
ambassador-devportal                                     /documentation/                             127.0.0.1:8500
ambassador-devportal-api                                 /openapi/                                   127.0.0.1:8500
ambassador-devportal-assets                              /documentation/(assets|styles)/(.*)(.css)   127.0.0.1:8500
ambassador-devportal-demo                                /docs/                                      127.0.0.1:8500
echo-backend                  echo.starter-kit.online    /echo/                                      echo.backend
quote-backend                 quote.starter-kit.online   /quote/                                     quote.backend

La sortie ressemble à ceci (notez le echo-backend qui est mappé sur l’hôte echo.starter-kit.online et le préfixe source /echo/, de même pour quote-backend):

curl -Li https://quote.starter-kit.online/quote/

curl -Li https://echo.starter-kit.online/echo/

Enfin, après avoir reconfiguré votre équilibreur de charge et les paramètres de domaine DigitalOcean, veuillez vérifier que le point de terminaison des services backend echo et quote est UP. Reportez-vous à Création des services backend du stack de bordure Ambassador.

Dans l’étape suivante, vous simulerez une catastrophe en supprimant intentionnellement votre cluster DOKS.

Étape 3 – Exemple de sauvegarde et restauration de l’ensemble du cluster

Dans cette étape, vous simulerez un scénario de reprise après sinistre. Le cluster DOKS complet sera supprimé, puis restauré à partir d’une sauvegarde précédente.

Création de la sauvegarde du cluster DOKS

velero backup create all-cluster-backup

Tout d’abord, créez une sauvegarde pour l’ensemble du cluster DOKS :

velero backup get

Ensuite, vérifiez que la sauvegarde a été créée et qu’aucune erreur n’est signalée. La commande suivante répertorie toutes les sauvegardes disponibles :

NAME                                       STATUS      ERRORS   WARNINGS   CREATED                          EXPIRES   STORAGE LOCATION   SELECTOR
all-cluster-backup                         Completed   0        0          2021-08-25 19:43:03 +0300 EEST   29d       default            <none>

La sortie ressemble à ceci :

velero backup describe all-cluster-backup

velero backup logs all-cluster-backup

Enfin, inspectez l’état de la sauvegarde et les journaux (vérifiez qu’aucune erreur n’est signalée) :

Important : Chaque fois que vous détruisez un cluster DOKS sans spécifier le drapeau --dangerous à la commande doctl et ensuite le restaurer, le même répartiteur de charge avec la même IP est recréé. Cela signifie que vous n’avez pas besoin de mettre à jour vos enregistrements DNS A de DigitalOcean.
Mais lorsque le drapeau --dangerous est appliqué à la commande doctl, le répartiteur de charge existant sera détruit et un nouveau répartiteur de charge avec une nouvelle IP externe sera créé lorsque Velero restaurera votre contrôleur d’entrée. Donc, assurez-vous de mettre à jour vos enregistrements DNS A de DigitalOcean en conséquence.

Tout d’abord, supprimez l’intégralité du cluster DOKS (assurez-vous de remplacer les espaces réservés <> en conséquence).

doctl kubernetes cluster delete <DOKS_CLUSTER_NAME>

Pour supprimer le cluster Kubernetes sans détruire le répartiteur de charge associé, exécutez :

doctl kubernetes cluster delete <DOKS_CLUSTER_NAME> --dangerous

Ou pour supprimer le cluster Kubernetes ainsi que le répartiteur de charge associé :

Ensuite, recréez le cluster, comme décrit dans Configurer DigitalOcean Kubernetes. Il est important de s’assurer que le nouveau nombre de nœuds du cluster DOKS est égal ou supérieur à l’original.

Ensuite, installez Velero CLI et le serveur, comme décrit dans la section Prérequis et dans Étape 1 – Installation de Velero à l’aide de Helm respectivement. Il est important d’utiliser la même version du Helm Chart.

velero restore create --from-backup all-cluster-backup

Enfin, restaurez tout en exécutant la commande suivante :

Vérification de l’état des applications du cluster DOKS

velero restore describe all-cluster-backup-<timestamp>

Tout d’abord, vérifiez la ligne Phase de la sortie de la commande de description de la restauration all-cluster-backup. (Remplacez les marqueurs <> en conséquence). Elle devrait indiquer Terminé.

kubectl get all --all-namespaces

Ensuite, vérifiez toutes les ressources du cluster en exécutant :

curl -Li http://quote.starter-kit.online/quote/

curl -Li http://echo.starter-kit.online/echo/

Maintenant, les applications côté serveur devraient également répondre aux requêtes HTTP. Veuillez vous référer à Création des services côté serveur de l’ambassadeur Edge Stack concernant les applications utilisées dans le tutoriel du Kit de démarrage.

Dans la prochaine étape, vous apprendrez comment effectuer des sauvegardes planifiées (ou automatiques) pour vos applications de cluster DOKS.

Étape 4 – Sauvegardes Planifiées

Effectuer des sauvegardes automatiquement selon un calendrier est une fonctionnalité vraiment utile. Cela vous permet de remonter dans le temps et de restaurer le système à un état de fonctionnement précédent en cas de problème.

La création d’une sauvegarde planifiée est un processus très simple. Un exemple est fourni ci-dessous pour un intervalle de 1 minute (l’espace de noms kube-system a été choisi).

velero schedule create kube-system-minute-backup --schedule="@every 1m" --include-namespaces kube-system

Tout d’abord, créez l’horaire :

schedule="*/1 * * * *"

Le format de tâche cron Linux est également pris en charge :

velero schedule get

Ensuite, vérifiez que l’horaire a été créé :

NAME                        STATUS    CREATED                          SCHEDULE    BACKUP TTL   LAST BACKUP   SELECTOR
kube-system-minute-backup   Enabled   2021-08-26 12:37:44 +0300 EEST   @every 1m   720h0m0s     32s ago       <none>

La sortie ressemble à ceci :

velero backup get

Ensuite, inspectez toutes les sauvegardes après une minute environ :

NAME                                       STATUS      ERRORS   WARNINGS   CREATED                          EXPIRES   STORAGE LOCATION   SELECTOR
kube-system-minute-backup-20210826093916   Completed   0        0          2021-08-26 12:39:20 +0300 EEST   29d       default            <none>
kube-system-minute-backup-20210826093744   Completed   0        0          2021-08-26 12:37:44 +0300 EEST   29d       default            <none>

La sortie ressemble à ceci :

Vérification de l’état de sauvegarde planifiée

velero backup describe kube-system-minute-backup-<timestamp>

Tout d’abord, vérifiez la ligne Phase d’une des sauvegardes (veuillez remplacer les espaces réservés <> en conséquence). Elle devrait indiquer Terminée.

Restauration de la sauvegarde planifiée

Pour restaurer les sauvegardes d’une minute auparavant, veuillez suivre les mêmes étapes que celles que vous avez apprises dans les étapes précédentes de ce tutoriel. C’est une bonne façon de mettre en pratique et de tester l’expérience que vous avez accumulée jusqu’à présent.

Dans l’étape suivante, vous apprendrez comment supprimer manuellement ou automatiquement des sauvegardes spécifiques que vous avez créées au fil du temps.

Étape 5 – Suppression des sauvegardes

Si vous n’avez pas besoin des sauvegardes plus anciennes, vous pouvez libérer des ressources à la fois sur le cluster Kubernetes et sur le compartiment Velero DO Spaces.

Suppression manuelle d’une sauvegarde

velero backup delete kube-system-minute-backup-<timestamp>

Tout d’abord, choisissez une sauvegarde d’une minute, par exemple, et exécutez la commande suivante (veuillez remplacer les espaces réservés <> en conséquence):

Maintenant, vérifiez qu’il a disparu de la sortie de la commande velero backup get. Il devrait également être supprimé du bucket DO Spaces.

Ensuite, vous allez supprimer plusieurs sauvegardes à la fois en utilisant un sélecteur. La sous-commande velero backup delete fournit un indicateur appelé --selector. Il vous permet de supprimer plusieurs sauvegardes à la fois en fonction des étiquettes Kubernetes. Les mêmes règles s’appliquent que pour les sélecteurs d’étiquettes Kubernetes.

velero backup get

D’abord, listez les sauvegardes disponibles :

NAME                                       STATUS      ERRORS   WARNINGS   CREATED                          EXPIRES   STORAGE LOCATION   SELECTOR
ambassador-backup                          Completed   0        0          2021-08-25 19:33:03 +0300 EEST   23d       default            <none>
backend-minute-backup-20210826094116       Completed   0        0          2021-08-26 12:41:16 +0300 EEST   24d       default            <none>
backend-minute-backup-20210826094016       Completed   0        0          2021-08-26 12:40:16 +0300 EEST   24d       default            <none>
backend-minute-backup-20210826093916       Completed   0        0          2021-08-26 12:39:16 +0300 EEST   24d       default            <none>
backend-minute-backup-20210826093816       Completed   0        0          2021-08-26 12:38:16 +0300 EEST   24d       default            <none>
backend-minute-backup-20210826093716       Completed   0        0          2021-08-26 12:37:16 +0300 EEST   24d       default            <none>
backend-minute-backup-20210826093616       Completed   0        0          2021-08-26 12:36:16 +0300 EEST   24d       default            <none>
backend-minute-backup-20210826093509       Completed   0        0          2021-08-26 12:35:09 +0300 EEST   24d       default            <none>

La sortie ressemble à ceci :

velero describe backup backend-minute-backup-20210826094116

Ensuite, dites que vous voulez supprimer tous les éléments backend-minute-backup-*. Choisissez une sauvegarde dans la liste et inspectez les Labels :

Name:         backend-minute-backup-20210826094116
Namespace:    velero
Labels:       velero.io/schedule-name=backend-minute-backup
              velero.io/storage-location=default
Annotations:  velero.io/source-cluster-k8s-gitversion=v1.21.2
              velero.io/source-cluster-k8s-major-version=1
              velero.io/source-cluster-k8s-minor-version=21

Phase:  Completed

Errors:    0
Warnings:  0

Namespaces:
Included:  backend
Excluded:  <none>
...

La sortie ressemble à ceci (remarquez la valeur de l’étiquette velero.io/schedule-name) :

velero backup delete --selector velero.io/schedule-name=backend-minute-backup

Ensuite, vous pouvez supprimer toutes les sauvegardes qui correspondent à la valeur backend-minute-backup de l’étiquette velero.io/schedule-name :

Enfin, vérifiez que tous les éléments backend-minute-backup-* ont disparu de la sortie de la commande velero backup get, ainsi que du bucket DO Spaces.

Suppression automatique des sauvegardes via TTL

  • Lorsque vous créez une sauvegarde, vous pouvez spécifier un TTL (Time To Live), en utilisant le drapeau --ttl. Si Velero constate qu’une ressource de sauvegarde existante a expiré, il supprime :
  • La ressource Backup
  • Le fichier de sauvegarde du stockage d’objet cloud storage
  • Toutes les instantanés de PersistentVolume

Toutes les Restores associées

Le drapeau TTL permet à l’utilisateur de spécifier la période de rétention de la sauvegarde avec la valeur spécifiée en heures, minutes et secondes sous la forme --ttl 24h0m0s. Si non spécifié, une valeur TTL par défaut de 30 jours sera appliquée.

velero backup create ambassador-backup-3min-ttl --ttl 0h3m0s --include-namespaces ambassador

Tout d’abord, créez la sauvegarde ambassador, en utilisant une valeur TTL de 3 minutes:

velero backup describe ambassador-backup-3min-ttl

Ensuite, inspectez la sauvegarde ambassador:

Name:         ambassador-backup-3min-ttl
Namespace:    velero
Labels:       velero.io/storage-location=default
Annotations:  velero.io/source-cluster-k8s-gitversion=v1.21.2
              velero.io/source-cluster-k8s-major-version=1
              velero.io/source-cluster-k8s-minor-version=21

Phase:  Completed

Errors:    0
Warnings:  0

Namespaces:
Included:  ambassador
Excluded:  <none>

Resources:
Included:        *
Excluded:        <none>
Cluster-scoped:  auto

Label selector:  <none>

Storage Location:  default

Velero-Native Snapshot PVs:  auto

TTL:  3m0s
...

A new folder should be created in the DO Spaces Velero bucket as well, named ambassador-backup-3min-ttl.

La sortie ressemble à ceci (remarquez la section Namespaces -> Included – elle devrait afficher ambassador, et le champ TTL est défini sur 3ms0):

Enfin, après environ trois minutes, la sauvegarde et les ressources associées devraient être automatiquement supprimées. Vous pouvez vérifier que l’objet de sauvegarde a été détruit en utilisant : velero backup describe ambassador-backup-3min-ttl. Cela devrait échouer avec une erreur indiquant que la sauvegarde n’existe plus. Le dossier correspondant ambassador-backup-3min-ttl du bucket Velero DO Spaces sera également supprimé.

velero backup delete --help

Pour aller plus loin, vous pouvez explorer toutes les options de suppression de sauvegarde velero backup delete, via :

Conclusion

Dans ce tutoriel, vous avez appris comment effectuer des sauvegardes ponctuelles ainsi que planifiées, et restaurer tout. Avoir des sauvegardes planifiées en place est très important car cela vous permet de revenir à un instantané précédent si quelque chose se passe mal en cours de route. Vous avez également parcouru un scénario de récupération après sinistre.

Restaurer des volumes à partir de snapshots dans des clusters Kubernetes

Source:
https://www.digitalocean.com/community/developer-center/how-to-backup-and-restore-data-of-a-doks-cluster-using-velero