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 :
trueLa 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.
falseLa 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 :
PreparingToStartLa 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é.
StartingLes conditions préalables à la sauvegarde et la tâche de sauvegarde sont en cours de création.
ActiveLa sauvegarde est en cours.
SucceededLa sauvegarde a réussi.
BackupTimeoutLa sauvegarde des artefacts est partiellement effectuée.
UnrecoverableErrorLa 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 Copier lienLien copié sur presse-papiers!
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
etcdet 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-configqui 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
ClusterGroupUpgradeavec les champsbackupetenabledéfinis surtruedans 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: 240Pour lancer la mise à jour, appliquez le CR
ClusterGroupUpgradeen 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 Copier lienLien copié sur presse-papiers!
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)
ClusterGroupUpgradecréé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 statusExemples de résultats
[root@lab-test-spoke2-node-0 core]# ostree admin status * rhcos c038a8f08458bbed83a77ece033ad3c55597e3f64edad66ea12fda18cbdceaf9.0 Version: 49.84.202202230006-0 Pinned: yes1 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: yes2 origin refspec: ad8f159f9dc4ea7e773fd9604c9a16be0fe9b266ae800ac8470f63abc39b52caPour déclencher un rollback du déploiement du système d'exploitation de la plate-forme, exécutez la commande suivante :
$ rpm-ostree rollback -rLa 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.shLorsque vous y êtes invité, redémarrez le cluster en exécutant la commande suivante :
$ systemctl rebootAprè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,clusteroperatorExemple de sortie
NAME VERSION AVAILABLE PROGRESSING SINCE STATUS clusterversion.config.openshift.io/version 4.9.23 True False 86d Cluster version is 4.9.231 NAME STATUS ROLES AGE VERSION node/lab-test-spoke1-node-0 Ready master,worker 86d v1.22.3+b93fd352 NAME VERSION AVAILABLE PROGRESSING DEGRADED SINCE MESSAGE clusteroperator.config.openshift.io/authentication 4.9.23 True False False 2d7h3 clusteroperator.config.openshift.io/baremetal 4.9.23 True False False 86d ..............