17.7. Création d'une sauvegarde des ressources du cluster avant la mise à niveau
Pour OpenShift à nœud unique, le Topology Aware Lifecycle Manager (TALM) peut créer une sauvegarde d'un déploiement avant une mise à niveau. Si la mise à niveau échoue, vous pouvez récupérer la version précédente et restaurer un cluster à un état fonctionnel sans nécessiter un reprovisionnement des applications.
Pour utiliser la fonction de sauvegarde, vous devez d'abord créer un CR ClusterGroupUpgrade
avec le champ backup
défini sur true
. Pour garantir que le contenu de la sauvegarde est à jour, la sauvegarde n'est pas effectuée tant que vous n'avez pas défini le champ enable
dans le CR ClusterGroupUpgrade
sur true
.
TALM utilise la condition BackupSucceeded
pour signaler l'état et les raisons comme suit :
true
La sauvegarde est terminée pour tous les clusters ou l'exécution de la sauvegarde s'est terminée mais a échoué pour un ou plusieurs clusters. Si la sauvegarde échoue pour un cluster, la mise à jour ne se fait pas pour ce cluster.
false
La sauvegarde est toujours en cours pour un ou plusieurs clusters ou a échoué pour tous les clusters. Le processus de sauvegarde s'exécutant dans les clusters de rayons peut avoir les statuts suivants :
PreparingToStart
La première passe de réconciliation est en cours. Le TALM supprime toutes les ressources d'espace de noms de sauvegarde de rayon et de vue de hub qui ont été créées lors d'une tentative de mise à niveau qui a échoué.
Starting
Les conditions préalables à la sauvegarde et la tâche de sauvegarde sont en cours de création.
Active
La sauvegarde est en cours.
Succeeded
La sauvegarde a réussi.
BackupTimeout
La sauvegarde des artefacts est partiellement effectuée.
UnrecoverableError
La sauvegarde s'est terminée avec un code de sortie non nul.
Si la sauvegarde d'un cluster échoue et entre dans l'état BackupTimeout
ou UnrecoverableError
, la mise à jour du cluster ne se fait pas pour ce cluster. Les mises à jour des autres clusters ne sont pas affectées et se poursuivent.
17.7.1. Création d'un ClusterGroupUpgrade CR avec sauvegarde
Vous pouvez créer une sauvegarde d'un déploiement avant une mise à niveau sur des clusters OpenShift à nœud unique. Si la mise à niveau échoue, vous pouvez utiliser le script upgrade-recovery.sh
généré par Topology Aware Lifecycle Manager (TALM) pour ramener le système à son état avant la mise à niveau. La sauvegarde se compose des éléments suivants :
- Sauvegarde de la grappe
-
Un instantané de
etcd
et des manifestes de pods statiques. - Sauvegarde du contenu
-
Sauvegardes de dossiers, par exemple,
/etc
,/usr/local
,/var/lib/kubelet
. - Sauvegarde des fichiers modifiés
-
Tous les fichiers gérés par
machine-config
qui ont été modifiés. - Déploiement
-
Déploiement d'une épingle
ostree
. - Images (optionnel)
- Toutes les images de conteneurs utilisées.
Conditions préalables
- Installez le gestionnaire de cycle de vie Topology Aware (TALM).
- Provisionner un ou plusieurs clusters gérés.
-
Connectez-vous en tant qu'utilisateur disposant des privilèges
cluster-admin
. - Installez Red Hat Advanced Cluster Management (RHACM).
Il est fortement recommandé de créer une partition de récupération. Voici un exemple de ressource personnalisée (CR) SiteConfig
pour une partition de récupération de 50 Go :
nodes: - hostName: "snonode.sno-worker-0.e2e.bos.redhat.com" role: "master" rootDeviceHints: hctl: "0:2:0:0" deviceName: /dev/sda ........ ........ #Disk /dev/sda: 893.3 GiB, 959119884288 bytes, 1873281024 sectors diskPartition: - device: /dev/sda partitions: - mount_point: /var/recovery size: 51200 start: 800000
Procédure
Enregistrez le contenu du CR
ClusterGroupUpgrade
avec les champsbackup
etenable
définis surtrue
dans le fichierclustergroupupgrades-group-du.yaml
:apiVersion: ran.openshift.io/v1alpha1 kind: ClusterGroupUpgrade metadata: name: du-upgrade-4918 namespace: ztp-group-du-sno spec: preCaching: true backup: true clusters: - cnfdb1 - cnfdb2 enable: true managedPolicies: - du-upgrade-platform-upgrade remediationStrategy: maxConcurrency: 2 timeout: 240
Pour lancer la mise à jour, appliquez le CR
ClusterGroupUpgrade
en exécutant la commande suivante :$ oc apply -f clustergroupupgrades-group-du.yaml
Vérification
Vérifiez l'état de la mise à niveau dans le cluster du concentrateur en exécutant la commande suivante :
$ oc get cgu -n ztp-group-du-sno du-upgrade-4918 -o jsonpath='{.status}'
Exemple de sortie
{ "backup": { "clusters": [ "cnfdb2", "cnfdb1" ], "status": { "cnfdb1": "Succeeded", "cnfdb2": "Failed" 1 } }, "computedMaxConcurrency": 1, "conditions": [ { "lastTransitionTime": "2022-04-05T10:37:19Z", "message": "Backup failed for 1 cluster", 2 "reason": "PartiallyDone", 3 "status": "True", 4 "type": "Succeeded" } ], "precaching": { "spec": {} }, "status": {}
17.7.2. Récupération d'un cluster après l'échec d'une mise à niveau
Si la mise à niveau d'un cluster échoue, vous pouvez vous connecter manuellement au cluster et utiliser la sauvegarde pour remettre le cluster dans l'état où il se trouvait avant la mise à niveau. Il y a deux étapes :
- Retour en arrière
- Si la tentative de mise à niveau comprenait une modification du déploiement du système d'exploitation de la plate-forme, vous devez revenir à la version précédente avant d'exécuter le script de récupération.
- Récupération
- La récupération arrête les conteneurs et utilise les fichiers de la partition de sauvegarde pour relancer les conteneurs et restaurer les clusters.
Conditions préalables
- Installez le gestionnaire de cycle de vie Topology Aware (TALM).
- Provisionner un ou plusieurs clusters gérés.
- Installez Red Hat Advanced Cluster Management (RHACM).
-
Connectez-vous en tant qu'utilisateur disposant des privilèges
cluster-admin
. - Exécuter une mise à niveau configurée pour la sauvegarde.
Procédure
Supprimez la ressource personnalisée (CR)
ClusterGroupUpgrade
créée précédemment en exécutant la commande suivante :$ oc delete cgu/du-upgrade-4918 -n ztp-group-du-sno
- Connectez-vous au cluster que vous souhaitez récupérer.
Vérifiez l'état du déploiement du système d'exploitation de la plate-forme en exécutant la commande suivante :
$ ostree admin status
Exemples de résultats
[root@lab-test-spoke2-node-0 core]# ostree admin status * rhcos c038a8f08458bbed83a77ece033ad3c55597e3f64edad66ea12fda18cbdceaf9.0 Version: 49.84.202202230006-0 Pinned: yes 1 origin refspec: c038a8f08458bbed83a77ece033ad3c55597e3f64edad66ea12fda18cbdceaf9
- 1
- Le déploiement actuel est verrouillé. Il n'est pas nécessaire de revenir sur le déploiement du système d'exploitation de la plate-forme.
[root@lab-test-spoke2-node-0 core]# ostree admin status * rhcos f750ff26f2d5550930ccbe17af61af47daafc8018cd9944f2a3a6269af26b0fa.0 Version: 410.84.202204050541-0 origin refspec: f750ff26f2d5550930ccbe17af61af47daafc8018cd9944f2a3a6269af26b0fa rhcos ad8f159f9dc4ea7e773fd9604c9a16be0fe9b266ae800ac8470f63abc39b52ca.0 (rollback) 1 Version: 410.84.202203290245-0 Pinned: yes 2 origin refspec: ad8f159f9dc4ea7e773fd9604c9a16be0fe9b266ae800ac8470f63abc39b52ca
Pour déclencher un rollback du déploiement du système d'exploitation de la plate-forme, exécutez la commande suivante :
$ rpm-ostree rollback -r
La première phase de la récupération arrête les conteneurs et restaure les fichiers de la partition de sauvegarde dans les répertoires ciblés. Pour commencer la récupération, exécutez la commande suivante :
$ /var/recovery/upgrade-recovery.sh
Lorsque vous y êtes invité, redémarrez le cluster en exécutant la commande suivante :
$ systemctl reboot
Après le redémarrage, relancez la récupération en exécutant la commande suivante :
$ /var/recovery/upgrade-recovery.sh --resume
Si l'utilitaire de récupération échoue, vous pouvez réessayer avec l'option --restart
:
$ /var/recovery/upgrade-recovery.sh --restart
Vérification
Pour vérifier l'état de la récupération, exécutez la commande suivante :
$ oc get clusterversion,nodes,clusteroperator
Exemple de sortie
NAME VERSION AVAILABLE PROGRESSING SINCE STATUS clusterversion.config.openshift.io/version 4.9.23 True False 86d Cluster version is 4.9.23 1 NAME STATUS ROLES AGE VERSION node/lab-test-spoke1-node-0 Ready master,worker 86d v1.22.3+b93fd35 2 NAME VERSION AVAILABLE PROGRESSING DEGRADED SINCE MESSAGE clusteroperator.config.openshift.io/authentication 4.9.23 True False False 2d7h 3 clusteroperator.config.openshift.io/baremetal 4.9.23 True False False 86d ..............