Sauvegarde et restauration
Sauvegarder et restaurer votre cluster OpenShift Container Platform
Résumé
Chapitre 1. Sauvegarde et restauration Copier lienLien copié sur presse-papiers!
1.1. Opérations de sauvegarde et de restauration du plan de contrôle Copier lienLien copié sur presse-papiers!
En tant qu'administrateur de cluster, vous pouvez avoir besoin d'arrêter un cluster OpenShift Container Platform pendant une période et de le redémarrer plus tard. Le redémarrage d'un cluster peut être motivé par la nécessité d'effectuer des opérations de maintenance sur un cluster ou par la volonté de réduire les coûts de ressources. Dans OpenShift Container Platform, vous pouvez effectuer un arrêt gracieux d'un cluster afin de pouvoir le redémarrer facilement plus tard.
Vous devez sauvegarder les données etcd avant d'arrêter un cluster ; etcd est le magasin clé-valeur d'OpenShift Container Platform, qui conserve l'état de tous les objets de ressources. Une sauvegarde etcd joue un rôle crucial dans la reprise après sinistre. Dans OpenShift Container Platform, vous pouvez également remplacer un membre etcd malsain.
Lorsque vous souhaitez remettre votre cluster en marche, redémarrez-le avec élégance.
Les certificats d'une grappe expirent un an après la date d'installation. Vous pouvez arrêter une grappe et vous attendre à ce qu'elle redémarre sans problème tant que les certificats sont encore valides. Bien que la grappe récupère automatiquement les certificats de plan de contrôle expirés, vous devez toujours approuver les demandes de signature de certificat (CSR).
Vous pouvez rencontrer plusieurs situations dans lesquelles OpenShift Container Platform ne fonctionne pas comme prévu, par exemple :
- Vous avez un cluster qui n'est pas fonctionnel après le redémarrage en raison de conditions inattendues, telles que la défaillance d'un nœud ou des problèmes de connectivité réseau.
- Vous avez supprimé par erreur un élément essentiel du cluster.
- Vous avez perdu la majorité des hôtes du plan de contrôle, ce qui entraîne la perte du quorum etcd.
Vous pouvez toujours vous remettre d'une situation de désastre en restaurant votre cluster à son état précédent en utilisant les snapshots etcd sauvegardés.
1.2. Opérations de sauvegarde et de restauration des applications Copier lienLien copié sur presse-papiers!
En tant qu'administrateur de cluster, vous pouvez sauvegarder et restaurer des applications fonctionnant sur OpenShift Container Platform en utilisant l'API OpenShift pour la protection des données (OADP).
OADP sauvegarde et restaure les ressources Kubernetes et les images internes, à la granularité d'un espace de noms, en utilisant la version de Velero appropriée à la version d'OADP que vous installez, conformément au tableau de la section Téléchargement de l'outil Velero CLI. OADP sauvegarde et restaure les volumes persistants (PV) à l'aide d'instantanés ou de Restic. Pour plus d'informations, voir Fonctionnalités de l'OADP.
1.2.1. Exigences de l'OADP Copier lienLien copié sur presse-papiers!
L'OADP a les exigences suivantes :
-
Vous devez être connecté en tant qu'utilisateur ayant le rôle
cluster-admin. Vous devez disposer d'un stockage d'objets pour stocker les sauvegardes, tel que l'un des types de stockage suivants :
- OpenShift Data Foundation
- Amazon Web Services
- Microsoft Azure
- Google Cloud Platform
- Stockage d'objets compatible S3
Si vous souhaitez utiliser la sauvegarde CSI sur l'OCP 4.11 et les versions ultérieures, installez l'OADP 1.1.x.
OADP 1.0.x ne prend pas en charge la sauvegarde CSI sur OCP 4.11 et les versions ultérieures. OADP 1.0.x inclut Velero 1.7.x et attend le groupe API snapshot.storage.k8s.io/v1beta1, qui n'est pas présent sur l'OCP 4.11 et les versions ultérieures.
L'API CloudStorage pour le stockage S3 est une fonctionnalité d'aperçu technologique uniquement. Les fonctionnalités de l'aperçu technologique ne sont pas prises en charge par les accords de niveau de service (SLA) de production de Red Hat et peuvent ne pas être complètes sur le plan fonctionnel. Red Hat ne recommande pas de les utiliser en production. Ces fonctionnalités offrent un accès anticipé aux fonctionnalités des produits à venir, ce qui permet aux clients de tester les fonctionnalités et de fournir un retour d'information pendant le processus de développement.
Pour plus d'informations sur la portée de l'assistance des fonctionnalités de l'aperçu technologique de Red Hat, voir Portée de l'assistance des fonctionnalités de l'aperçu technologique.
Pour sauvegarder des PV à l'aide d'instantanés, vous devez disposer d'un stockage en nuage doté d'une API d'instantanés native ou prenant en charge les instantanés de l'interface de stockage de conteneurs (CSI), tels que les fournisseurs suivants :
- Amazon Web Services
- Microsoft Azure
- Google Cloud Platform
- Stockage en nuage CSI compatible avec les instantanés, tel que Ceph RBD ou Ceph FS
Si vous ne souhaitez pas sauvegarder les PV à l'aide d'instantanés, vous pouvez utiliser Restic, qui est installé par défaut par l'opérateur OADP.
1.2.2. Sauvegarde et restauration des applications Copier lienLien copié sur presse-papiers!
Vous sauvegardez les applications en créant une Backup ressource personnalisée (CR). Vous pouvez configurer les options de sauvegarde suivantes :
- Crochets de sauvegarde pour exécuter des commandes avant ou après l'opération de sauvegarde
- Sauvegardes programmées
- Sauvegardes Restic
Vous restaurez les applications en créant un Restore CR. Vous pouvez configurer les crochets de restauration pour qu'ils exécutent des commandes dans les conteneurs init ou dans le conteneur d'application pendant l'opération de restauration.
Chapitre 2. Arrêter le cluster de manière élégante Copier lienLien copié sur presse-papiers!
Ce document décrit le processus d'arrêt gracieux de votre cluster. Vous pouvez avoir besoin d'arrêter temporairement votre cluster pour des raisons de maintenance ou pour économiser des ressources.
2.1. Conditions préalables Copier lienLien copié sur presse-papiers!
- Effectuer une sauvegarde d'etcd avant d'arrêter le cluster.
2.2. Arrêt du cluster Copier lienLien copié sur presse-papiers!
Vous pouvez arrêter votre cluster de manière gracieuse afin qu'il puisse être redémarré ultérieurement.
Vous pouvez arrêter une grappe jusqu'à un an après la date d'installation et vous attendre à ce qu'elle redémarre sans problème. Après un an à compter de la date d'installation, les certificats de la grappe expirent.
Conditions préalables
-
Vous avez accès au cluster en tant qu'utilisateur ayant le rôle
cluster-admin. Vous avez effectué une sauvegarde etcd.
ImportantIl est important de faire une sauvegarde d'etcd avant d'effectuer cette procédure afin que votre cluster puisse être restauré si vous rencontrez des problèmes lors du redémarrage du cluster.
Par exemple, les conditions suivantes peuvent entraîner un dysfonctionnement du cluster redémarré :
- corruption des données etcd lors de l'arrêt
- Défaillance d'un nœud due au matériel
- Problèmes de connectivité du réseau
Si votre cluster ne se rétablit pas, suivez les étapes pour rétablir l'état précédent du cluster.
Procédure
Si vous arrêtez le cluster pour une période prolongée, déterminez la date d'expiration des certificats.
oc -n openshift-kube-apiserver-operator get secret kube-apiserver-to-kubelet-signer -o jsonpath='{.metadata.annotations.auth\.openshift\.io/certificate-not-after}'$ oc -n openshift-kube-apiserver-operator get secret kube-apiserver-to-kubelet-signer -o jsonpath='{.metadata.annotations.auth\.openshift\.io/certificate-not-after}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
2022-08-05T14:37:50Zuser@user:~ $
2022-08-05T14:37:50Zuser@user:~ $1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Pour garantir un redémarrage en douceur du cluster, prévoyez de le redémarrer au plus tard à la date spécifiée. Lors du redémarrage du cluster, il se peut que vous deviez approuver manuellement les demandes de signature de certificat (CSR) en attente pour récupérer les certificats des kubelets.
Arrêtez tous les nœuds du cluster. Vous pouvez le faire à partir de la console web de votre fournisseur de cloud ou exécuter la boucle suivante :
for node in $(oc get nodes -o jsonpath='{.items[*].metadata.name}') ; do oc debug node/${node} -- chroot /host shutdown -h 1 ; donefor node in $(oc get nodes -o jsonpath='{.items[*].metadata.name}') ; do oc debug node/${node} -- chroot /host shutdown -h 1 ; done1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
-h 1indique la durée, en minutes, de ce processus avant l'arrêt des nœuds du plan de contrôle. Pour les clusters à grande échelle de 10 nœuds ou plus, définissez une durée de 10 minutes ou plus afin de vous assurer que tous les nœuds de calcul ont le temps de s'arrêter en premier.
Exemple de sortie
Copy to Clipboard Copied! Toggle word wrap Toggle overflow L'arrêt des nœuds à l'aide de l'une de ces méthodes permet aux pods de se terminer de manière élégante, ce qui réduit le risque de corruption des données.
NoteAjustez le temps d'arrêt pour qu'il soit plus long pour les grappes à grande échelle :
for node in $(oc get nodes -o jsonpath='{.items[*].metadata.name}'); do oc debug node/${node} -- chroot /host shutdown -h 10; done$ for node in $(oc get nodes -o jsonpath='{.items[*].metadata.name}'); do oc debug node/${node} -- chroot /host shutdown -h 10; doneCopy to Clipboard Copied! Toggle word wrap Toggle overflow NoteIl n'est pas nécessaire de vider les nœuds du plan de contrôle des pods standard livrés avec OpenShift Container Platform avant l'arrêt.
Les administrateurs de clusters sont chargés de garantir un redémarrage propre de leurs propres charges de travail après le redémarrage du cluster. Si vous avez vidangé des nœuds du plan de contrôle avant l'arrêt en raison de charges de travail personnalisées, vous devez marquer les nœuds du plan de contrôle comme planifiables pour que le cluster soit à nouveau fonctionnel après le redémarrage.
Désactivez toutes les dépendances du cluster qui ne sont plus nécessaires, telles que le stockage externe ou le serveur LDAP. Veillez à consulter la documentation de votre fournisseur avant de procéder à cette opération.
ImportantSi vous avez déployé votre cluster sur une plateforme de fournisseur de cloud, n'arrêtez pas, ne suspendez pas et ne supprimez pas les ressources cloud associées. Si vous supprimez les ressources cloud d'une machine virtuelle suspendue, OpenShift Container Platform risque de ne pas se restaurer correctement.
Chapitre 3. Redémarrer le cluster avec élégance Copier lienLien copié sur presse-papiers!
Ce document décrit le processus de redémarrage de votre cluster après un arrêt gracieux.
Même si le cluster est censé être fonctionnel après le redémarrage, il se peut qu'il ne se rétablisse pas en raison de conditions inattendues, par exemple :
- corruption des données etcd lors de l'arrêt
- Défaillance d'un nœud due au matériel
- Problèmes de connectivité du réseau
Si votre cluster ne se rétablit pas, suivez les étapes pour rétablir l'état précédent du cluster.
3.1. Conditions préalables Copier lienLien copié sur presse-papiers!
- Vous avez arrêté votre cluster de manière élégante.
3.2. Redémarrage du cluster Copier lienLien copié sur presse-papiers!
Vous pouvez redémarrer votre cluster après qu'il ait été arrêté de manière gracieuse.
Conditions préalables
-
Vous avez accès au cluster en tant qu'utilisateur ayant le rôle
cluster-admin. - Cette procédure suppose que vous avez arrêté le cluster de manière gracieuse.
Procédure
- Activez toutes les dépendances du cluster, telles que le stockage externe ou un serveur LDAP.
Démarrer toutes les machines du cluster.
Utilisez la méthode appropriée à votre environnement cloud pour démarrer les machines, par exemple à partir de la console web de votre fournisseur de cloud.
Attendez environ 10 minutes avant de continuer à vérifier l'état des nœuds du plan de contrôle.
Vérifier que tous les nœuds du plan de contrôle sont prêts.
oc get nodes -l node-role.kubernetes.io/master
$ oc get nodes -l node-role.kubernetes.io/masterCopy to Clipboard Copied! Toggle word wrap Toggle overflow Les nœuds du plan de contrôle sont prêts si l'état est
Ready, comme le montre la sortie suivante :NAME STATUS ROLES AGE VERSION ip-10-0-168-251.ec2.internal Ready master 75m v1.25.0 ip-10-0-170-223.ec2.internal Ready master 75m v1.25.0 ip-10-0-211-16.ec2.internal Ready master 75m v1.25.0
NAME STATUS ROLES AGE VERSION ip-10-0-168-251.ec2.internal Ready master 75m v1.25.0 ip-10-0-170-223.ec2.internal Ready master 75m v1.25.0 ip-10-0-211-16.ec2.internal Ready master 75m v1.25.0Copy to Clipboard Copied! Toggle word wrap Toggle overflow Si les nœuds du plan de contrôle sont prêts pour not, vérifiez s'il y a des demandes de signature de certificat (CSR) en attente qui doivent être approuvées.
Obtenir la liste des CSR actuels :
oc get csr
$ oc get csrCopy to Clipboard Copied! Toggle word wrap Toggle overflow Examinez les détails d'un CSR pour vérifier qu'il est valide :
oc describe csr <csr_name>
oc describe csr <csr_name>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
<csr_name>est le nom d'un CSR figurant dans la liste des CSR actuels.
Approuver chaque RSE valide :
oc adm certificate approve <csr_name>
$ oc adm certificate approve <csr_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Une fois que les nœuds du plan de contrôle sont prêts, vérifiez que tous les nœuds de travail sont prêts.
oc get nodes -l node-role.kubernetes.io/worker
$ oc get nodes -l node-role.kubernetes.io/workerCopy to Clipboard Copied! Toggle word wrap Toggle overflow Les nœuds de travail sont prêts si le statut est
Ready, comme le montre la sortie suivante :NAME STATUS ROLES AGE VERSION ip-10-0-179-95.ec2.internal Ready worker 64m v1.25.0 ip-10-0-182-134.ec2.internal Ready worker 64m v1.25.0 ip-10-0-250-100.ec2.internal Ready worker 64m v1.25.0
NAME STATUS ROLES AGE VERSION ip-10-0-179-95.ec2.internal Ready worker 64m v1.25.0 ip-10-0-182-134.ec2.internal Ready worker 64m v1.25.0 ip-10-0-250-100.ec2.internal Ready worker 64m v1.25.0Copy to Clipboard Copied! Toggle word wrap Toggle overflow Si les nœuds de travail sont prêts pour not, vérifiez s'il y a des demandes de signature de certificat (CSR) en attente qui doivent être approuvées.
Obtenir la liste des CSR actuels :
oc get csr
$ oc get csrCopy to Clipboard Copied! Toggle word wrap Toggle overflow Examinez les détails d'un CSR pour vérifier qu'il est valide :
oc describe csr <csr_name>
oc describe csr <csr_name>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
<csr_name>est le nom d'un CSR figurant dans la liste des CSR actuels.
Approuver chaque RSE valide :
oc adm certificate approve <csr_name>
$ oc adm certificate approve <csr_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Vérifiez que le cluster a démarré correctement.
Vérifiez qu'il n'y a pas d'opérateurs de cluster dégradés.
oc get clusteroperators
$ oc get clusteroperatorsCopy to Clipboard Copied! Toggle word wrap Toggle overflow Vérifiez qu'il n'y a pas d'opérateurs de cluster dont la condition
DEGRADEDest définie surTrue.Copy to Clipboard Copied! Toggle word wrap Toggle overflow Vérifiez que tous les nœuds sont dans l'état
Ready:oc get nodes
$ oc get nodesCopy to Clipboard Copied! Toggle word wrap Toggle overflow Vérifiez que l'état de tous les nœuds est
Ready.Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Si le cluster n'a pas démarré correctement, il se peut que vous deviez le restaurer à l'aide d'une sauvegarde etcd.
Chapitre 4. Sauvegarde et restauration des applications Copier lienLien copié sur presse-papiers!
4.1. Notes de mise à jour de l'OADP Copier lienLien copié sur presse-papiers!
Les notes de version d'OpenShift API for Data Protection (OADP) décrivent les nouvelles fonctionnalités et améliorations, les fonctionnalités obsolètes, les recommandations de produit, les problèmes connus et les problèmes résolus.
4.1.1. Notes de publication de l'OADP 1.1.2 Copier lienLien copié sur presse-papiers!
Les notes de mise à jour de l'OADP 1.1.2 comprennent des recommandations sur le produit, une liste des bogues corrigés et des descriptions des problèmes connus.
4.1.1.1. Recommandations de produits Copier lienLien copié sur presse-papiers!
VolSync
Pour préparer la mise à jour de VolSync 0.5.1 vers la dernière version disponible sur le canal VolSync stable, vous devez ajouter cette annotation dans l'espace de noms openshift-adp en exécutant la commande suivante :
oc annotate --overwrite namespace/openshift-adp volsync.backube/privileged-movers='true'
$ oc annotate --overwrite namespace/openshift-adp volsync.backube/privileged-movers='true'
Velero
Dans cette version, Velero est passé de la version 1.9.2 à la version 1.9.5.
Restic
Dans cette version, Restic est passé de la version 0.13.1 à la version 0.14.0.
4.1.1.2. Bugs corrigés Copier lienLien copié sur presse-papiers!
Les bogues suivants ont été corrigés dans cette version :
4.1.1.3. Problèmes connus Copier lienLien copié sur presse-papiers!
Cette version comporte les problèmes connus suivants :
- Actuellement, l'OADP ne prend pas en charge la sauvegarde et la restauration des volumes AWS EFS à l'aide de restic dans Velero (OADP-778).
Les sauvegardes CSI peuvent échouer en raison d'une limitation Ceph de
VolumeSnapshotContentsnapshots par PVC.Vous pouvez créer plusieurs instantanés de la même revendication de volume persistant (PVC), mais vous ne pouvez pas planifier la création périodique d'instantanés :
Pour plus d'informations, voir Instantanés de volume.
4.1.2. Notes de mise à jour de l'OADP 1.1.1 Copier lienLien copié sur presse-papiers!
Les notes de mise à jour de l'OADP 1.1.1 comprennent des recommandations sur le produit et des descriptions des problèmes connus.
4.1.2.1. Recommandations de produits Copier lienLien copié sur presse-papiers!
Avant d'installer OADP 1.1.1, il est recommandé d'installer VolSync 0.5.1 ou de le mettre à jour.
4.1.2.2. Problèmes connus Copier lienLien copié sur presse-papiers!
Cette version comporte les problèmes connus suivants :
- Actuellement, l'OADP ne prend pas en charge la sauvegarde et la restauration des volumes AWS EFS à l'aide de restic dans Velero (OADP-778).
Les sauvegardes CSI peuvent échouer en raison d'une limitation Ceph de
VolumeSnapshotContentsnapshots par PVC.Vous pouvez créer plusieurs instantanés de la même revendication de volume persistant (PVC), mais vous ne pouvez pas planifier la création périodique d'instantanés :
- Pour CephFS, vous pouvez créer jusqu'à 100 instantanés par PVC.
Pour RADOS Block Device (RBD), vous pouvez créer jusqu'à 512 snapshots pour chaque PVC. (OADP-804) et (OADP-975)
Pour plus d'informations, voir Instantanés de volume.
4.2. Fonctionnalités et plugins de l'OADP Copier lienLien copié sur presse-papiers!
Les fonctionnalités d'OpenShift API for Data Protection (OADP) offrent des options de sauvegarde et de restauration des applications.
Les plugins par défaut permettent à Velero de s'intégrer à certains fournisseurs de cloud et de sauvegarder et restaurer les ressources d'OpenShift Container Platform.
4.2.1. Caractéristiques de l'OADP Copier lienLien copié sur presse-papiers!
OpenShift API for Data Protection (OADP) prend en charge les fonctionnalités suivantes :
- Sauvegarde
Vous pouvez sauvegarder toutes les ressources de votre cluster ou filtrer les ressources par type, espace de noms ou étiquette.
L'OADP sauvegarde les objets Kubernetes et les images internes en les enregistrant en tant que fichier d'archive sur le stockage d'objets. L'OADP sauvegarde les volumes persistants (PV) en créant des instantanés à l'aide de l'API native d'instantané du nuage ou de l'interface de stockage de conteneurs (CSI). Pour les fournisseurs de cloud qui ne prennent pas en charge les instantanés, l'OADP sauvegarde les ressources et les données des PV avec Restic.
- Restaurer
- Vous pouvez restaurer des ressources et des PV à partir d'une sauvegarde. Vous pouvez restaurer tous les objets d'une sauvegarde ou filtrer les objets restaurés par espace de noms, PV ou étiquette.
- Calendrier
- Vous pouvez planifier des sauvegardes à des intervalles déterminés.
- Crochets
-
Vous pouvez utiliser des hooks pour exécuter des commandes dans un conteneur sur un pod, par exemple,
fsfreezepour geler un système de fichiers. Vous pouvez configurer un hook pour qu'il s'exécute avant ou après une sauvegarde ou une restauration. Les hooks de restauration peuvent être exécutés dans un conteneur init ou dans le conteneur d'application.
4.2.2. Plugins OADP Copier lienLien copié sur presse-papiers!
L'API OpenShift pour la protection des données (OADP) fournit des plugins Velero par défaut qui sont intégrés avec les fournisseurs de stockage pour prendre en charge les opérations de sauvegarde et d'instantané. Vous pouvez créer des plugins personnalisés basés sur les plugins Velero.
OADP fournit également des plugins pour les sauvegardes de ressources OpenShift Container Platform, les sauvegardes de ressources OpenShift Virtualization et les instantanés de l'interface de stockage de conteneurs (CSI).
| Plugin OADP | Fonction | Lieu de stockage |
|---|---|---|
|
| Sauvegarde et restauration des objets Kubernetes. | AWS S3 |
| Sauvegarde et restauration de volumes à l'aide d'instantanés. | AWS EBS | |
|
| Sauvegarde et restauration des objets Kubernetes. | Stockage Blob de Microsoft Azure |
| Sauvegarde et restauration de volumes à l'aide d'instantanés. | Disques gérés Microsoft Azure | |
|
| Sauvegarde et restauration des objets Kubernetes. | Stockage dans le nuage de Google |
| Sauvegarde et restauration de volumes à l'aide d'instantanés. | Disques Google Compute Engine | |
|
| Sauvegarde et restaure les ressources de OpenShift Container Platform. [1] | Magasin d'objets |
|
| Sauvegarde et restauration des ressources de virtualisation OpenShift. [2] | Magasin d'objets |
|
| Sauvegarde et restauration de volumes avec des instantanés CSI. [3] | Stockage en nuage prenant en charge les instantanés CSI |
- Obligatoire.
- Les disques des machines virtuelles sont sauvegardés à l'aide d'instantanés CSI ou Restic.
-
Le plugin
csiutilise l'API Velero CSI beta snapshot.
4.2.3. A propos des plugins OADP Velero Copier lienLien copié sur presse-papiers!
Vous pouvez configurer deux types de plugins lorsque vous installez Velero :
- Plugins de fournisseurs de cloud par défaut
- Plugins personnalisés
Les deux types de plugins sont facultatifs, mais la plupart des utilisateurs configurent au moins un plugin de fournisseur de cloud.
4.2.3.1. Plugins par défaut du fournisseur de cloud Velero Copier lienLien copié sur presse-papiers!
Vous pouvez installer l'un des plugins Velero suivants lorsque vous configurez le fichier oadp_v1alpha1_dpa.yaml pendant le déploiement :
-
aws(Amazon Web Services) -
gcp(Google Cloud Platform) -
azure(Microsoft Azure) -
openshift(plugin OpenShift Velero) -
csi(Interface de stockage de conteneurs) -
kubevirt(KubeVirt)
Vous spécifiez les plugins par défaut souhaités dans le fichier oadp_v1alpha1_dpa.yaml lors du déploiement.
Exemple de fichier
Le fichier .yaml suivant installe les plugins openshift, aws, azure et gcp:
4.2.3.2. Plugins Velero personnalisés Copier lienLien copié sur presse-papiers!
Vous pouvez installer un plugin Velero personnalisé en spécifiant les plugins image et name lorsque vous configurez le fichier oadp_v1alpha1_dpa.yaml pendant le déploiement.
Vous spécifiez les plugins personnalisés souhaités dans le fichier oadp_v1alpha1_dpa.yaml lors du déploiement.
Exemple de fichier
Le fichier .yaml suivant installe les plugins par défaut openshift, azure, et gcp ainsi qu'un plugin personnalisé portant le nom custom-plugin-example et l'image quay.io/example-repo/custom-velero-plugin:
4.2.4. Prise en charge de l'OADP pour les systèmes IBM Power et IBM zSystems Copier lienLien copié sur presse-papiers!
OpenShift API for Data Protection (OADP) est neutre en termes de plateforme. Les informations qui suivent concernent uniquement IBM Power et IBM zSystems.
OADP 1.1.0 a été testé avec succès contre OpenShift Container Platform 4.11 pour les systèmes IBM Power et IBM zSystems. Les sections suivantes donnent des informations sur les tests et le support pour OADP 1.1.0 en termes d'emplacements de sauvegarde pour ces systèmes.
4.2.4.1. Prise en charge de l'OADP pour les sites de sauvegarde cibles utilisant IBM Power Copier lienLien copié sur presse-papiers!
IBM Power fonctionnant avec OpenShift Container Platform 4.11 et 4.12, et OpenShift API for Data Protection (OADP) 1.1.2 a été testé avec succès contre une cible d'emplacement de sauvegarde AWS S3. Bien que le test n'ait impliqué qu'une cible AWS S3, Red Hat prend en charge l'exécution d'IBM Power avec OpenShift Container Platform 4.11 et 4.12, et OADP 1.1.2 contre toutes les cibles d'emplacement de sauvegarde S3 non-AWS également.
4.2.4.2. Tests et assistance OADP pour les sites de sauvegarde cibles utilisant des systèmes IBM z Copier lienLien copié sur presse-papiers!
IBM zSystems fonctionnant avec OpenShift Container Platform 4.11 et 4.12, et OpenShift API for Data Protection (OADP) 1.1.2 a été testé avec succès contre une cible d'emplacement de sauvegarde AWS S3. Bien que le test n'ait impliqué qu'une cible AWS S3, Red Hat prend en charge l'exécution d'IBM zSystems avec OpenShift Container Platform 4.11 et 4.12, et OADP 1.1.2 contre toutes les cibles d'emplacement de sauvegarde S3 non-AWS également.
4.3. Installation et configuration de l'OADP Copier lienLien copié sur presse-papiers!
4.3.1. A propos de l'installation de l'OADP Copier lienLien copié sur presse-papiers!
En tant qu'administrateur de cluster, vous installez l'API OpenShift pour la protection des données (OADP) en installant l'opérateur OADP. L'opérateur OADP installe Velero 1.9.
À partir d'OADP 1.0.4, toutes les versions d'OADP 1.0.z ne peuvent être utilisées qu'en tant que dépendance de l'opérateur MTC et ne sont pas disponibles en tant qu'opérateur autonome.
Pour sauvegarder les ressources Kubernetes et les images internes, vous devez disposer d'un stockage d'objets comme emplacement de sauvegarde, tel que l'un des types de stockage suivants :
- Amazon Web Services
- Microsoft Azure
- Google Cloud Platform
- Passerelle d'objets multicloud
- Stockage d'objets compatible S3, tel que Noobaa ou Minio
L'API CloudStorage, qui automatise la création d'un godet pour le stockage d'objets, est une fonctionnalité de l'aperçu technologique uniquement. Les fonctionnalités de l'aperçu technologique ne sont pas prises en charge par les accords de niveau de service (SLA) de production de Red Hat et peuvent ne pas être complètes sur le plan fonctionnel. Red Hat ne recommande pas de les utiliser en production. Ces fonctionnalités offrent un accès anticipé aux fonctionnalités des produits à venir, ce qui permet aux clients de tester les fonctionnalités et de fournir un retour d'information pendant le processus de développement.
Pour plus d'informations sur la portée de l'assistance des fonctionnalités de l'aperçu technologique de Red Hat, voir Portée de l'assistance des fonctionnalités de l'aperçu technologique.
Vous pouvez sauvegarder des volumes persistants (PV) à l'aide d'instantanés ou de Restic.
Pour sauvegarder des PV à l'aide d'instantanés, vous devez disposer d'un fournisseur de cloud qui prend en charge une API d'instantanés native ou des instantanés de l'interface de stockage de conteneurs (CSI), comme l'un des fournisseurs de cloud suivants :
- Amazon Web Services
- Microsoft Azure
- Google Cloud Platform
- Fournisseur de services en nuage CSI compatible avec les instantanés, tel qu'OpenShift Data Foundation
Si vous souhaitez utiliser la sauvegarde CSI sur l'OCP 4.11 et les versions ultérieures, installez l'OADP 1.1.x.
OADP 1.0.x ne prend pas en charge la sauvegarde CSI sur OCP 4.11 et les versions ultérieures. OADP 1.0.x inclut Velero 1.7.x et attend le groupe API snapshot.storage.k8s.io/v1beta1, qui n'est pas présent sur l'OCP 4.11 et les versions ultérieures.
Si votre fournisseur de cloud computing ne prend pas en charge les instantanés ou si votre stockage est de type NFS, vous pouvez sauvegarder des applications avec des sauvegardes Restic sur un stockage d'objets.
Vous créez un site Secret par défaut, puis vous installez l'application de protection des données.
4.3.1.1. Configurer NooBaa pour la reprise après sinistre sur OpenShift Data Foundation Copier lienLien copié sur presse-papiers!
Si vous utilisez le stockage en cluster pour votre bucket NooBaa backupStorageLocation sur OpenShift Data Foundation, configurez NooBaa en tant que magasin d'objets externe.
Si NooBaa n'est pas configuré comme un magasin d'objets externe, les sauvegardes risquent de ne pas être disponibles.
Procédure
- Configurez NooBaa en tant que magasin d'objets externe comme décrit dans Ajouter des ressources de stockage pour l'hybride ou le Multicloud.
4.3.1.2. À propos des canaux de mise à jour de l'OADP Copier lienLien copié sur presse-papiers!
Lorsque vous installez un opérateur OADP, vous choisissez un canal update channel. Ce canal détermine les mises à jour de l'opérateur OADP et de Velero que vous recevez. Vous pouvez changer de canal à tout moment.
Il existe trois canaux de mise à jour :
-
Le canal stable contient les dernières mises à jour mineures (y-stream updates) et les correctifs (z-stream updates) de OADP ClusterServiceVersion`. Au fur et à mesure de la publication de chaque nouvelle version, le site
ClusterServiceVersionde l'opérateur OADP sera complété par le dernier correctif mineur disponible. -
Le canal stable-1.0 contient
oadp.v1.0.zla version la plus récente de l'OADP 1.0ClusterServiceVersion. -
Le canal stable-1.1 contient
oadp.v1.1.zla version la plus récente de l'OADP 1.1ClusterServiceVersion.
Which update channel is right for you?
- Choisissez le canal de mise à jour stable pour installer la dernière version stable de l'OADP et recevoir les mises à jour mineures et les correctifs. Si vous choisissez ce canal, vous recevrez toutes les mises à jour y-stream et toutes les mises à jour z-stream de la version x.y.z.
- Choisissez le canal de mise à jour stable-1.y update channel pour installer OADP 1.y et continuer à recevoir les correctifs. Si vous choisissez ce canal, vous recevrez tous les correctifs z-stream pour la version 1.y.z.
When must you switch update channels?
- Si vous avez installé OADP 1.y et que vous souhaitez recevoir des correctifs uniquement pour ce flux, vous devez passer du canal de mise à jour stable au canal de mise à jour stable-1.y canal de mise à jour. Vous recevrez alors tous les correctifs du flux z pour la version 1.y.z.
- Si vous avez installé OADP 1.0, que vous souhaitez passer à OADP 1.1 et recevoir des correctifs uniquement pour OADP 1.1, vous devez passer du canal de mise à jour stable-1.0 au canal de mise à jour stable-1.1. Vous recevrez alors tous les correctifs z-stream pour la version 1.1.z.
- Si vous avez installé OADP 1.y, avec y supérieur à 0, et que vous souhaitez passer à OADP 1.0, vous devez uninstall votre opérateur OADP et le réinstaller en utilisant le canal de mise à jour stable-1.0. Vous recevrez alors tous les correctifs z-stream pour la version 1.0.z.
Vous ne pouvez pas passer de l'OADP 1.y à l'OADP 1.0 en changeant de canal de mise à jour. Vous devez désinstaller l'opérateur et le réinstaller.
4.3.2. Installation et configuration d'OpenShift API for Data Protection avec Amazon Web Services Copier lienLien copié sur presse-papiers!
Vous installez OpenShift API for Data Protection (OADP) avec Amazon Web Services (AWS) en installant l'opérateur OADP. L'opérateur installe Velero 1.9.
À partir d'OADP 1.0.4, toutes les versions d'OADP 1.0.z ne peuvent être utilisées qu'en tant que dépendance de l'opérateur MTC et ne sont pas disponibles en tant qu'opérateur autonome.
Vous configurez AWS pour Velero, créez une adresse Secret par défaut, puis installez l'application de protection des données.
Pour installer l'OADP Operator dans un environnement réseau restreint, vous devez d'abord désactiver les sources OperatorHub par défaut et mettre en miroir le catalogue Operator. Voir Utilisation d'Operator Lifecycle Manager sur des réseaux restreints pour plus de détails.
4.3.2.1. Installation de l'opérateur OADP Copier lienLien copié sur presse-papiers!
Vous installez l'opérateur OpenShift API for Data Protection (OADP) sur OpenShift Container Platform 4.12 en utilisant Operator Lifecycle Manager (OLM).
L'opérateur OADP installe Velero 1.9.
Conditions préalables
-
Vous devez être connecté en tant qu'utilisateur avec des privilèges
cluster-admin.
Procédure
- Dans la console web d'OpenShift Container Platform, cliquez sur Operators → OperatorHub.
- Utilisez le champ Filter by keyword pour trouver le OADP Operator.
- Sélectionnez le site OADP Operator et cliquez sur Install.
-
Cliquez sur Install pour installer l'opérateur dans le projet
openshift-adp. - Cliquez sur Operators → Installed Operators pour vérifier l'installation.
4.3.2.2. Configuration d'Amazon Web Services Copier lienLien copié sur presse-papiers!
Vous configurez Amazon Web Services (AWS) pour OpenShift API for Data Protection (OADP).
Conditions préalables
- Le logiciel AWS CLI doit être installé.
Procédure
Définir la variable
BUCKET:BUCKET=<your_bucket>
$ BUCKET=<your_bucket>Copy to Clipboard Copied! Toggle word wrap Toggle overflow Définir la variable
REGION:REGION=<your_region>
$ REGION=<your_region>Copy to Clipboard Copied! Toggle word wrap Toggle overflow Créez un seau AWS S3 :
aws s3api create-bucket \ --bucket $BUCKET \ --region $REGION \ --create-bucket-configuration LocationConstraint=$REGION$ aws s3api create-bucket \ --bucket $BUCKET \ --region $REGION \ --create-bucket-configuration LocationConstraint=$REGION1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
us-east-1ne prend pas en chargeLocationConstraint. Si votre région estus-east-1, omettez--create-bucket-configuration LocationConstraint=$REGION.
Créer un utilisateur IAM :
aws iam create-user --user-name velero
aws iam create-user --user-name velero1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Si vous souhaitez utiliser Velero pour sauvegarder plusieurs clusters avec plusieurs buckets S3, créez un nom d'utilisateur unique pour chaque cluster.
Créer un fichier
velero-policy.json:Copy to Clipboard Copied! Toggle word wrap Toggle overflow Attachez les politiques pour donner à l'utilisateur
veleroles permissions minimales nécessaires :aws iam put-user-policy \ --user-name velero \ --policy-name velero \ --policy-document file://velero-policy.json
$ aws iam put-user-policy \ --user-name velero \ --policy-name velero \ --policy-document file://velero-policy.jsonCopy to Clipboard Copied! Toggle word wrap Toggle overflow Créer une clé d'accès pour l'utilisateur
velero:aws iam create-access-key --user-name velero
$ aws iam create-access-key --user-name veleroCopy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Créer un fichier
credentials-velero:cat << EOF > ./credentials-velero [default] aws_access_key_id=<AWS_ACCESS_KEY_ID> aws_secret_access_key=<AWS_SECRET_ACCESS_KEY> EOF
$ cat << EOF > ./credentials-velero [default] aws_access_key_id=<AWS_ACCESS_KEY_ID> aws_secret_access_key=<AWS_SECRET_ACCESS_KEY> EOFCopy to Clipboard Copied! Toggle word wrap Toggle overflow Vous utilisez le fichier
credentials-veleropour créer un objetSecretpour AWS avant d'installer l'application de protection des données.
4.3.2.3. A propos des emplacements de sauvegarde et d'instantané et de leurs secrets Copier lienLien copié sur presse-papiers!
Vous spécifiez les emplacements de sauvegarde et d'instantané ainsi que leurs secrets dans la ressource personnalisée (CR) DataProtectionApplication.
Emplacements de sauvegarde
Vous spécifiez un stockage d'objets compatible S3, tel que Multicloud Object Gateway, Noobaa ou Minio, en tant qu'emplacement de sauvegarde.
Velero sauvegarde les ressources d'OpenShift Container Platform, les objets Kubernetes et les images internes en tant que fichier d'archive sur le stockage d'objets.
Lieux de l'instantané
Si vous utilisez l'API d'instantané native de votre fournisseur de cloud computing pour sauvegarder des volumes persistants, vous devez spécifier le fournisseur de cloud computing comme emplacement d'instantané.
Si vous utilisez des instantanés de l'interface de stockage de conteneurs (CSI), vous n'avez pas besoin de spécifier un emplacement d'instantané car vous créerez un CR VolumeSnapshotClass pour enregistrer le pilote CSI.
Si vous utilisez Restic, vous n'avez pas besoin de spécifier un emplacement d'instantané car Restic sauvegarde le système de fichiers sur le stockage objet.
Secrets
Si les emplacements de sauvegarde et d'instantané utilisent les mêmes informations d'identification ou si vous n'avez pas besoin d'un emplacement d'instantané, vous créez un emplacement par défaut Secret.
Si les emplacements de sauvegarde et d'instantané utilisent des informations d'identification différentes, vous créez deux objets secrets :
-
Secretpersonnalisé pour l'emplacement de sauvegarde, que vous spécifiez dans le CRDataProtectionApplication. -
Secretpar défaut pour l'emplacement de l'instantané, qui n'est pas référencé dans le CRDataProtectionApplication.
L'application de protection des données nécessite une adresse par défaut Secret. Dans le cas contraire, l'installation échouera.
Si vous ne souhaitez pas spécifier d'emplacements de sauvegarde ou d'instantanés lors de l'installation, vous pouvez créer un site Secret par défaut avec un fichier credentials-velero vide.
4.3.2.3.1. Création d'un secret par défaut Copier lienLien copié sur presse-papiers!
Vous créez un site Secret par défaut si vos emplacements de sauvegarde et de cliché utilisent les mêmes informations d'identification ou si vous n'avez pas besoin d'un emplacement de cliché.
Le nom par défaut du site Secret est cloud-credentials.
La ressource personnalisée (CR) DataProtectionApplication nécessite une ressource par défaut Secret. Sinon, l'installation échouera. Si le nom de l'emplacement de sauvegarde Secret n'est pas spécifié, le nom par défaut est utilisé.
Si vous ne souhaitez pas utiliser les informations d'identification de l'emplacement de sauvegarde lors de l'installation, vous pouvez créer un site Secret avec le nom par défaut en utilisant un fichier credentials-velero vide.
Conditions préalables
- Votre stockage d'objets et votre stockage en nuage, le cas échéant, doivent utiliser les mêmes informations d'identification.
- Vous devez configurer le stockage d'objets pour Velero.
-
Vous devez créer un fichier
credentials-veleropour le stockage d'objets dans le format approprié.
Procédure
Créez un site
Secretavec le nom par défaut :oc create secret generic cloud-credentials -n openshift-adp --from-file cloud=credentials-velero
$ oc create secret generic cloud-credentials -n openshift-adp --from-file cloud=credentials-veleroCopy to Clipboard Copied! Toggle word wrap Toggle overflow
Le site Secret est référencé dans le bloc spec.backupLocations.credential de la CR DataProtectionApplication lorsque vous installez l'application de protection des données.
4.3.2.3.2. Création de profils pour différentes informations d'identification Copier lienLien copié sur presse-papiers!
Si vos emplacements de sauvegarde et d'instantané utilisent des identifiants différents, vous créez des profils distincts dans le fichier credentials-velero.
Ensuite, vous créez un objet Secret et spécifiez les profils dans la ressource personnalisée (CR) DataProtectionApplication.
Procédure
Créez un fichier
credentials-veleroavec des profils distincts pour les emplacements de sauvegarde et d'instantané, comme dans l'exemple suivant :Copy to Clipboard Copied! Toggle word wrap Toggle overflow Créer un objet
Secretavec le fichiercredentials-velero:oc create secret generic cloud-credentials -n openshift-adp --from-file cloud=credentials-velero
oc create secret generic cloud-credentials -n openshift-adp --from-file cloud=credentials-velero1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow Ajoutez les profils au CR
DataProtectionApplication, comme dans l'exemple suivant :Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.3.2.4. Configuration de l'application de protection des données Copier lienLien copié sur presse-papiers!
Vous pouvez configurer l'application de protection des données en définissant les allocations de ressources Velero ou en activant les certificats CA auto-signés.
4.3.2.4.1. Paramétrage de l'allocation des ressources CPU et mémoire de Velero Copier lienLien copié sur presse-papiers!
Vous définissez les allocations de ressources CPU et mémoire pour le pod Velero en modifiant le manifeste de ressources personnalisées (CR) DataProtectionApplication.
Conditions préalables
- L'opérateur OpenShift API for Data Protection (OADP) doit être installé.
4.3.2.4.2. Activation des certificats CA auto-signés Copier lienLien copié sur presse-papiers!
Vous devez activer un certificat CA auto-signé pour le stockage d'objets en modifiant le manifeste de ressources personnalisées (CR) DataProtectionApplication afin d'éviter une erreur certificate signed by unknown authority.
Conditions préalables
- L'opérateur OpenShift API for Data Protection (OADP) doit être installé.
Procédure
Modifier les paramètres
spec.backupLocations.velero.objectStorage.caCertetspec.backupLocations.velero.configdu manifesteDataProtectionApplicationCR :Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.3.2.5. Installation de l'application de protection des données Copier lienLien copié sur presse-papiers!
Vous installez l'application de protection des données (DPA) en créant une instance de l'API DataProtectionApplication.
Conditions préalables
- Vous devez installer l'opérateur OADP.
- Vous devez configurer le stockage d'objets comme emplacement de sauvegarde.
- Si vous utilisez des instantanés pour sauvegarder des PV, votre fournisseur de cloud computing doit prendre en charge une API d'instantanés native ou des instantanés de l'interface de stockage de conteneurs (CSI).
-
Si les emplacements de sauvegarde et d'instantané utilisent les mêmes informations d'identification, vous devez créer un site
Secretavec le nom par défaut,cloud-credentials. Si les emplacements de sauvegarde et d'instantané utilisent des informations d'identification différentes, vous devez créer un site
Secretavec le nom par défaut,cloud-credentials, qui contient des profils distincts pour les informations d'identification de l'emplacement de sauvegarde et de l'emplacement d'instantané.NoteSi vous ne souhaitez pas spécifier d'emplacements de sauvegarde ou d'instantanés lors de l'installation, vous pouvez créer une adresse
Secretpar défaut avec un fichiercredentials-velerovide. S'il n'y a pas deSecretpar défaut, l'installation échouera.
Procédure
- Cliquez sur Operators → Installed Operators et sélectionnez l'opérateur OADP.
- Sous Provided APIs, cliquez sur Create instance dans la boîte DataProtectionApplication.
Cliquez sur YAML View et mettez à jour les paramètres du manifeste
DataProtectionApplication:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Le plugin
openshiftest obligatoire. - 2
- Définissez
falsesi vous souhaitez désactiver l'installation de Restic. Restic déploie un ensemble de démons, ce qui signifie que chaque nœud de travailleur a des podsResticen cours d'exécution. Vous configurez Restic pour les sauvegardes en ajoutantspec.defaultVolumesToRestic: trueau CRBackup. - 3
- Spécifie le sélecteur de nœud à fournir à Restic podSpec.
- 4
- Spécifiez un bac comme emplacement de stockage des sauvegardes. Si le bac n'est pas un bac dédié aux sauvegardes Velero, vous devez spécifier un préfixe.
- 5
- Spécifiez un préfixe pour les sauvegardes Velero, par exemple,
velero, si le seau est utilisé à des fins multiples. - 6
- Indiquez le nom de l'objet
Secretque vous avez créé. Si vous ne spécifiez pas cette valeur, le nom par défaut,cloud-credentials, est utilisé. Si vous spécifiez un nom personnalisé, celui-ci est utilisé pour l'emplacement de sauvegarde. - 7
- Il n'est pas nécessaire de spécifier un emplacement d'instantané si vous utilisez des instantanés CSI ou Restic pour sauvegarder des PV.
- 8
- L'emplacement de l'instantané doit être situé dans la même région que les PV.
- Cliquez sur Create.
Vérifiez l'installation en consultant les ressources de l'OADP :
oc get all -n openshift-adp
$ oc get all -n openshift-adpCopy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.3.2.5.1. Activation de l'ISC dans l'application de protection des données CR Copier lienLien copié sur presse-papiers!
Vous activez l'interface de stockage de conteneurs (CSI) dans la ressource personnalisée (CR) DataProtectionApplication afin de sauvegarder des volumes persistants à l'aide d'instantanés CSI.
Conditions préalables
- Le fournisseur de services en nuage doit prendre en charge les instantanés CSI.
Procédure
Modifiez le CR
DataProtectionApplication, comme dans l'exemple suivant :Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Ajouter le plugin par défaut
csi.
4.3.3. Installation et configuration de l'API OpenShift pour la protection des données avec Microsoft Azure Copier lienLien copié sur presse-papiers!
Vous installez OpenShift API for Data Protection (OADP) avec Microsoft Azure en installant l'opérateur OADP. L'opérateur installe Velero 1.9.
À partir d'OADP 1.0.4, toutes les versions d'OADP 1.0.z ne peuvent être utilisées qu'en tant que dépendance de l'opérateur MTC et ne sont pas disponibles en tant qu'opérateur autonome.
Vous configurez Azure pour Velero, créez un site par défaut Secret, puis installez l'application de protection des données.
Pour installer l'OADP Operator dans un environnement réseau restreint, vous devez d'abord désactiver les sources OperatorHub par défaut et mettre en miroir le catalogue Operator. Voir Utilisation d'Operator Lifecycle Manager sur des réseaux restreints pour plus de détails.
4.3.3.1. Installation de l'opérateur OADP Copier lienLien copié sur presse-papiers!
Vous installez l'opérateur OpenShift API for Data Protection (OADP) sur OpenShift Container Platform 4.12 en utilisant Operator Lifecycle Manager (OLM).
L'opérateur OADP installe Velero 1.9.
Conditions préalables
-
Vous devez être connecté en tant qu'utilisateur avec des privilèges
cluster-admin.
Procédure
- Dans la console web d'OpenShift Container Platform, cliquez sur Operators → OperatorHub.
- Utilisez le champ Filter by keyword pour trouver le OADP Operator.
- Sélectionnez le site OADP Operator et cliquez sur Install.
-
Cliquez sur Install pour installer l'opérateur dans le projet
openshift-adp. - Cliquez sur Operators → Installed Operators pour vérifier l'installation.
4.3.3.2. Configuration de Microsoft Azure Copier lienLien copié sur presse-papiers!
Vous configurez un Microsoft Azure pour l'OpenShift API for Data Protection (OADP).
Conditions préalables
- Le logiciel Azure CLI doit être installé.
Procédure
Connectez-vous à Azure :
az login
$ az loginCopy to Clipboard Copied! Toggle word wrap Toggle overflow Définir la variable
AZURE_RESOURCE_GROUP:AZURE_RESOURCE_GROUP=Velero_Backups
$ AZURE_RESOURCE_GROUP=Velero_BackupsCopy to Clipboard Copied! Toggle word wrap Toggle overflow Créez un groupe de ressources Azure :
az group create -n $AZURE_RESOURCE_GROUP --location CentralUS
$ az group create -n $AZURE_RESOURCE_GROUP --location CentralUS1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Précisez votre lieu de résidence.
Définir la variable
AZURE_STORAGE_ACCOUNT_ID:AZURE_STORAGE_ACCOUNT_ID="velero$(uuidgen | cut -d '-' -f5 | tr '[A-Z]' '[a-z]')"
$ AZURE_STORAGE_ACCOUNT_ID="velero$(uuidgen | cut -d '-' -f5 | tr '[A-Z]' '[a-z]')"Copy to Clipboard Copied! Toggle word wrap Toggle overflow Créez un compte de stockage Azure :
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Définir la variable
BLOB_CONTAINER:BLOB_CONTAINER=velero
$ BLOB_CONTAINER=veleroCopy to Clipboard Copied! Toggle word wrap Toggle overflow Créez un conteneur de stockage Azure Blob :
az storage container create \ -n $BLOB_CONTAINER \ --public-access off \ --account-name $AZURE_STORAGE_ACCOUNT_ID
$ az storage container create \ -n $BLOB_CONTAINER \ --public-access off \ --account-name $AZURE_STORAGE_ACCOUNT_IDCopy to Clipboard Copied! Toggle word wrap Toggle overflow Obtenir la clé d'accès au compte de stockage :
AZURE_STORAGE_ACCOUNT_ACCESS_KEY=`az storage account keys list \ --account-name $AZURE_STORAGE_ACCOUNT_ID \ --query "[?keyName == 'key1'].value" -o tsv`
$ AZURE_STORAGE_ACCOUNT_ACCESS_KEY=`az storage account keys list \ --account-name $AZURE_STORAGE_ACCOUNT_ID \ --query "[?keyName == 'key1'].value" -o tsv`Copy to Clipboard Copied! Toggle word wrap Toggle overflow Créez un rôle personnalisé doté des autorisations minimales requises :
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Créer un fichier
credentials-velero:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Obligatoire. Vous ne pouvez pas sauvegarder les images internes si le fichier
credentials-velerone contient que les informations d'identification du principal du service.
Vous utilisez le fichier
credentials-veleropour créer un objetSecretpour Azure avant d'installer l'application de protection des données.
4.3.3.3. A propos des emplacements de sauvegarde et d'instantané et de leurs secrets Copier lienLien copié sur presse-papiers!
Vous spécifiez les emplacements de sauvegarde et d'instantané ainsi que leurs secrets dans la ressource personnalisée (CR) DataProtectionApplication.
Emplacements de sauvegarde
Vous spécifiez un stockage d'objets compatible S3, tel que Multicloud Object Gateway, Noobaa ou Minio, en tant qu'emplacement de sauvegarde.
Velero sauvegarde les ressources d'OpenShift Container Platform, les objets Kubernetes et les images internes en tant que fichier d'archive sur le stockage d'objets.
Lieux de l'instantané
Si vous utilisez l'API d'instantané native de votre fournisseur de cloud computing pour sauvegarder des volumes persistants, vous devez spécifier le fournisseur de cloud computing comme emplacement d'instantané.
Si vous utilisez des instantanés de l'interface de stockage de conteneurs (CSI), vous n'avez pas besoin de spécifier un emplacement d'instantané car vous créerez un CR VolumeSnapshotClass pour enregistrer le pilote CSI.
Si vous utilisez Restic, vous n'avez pas besoin de spécifier un emplacement d'instantané car Restic sauvegarde le système de fichiers sur le stockage objet.
Secrets
Si les emplacements de sauvegarde et d'instantané utilisent les mêmes informations d'identification ou si vous n'avez pas besoin d'un emplacement d'instantané, vous créez un emplacement par défaut Secret.
Si les emplacements de sauvegarde et d'instantané utilisent des informations d'identification différentes, vous créez deux objets secrets :
-
Secretpersonnalisé pour l'emplacement de sauvegarde, que vous spécifiez dans le CRDataProtectionApplication. -
Secretpar défaut pour l'emplacement de l'instantané, qui n'est pas référencé dans le CRDataProtectionApplication.
L'application de protection des données nécessite une adresse par défaut Secret. Dans le cas contraire, l'installation échouera.
Si vous ne souhaitez pas spécifier d'emplacements de sauvegarde ou d'instantanés lors de l'installation, vous pouvez créer un site Secret par défaut avec un fichier credentials-velero vide.
4.3.3.3.1. Création d'un secret par défaut Copier lienLien copié sur presse-papiers!
Vous créez un site Secret par défaut si vos emplacements de sauvegarde et de cliché utilisent les mêmes informations d'identification ou si vous n'avez pas besoin d'un emplacement de cliché.
Le nom par défaut du site Secret est cloud-credentials-azure.
La ressource personnalisée (CR) DataProtectionApplication nécessite une ressource par défaut Secret. Sinon, l'installation échouera. Si le nom de l'emplacement de sauvegarde Secret n'est pas spécifié, le nom par défaut est utilisé.
Si vous ne souhaitez pas utiliser les informations d'identification de l'emplacement de sauvegarde lors de l'installation, vous pouvez créer un site Secret avec le nom par défaut en utilisant un fichier credentials-velero vide.
Conditions préalables
- Votre stockage d'objets et votre stockage en nuage, le cas échéant, doivent utiliser les mêmes informations d'identification.
- Vous devez configurer le stockage d'objets pour Velero.
-
Vous devez créer un fichier
credentials-veleropour le stockage d'objets dans le format approprié.
Procédure
Créez un site
Secretavec le nom par défaut :oc create secret generic cloud-credentials-azure -n openshift-adp --from-file cloud=credentials-velero
$ oc create secret generic cloud-credentials-azure -n openshift-adp --from-file cloud=credentials-veleroCopy to Clipboard Copied! Toggle word wrap Toggle overflow
Le site Secret est référencé dans le bloc spec.backupLocations.credential de la CR DataProtectionApplication lorsque vous installez l'application de protection des données.
4.3.3.3.2. Création de secrets pour différentes informations d'identification Copier lienLien copié sur presse-papiers!
Si vos emplacements de sauvegarde et de snapshot utilisent des identifiants différents, vous devez créer deux objets Secret:
-
Sauvegarde de l'emplacement
Secretavec un nom personnalisé. Le nom personnalisé est spécifié dans le blocspec.backupLocationsde la ressource personnalisée (CR)DataProtectionApplication. -
Emplacement de l'instantané
Secretavec le nom par défaut,cloud-credentials-azure. Cette adresseSecretn'est pas spécifiée dans la CRDataProtectionApplication.
Procédure
-
Créez un fichier
credentials-veleropour l'emplacement de l'instantané dans le format approprié pour votre fournisseur de cloud. Créez un site
Secretpour l'emplacement de l'instantané avec le nom par défaut :oc create secret generic cloud-credentials-azure -n openshift-adp --from-file cloud=credentials-velero
$ oc create secret generic cloud-credentials-azure -n openshift-adp --from-file cloud=credentials-veleroCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
Créez un fichier
credentials-veleropour l'emplacement de sauvegarde dans le format approprié pour votre stockage d'objets. Créez une adresse
Secretpour l'emplacement de sauvegarde avec un nom personnalisé :oc create secret generic <custom_secret> -n openshift-adp --from-file cloud=credentials-velero
oc create secret generic <custom_secret> -n openshift-adp --from-file cloud=credentials-veleroCopy to Clipboard Copied! Toggle word wrap Toggle overflow Ajoutez le
Secretavec le nom personnalisé auDataProtectionApplicationCR, comme dans l'exemple suivant :Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Emplacement de la sauvegarde
Secretavec un nom personnalisé.
4.3.3.4. Configuration de l'application de protection des données Copier lienLien copié sur presse-papiers!
Vous pouvez configurer l'application de protection des données en définissant les allocations de ressources Velero ou en activant les certificats CA auto-signés.
4.3.3.4.1. Paramétrage de l'allocation des ressources CPU et mémoire de Velero Copier lienLien copié sur presse-papiers!
Vous définissez les allocations de ressources CPU et mémoire pour le pod Velero en modifiant le manifeste de ressources personnalisées (CR) DataProtectionApplication.
Conditions préalables
- L'opérateur OpenShift API for Data Protection (OADP) doit être installé.
Procédure
Modifiez les valeurs dans le bloc
spec.configuration.velero.podConfig.ResourceAllocationsdu manifesteDataProtectionApplicationCR, comme dans l'exemple suivant :Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Spécifier le sélecteur de nœud à fournir à Velero podSpec
4.3.3.4.2. Activation des certificats CA auto-signés Copier lienLien copié sur presse-papiers!
Vous devez activer un certificat CA auto-signé pour le stockage d'objets en modifiant le manifeste de ressources personnalisées (CR) DataProtectionApplication afin d'éviter une erreur certificate signed by unknown authority.
Conditions préalables
- L'opérateur OpenShift API for Data Protection (OADP) doit être installé.
Procédure
Modifier les paramètres
spec.backupLocations.velero.objectStorage.caCertetspec.backupLocations.velero.configdu manifesteDataProtectionApplicationCR :Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.3.3.5. Installation de l'application de protection des données Copier lienLien copié sur presse-papiers!
Vous installez l'application de protection des données (DPA) en créant une instance de l'API DataProtectionApplication.
Conditions préalables
- Vous devez installer l'opérateur OADP.
- Vous devez configurer le stockage d'objets comme emplacement de sauvegarde.
- Si vous utilisez des instantanés pour sauvegarder des PV, votre fournisseur de cloud computing doit prendre en charge une API d'instantanés native ou des instantanés de l'interface de stockage de conteneurs (CSI).
-
Si les emplacements de sauvegarde et d'instantané utilisent les mêmes informations d'identification, vous devez créer un site
Secretavec le nom par défaut,cloud-credentials-azure. Si les emplacements de sauvegarde et de cliché utilisent des informations d'identification différentes, vous devez créer deux sites
Secrets:-
Secretavec un nom personnalisé pour l'emplacement de la sauvegarde. Vous ajoutez ceSecretau CRDataProtectionApplication. Secretavec le nom par défaut,cloud-credentials-azure, pour l'emplacement de l'instantané. Ce siteSecretn'est pas référencé dans le CRDataProtectionApplication.NoteSi vous ne souhaitez pas spécifier d'emplacements de sauvegarde ou d'instantanés lors de l'installation, vous pouvez créer une adresse
Secretpar défaut avec un fichiercredentials-velerovide. S'il n'y a pas deSecretpar défaut, l'installation échouera.
-
Procédure
- Cliquez sur Operators → Installed Operators et sélectionnez l'opérateur OADP.
- Sous Provided APIs, cliquez sur Create instance dans la boîte DataProtectionApplication.
Cliquez sur YAML View et mettez à jour les paramètres du manifeste
DataProtectionApplication:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Le plugin
openshiftest obligatoire. - 2
- Définissez
falsesi vous souhaitez désactiver l'installation de Restic. Restic déploie un ensemble de démons, ce qui signifie que chaque nœud de travailleur a des podsResticen cours d'exécution. Vous configurez Restic pour les sauvegardes en ajoutantspec.defaultVolumesToRestic: trueau CRBackup. - 3
- Spécifie le sélecteur de nœud à fournir à Restic podSpec.
- 4
- Spécifiez le groupe de ressources Azure.
- 5
- Indiquez l'identifiant du compte de stockage Azure.
- 6
- Indiquez l'identifiant de l'abonnement Azure.
- 7
- Si vous ne spécifiez pas cette valeur, le nom par défaut,
cloud-credentials-azure, est utilisé. Si vous spécifiez un nom personnalisé, celui-ci est utilisé pour l'emplacement de la sauvegarde. - 8
- Spécifiez un bac comme emplacement de stockage des sauvegardes. Si le bac n'est pas un bac dédié aux sauvegardes Velero, vous devez spécifier un préfixe.
- 9
- Spécifiez un préfixe pour les sauvegardes Velero, par exemple,
velero, si le seau est utilisé à des fins multiples. - 10
- Il n'est pas nécessaire de spécifier un emplacement d'instantané si vous utilisez des instantanés CSI ou Restic pour sauvegarder des PV.
- Cliquez sur Create.
Vérifiez l'installation en consultant les ressources de l'OADP :
oc get all -n openshift-adp
$ oc get all -n openshift-adpCopy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.3.3.5.1. Activation de l'ISC dans l'application de protection des données CR Copier lienLien copié sur presse-papiers!
Vous activez l'interface de stockage de conteneurs (CSI) dans la ressource personnalisée (CR) DataProtectionApplication afin de sauvegarder des volumes persistants à l'aide d'instantanés CSI.
Conditions préalables
- Le fournisseur de services en nuage doit prendre en charge les instantanés CSI.
Procédure
Modifiez le CR
DataProtectionApplication, comme dans l'exemple suivant :Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Ajouter le plugin par défaut
csi.
4.3.4. Installation et configuration de l'API OpenShift pour la protection des données avec Google Cloud Platform Copier lienLien copié sur presse-papiers!
Vous installez OpenShift API for Data Protection (OADP) avec Google Cloud Platform (GCP) en installant l'opérateur OADP. L'opérateur installe Velero 1.9.
À partir d'OADP 1.0.4, toutes les versions d'OADP 1.0.z ne peuvent être utilisées qu'en tant que dépendance de l'opérateur MTC et ne sont pas disponibles en tant qu'opérateur autonome.
Vous configurez GCP pour Velero, créez une adresse Secret par défaut, puis installez l'application de protection des données.
Pour installer l'OADP Operator dans un environnement réseau restreint, vous devez d'abord désactiver les sources OperatorHub par défaut et mettre en miroir le catalogue Operator. Voir Utilisation d'Operator Lifecycle Manager sur des réseaux restreints pour plus de détails.
4.3.4.1. Installation de l'opérateur OADP Copier lienLien copié sur presse-papiers!
Vous installez l'opérateur OpenShift API for Data Protection (OADP) sur OpenShift Container Platform 4.12 en utilisant Operator Lifecycle Manager (OLM).
L'opérateur OADP installe Velero 1.9.
Conditions préalables
-
Vous devez être connecté en tant qu'utilisateur avec des privilèges
cluster-admin.
Procédure
- Dans la console web d'OpenShift Container Platform, cliquez sur Operators → OperatorHub.
- Utilisez le champ Filter by keyword pour trouver le OADP Operator.
- Sélectionnez le site OADP Operator et cliquez sur Install.
-
Cliquez sur Install pour installer l'opérateur dans le projet
openshift-adp. - Cliquez sur Operators → Installed Operators pour vérifier l'installation.
4.3.4.2. Configuration de Google Cloud Platform Copier lienLien copié sur presse-papiers!
Vous configurez Google Cloud Platform (GCP) pour OpenShift API for Data Protection (OADP).
Conditions préalables
-
Les outils
gcloudetgsutilCLI doivent être installés. Voir la documentation de Google Cloud pour plus de détails.
Procédure
Connectez-vous à GCP :
gcloud auth login
$ gcloud auth loginCopy to Clipboard Copied! Toggle word wrap Toggle overflow Définir la variable
BUCKET:bUCKET=<bucket>
bUCKET=<bucket>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Indiquez le nom de votre seau.
Créez le seau de stockage :
gsutil mb gs://$BUCKET/
$ gsutil mb gs://$BUCKET/Copy to Clipboard Copied! Toggle word wrap Toggle overflow Définissez la variable
PROJECT_IDsur votre projet actif :PROJECT_ID=$(gcloud config get-value project)
$ PROJECT_ID=$(gcloud config get-value project)Copy to Clipboard Copied! Toggle word wrap Toggle overflow Créer un compte de service :
gcloud iam service-accounts create velero \ --display-name "Velero service account"$ gcloud iam service-accounts create velero \ --display-name "Velero service account"Copy to Clipboard Copied! Toggle word wrap Toggle overflow Dressez la liste de vos comptes de service :
gcloud iam service-accounts list
$ gcloud iam service-accounts listCopy to Clipboard Copied! Toggle word wrap Toggle overflow Définissez la variable
SERVICE_ACCOUNT_EMAILpour qu'elle corresponde à sa valeuremail:SERVICE_ACCOUNT_EMAIL=$(gcloud iam service-accounts list \ --filter="displayName:Velero service account" \ --format 'value(email)')$ SERVICE_ACCOUNT_EMAIL=$(gcloud iam service-accounts list \ --filter="displayName:Velero service account" \ --format 'value(email)')Copy to Clipboard Copied! Toggle word wrap Toggle overflow Attachez les politiques pour donner à l'utilisateur
veleroles permissions minimales nécessaires :Copy to Clipboard Copied! Toggle word wrap Toggle overflow Créez le rôle personnalisé
velero.server:gcloud iam roles create velero.server \ --project $PROJECT_ID \ --title "Velero Server" \ --permissions "$(IFS=","; echo "${ROLE_PERMISSIONS[*]}")"$ gcloud iam roles create velero.server \ --project $PROJECT_ID \ --title "Velero Server" \ --permissions "$(IFS=","; echo "${ROLE_PERMISSIONS[*]}")"Copy to Clipboard Copied! Toggle word wrap Toggle overflow Ajouter une politique IAM au projet :
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member serviceAccount:$SERVICE_ACCOUNT_EMAIL \ --role projects/$PROJECT_ID/roles/velero.server$ gcloud projects add-iam-policy-binding $PROJECT_ID \ --member serviceAccount:$SERVICE_ACCOUNT_EMAIL \ --role projects/$PROJECT_ID/roles/velero.serverCopy to Clipboard Copied! Toggle word wrap Toggle overflow Mettre à jour le compte de service IAM :
gsutil iam ch serviceAccount:$SERVICE_ACCOUNT_EMAIL:objectAdmin gs://${BUCKET}$ gsutil iam ch serviceAccount:$SERVICE_ACCOUNT_EMAIL:objectAdmin gs://${BUCKET}Copy to Clipboard Copied! Toggle word wrap Toggle overflow Enregistrer les clés du compte de service IAM dans le fichier
credentials-velerodans le répertoire actuel :gcloud iam service-accounts keys create credentials-velero \ --iam-account $SERVICE_ACCOUNT_EMAIL$ gcloud iam service-accounts keys create credentials-velero \ --iam-account $SERVICE_ACCOUNT_EMAILCopy to Clipboard Copied! Toggle word wrap Toggle overflow Vous utilisez le fichier
credentials-veleropour créer un objetSecretpour GCP avant d'installer l'application de protection des données.
4.3.4.3. A propos des emplacements de sauvegarde et d'instantané et de leurs secrets Copier lienLien copié sur presse-papiers!
Vous spécifiez les emplacements de sauvegarde et d'instantané ainsi que leurs secrets dans la ressource personnalisée (CR) DataProtectionApplication.
Emplacements de sauvegarde
Vous spécifiez un stockage d'objets compatible S3, tel que Multicloud Object Gateway, Noobaa ou Minio, en tant qu'emplacement de sauvegarde.
Velero sauvegarde les ressources d'OpenShift Container Platform, les objets Kubernetes et les images internes en tant que fichier d'archive sur le stockage d'objets.
Lieux de l'instantané
Si vous utilisez l'API d'instantané native de votre fournisseur de cloud computing pour sauvegarder des volumes persistants, vous devez spécifier le fournisseur de cloud computing comme emplacement d'instantané.
Si vous utilisez des instantanés de l'interface de stockage de conteneurs (CSI), vous n'avez pas besoin de spécifier un emplacement d'instantané car vous créerez un CR VolumeSnapshotClass pour enregistrer le pilote CSI.
Si vous utilisez Restic, vous n'avez pas besoin de spécifier un emplacement d'instantané car Restic sauvegarde le système de fichiers sur le stockage objet.
Secrets
Si les emplacements de sauvegarde et d'instantané utilisent les mêmes informations d'identification ou si vous n'avez pas besoin d'un emplacement d'instantané, vous créez un emplacement par défaut Secret.
Si les emplacements de sauvegarde et d'instantané utilisent des informations d'identification différentes, vous créez deux objets secrets :
-
Secretpersonnalisé pour l'emplacement de sauvegarde, que vous spécifiez dans le CRDataProtectionApplication. -
Secretpar défaut pour l'emplacement de l'instantané, qui n'est pas référencé dans le CRDataProtectionApplication.
L'application de protection des données nécessite une adresse par défaut Secret. Dans le cas contraire, l'installation échouera.
Si vous ne souhaitez pas spécifier d'emplacements de sauvegarde ou d'instantanés lors de l'installation, vous pouvez créer un site Secret par défaut avec un fichier credentials-velero vide.
4.3.4.3.1. Création d'un secret par défaut Copier lienLien copié sur presse-papiers!
Vous créez un site Secret par défaut si vos emplacements de sauvegarde et de cliché utilisent les mêmes informations d'identification ou si vous n'avez pas besoin d'un emplacement de cliché.
Le nom par défaut du site Secret est cloud-credentials-gcp.
La ressource personnalisée (CR) DataProtectionApplication nécessite une ressource par défaut Secret. Sinon, l'installation échouera. Si le nom de l'emplacement de sauvegarde Secret n'est pas spécifié, le nom par défaut est utilisé.
Si vous ne souhaitez pas utiliser les informations d'identification de l'emplacement de sauvegarde lors de l'installation, vous pouvez créer un site Secret avec le nom par défaut en utilisant un fichier credentials-velero vide.
Conditions préalables
- Votre stockage d'objets et votre stockage en nuage, le cas échéant, doivent utiliser les mêmes informations d'identification.
- Vous devez configurer le stockage d'objets pour Velero.
-
Vous devez créer un fichier
credentials-veleropour le stockage d'objets dans le format approprié.
Procédure
Créez un site
Secretavec le nom par défaut :oc create secret generic cloud-credentials-gcp -n openshift-adp --from-file cloud=credentials-velero
$ oc create secret generic cloud-credentials-gcp -n openshift-adp --from-file cloud=credentials-veleroCopy to Clipboard Copied! Toggle word wrap Toggle overflow
Le site Secret est référencé dans le bloc spec.backupLocations.credential de la CR DataProtectionApplication lorsque vous installez l'application de protection des données.
4.3.4.3.2. Création de secrets pour différentes informations d'identification Copier lienLien copié sur presse-papiers!
Si vos emplacements de sauvegarde et de snapshot utilisent des identifiants différents, vous devez créer deux objets Secret:
-
Sauvegarde de l'emplacement
Secretavec un nom personnalisé. Le nom personnalisé est spécifié dans le blocspec.backupLocationsde la ressource personnalisée (CR)DataProtectionApplication. -
Emplacement de l'instantané
Secretavec le nom par défaut,cloud-credentials-gcp. Cette adresseSecretn'est pas spécifiée dans la CRDataProtectionApplication.
Procédure
-
Créez un fichier
credentials-veleropour l'emplacement de l'instantané dans le format approprié pour votre fournisseur de cloud. Créez un site
Secretpour l'emplacement de l'instantané avec le nom par défaut :oc create secret generic cloud-credentials-gcp -n openshift-adp --from-file cloud=credentials-velero
$ oc create secret generic cloud-credentials-gcp -n openshift-adp --from-file cloud=credentials-veleroCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
Créez un fichier
credentials-veleropour l'emplacement de sauvegarde dans le format approprié pour votre stockage d'objets. Créez une adresse
Secretpour l'emplacement de sauvegarde avec un nom personnalisé :oc create secret generic <custom_secret> -n openshift-adp --from-file cloud=credentials-velero
oc create secret generic <custom_secret> -n openshift-adp --from-file cloud=credentials-veleroCopy to Clipboard Copied! Toggle word wrap Toggle overflow Ajoutez le
Secretavec le nom personnalisé auDataProtectionApplicationCR, comme dans l'exemple suivant :Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Emplacement de la sauvegarde
Secretavec un nom personnalisé.
4.3.4.4. Configuration de l'application de protection des données Copier lienLien copié sur presse-papiers!
Vous pouvez configurer l'application de protection des données en définissant les allocations de ressources Velero ou en activant les certificats CA auto-signés.
4.3.4.4.1. Paramétrage de l'allocation des ressources CPU et mémoire de Velero Copier lienLien copié sur presse-papiers!
Vous définissez les allocations de ressources CPU et mémoire pour le pod Velero en modifiant le manifeste de ressources personnalisées (CR) DataProtectionApplication.
Conditions préalables
- L'opérateur OpenShift API for Data Protection (OADP) doit être installé.
Procédure
Modifiez les valeurs dans le bloc
spec.configuration.velero.podConfig.ResourceAllocationsdu manifesteDataProtectionApplicationCR, comme dans l'exemple suivant :Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Spécifier le sélecteur de nœud à fournir à Velero podSpec
4.3.4.4.2. Activation des certificats CA auto-signés Copier lienLien copié sur presse-papiers!
Vous devez activer un certificat CA auto-signé pour le stockage d'objets en modifiant le manifeste de ressources personnalisées (CR) DataProtectionApplication afin d'éviter une erreur certificate signed by unknown authority.
Conditions préalables
- L'opérateur OpenShift API for Data Protection (OADP) doit être installé.
Procédure
Modifier les paramètres
spec.backupLocations.velero.objectStorage.caCertetspec.backupLocations.velero.configdu manifesteDataProtectionApplicationCR :Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.3.4.5. Installation de l'application de protection des données Copier lienLien copié sur presse-papiers!
Vous installez l'application de protection des données (DPA) en créant une instance de l'API DataProtectionApplication.
Conditions préalables
- Vous devez installer l'opérateur OADP.
- Vous devez configurer le stockage d'objets comme emplacement de sauvegarde.
- Si vous utilisez des instantanés pour sauvegarder des PV, votre fournisseur de cloud computing doit prendre en charge une API d'instantanés native ou des instantanés de l'interface de stockage de conteneurs (CSI).
-
Si les emplacements de sauvegarde et d'instantané utilisent les mêmes informations d'identification, vous devez créer un site
Secretavec le nom par défaut,cloud-credentials-gcp. Si les emplacements de sauvegarde et de cliché utilisent des informations d'identification différentes, vous devez créer deux sites
Secrets:-
Secretavec un nom personnalisé pour l'emplacement de la sauvegarde. Vous ajoutez ceSecretau CRDataProtectionApplication. Secretavec le nom par défaut,cloud-credentials-gcp, pour l'emplacement de l'instantané. Ce siteSecretn'est pas référencé dans le CRDataProtectionApplication.NoteSi vous ne souhaitez pas spécifier d'emplacements de sauvegarde ou d'instantanés lors de l'installation, vous pouvez créer une adresse
Secretpar défaut avec un fichiercredentials-velerovide. S'il n'y a pas deSecretpar défaut, l'installation échouera.
-
Procédure
- Cliquez sur Operators → Installed Operators et sélectionnez l'opérateur OADP.
- Sous Provided APIs, cliquez sur Create instance dans la boîte DataProtectionApplication.
Cliquez sur YAML View et mettez à jour les paramètres du manifeste
DataProtectionApplication:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Le plugin
openshiftest obligatoire. - 2
- Définissez
falsesi vous souhaitez désactiver l'installation de Restic. Restic déploie un ensemble de démons, ce qui signifie que chaque nœud de travailleur a des podsResticen cours d'exécution. Vous configurez Restic pour les sauvegardes en ajoutantspec.defaultVolumesToRestic: trueau CRBackup. - 3
- Spécifie le sélecteur de nœud à fournir à Restic podSpec.
- 4
- Si vous ne spécifiez pas cette valeur, le nom par défaut,
cloud-credentials-gcp, est utilisé. Si vous spécifiez un nom personnalisé, celui-ci est utilisé pour l'emplacement de la sauvegarde. - 5
- Spécifiez un bac comme emplacement de stockage des sauvegardes. Si le bac n'est pas un bac dédié aux sauvegardes Velero, vous devez spécifier un préfixe.
- 6
- Spécifiez un préfixe pour les sauvegardes Velero, par exemple,
velero, si le seau est utilisé à des fins multiples. - 7
- Il n'est pas nécessaire de spécifier un emplacement d'instantané si vous utilisez des instantanés CSI ou Restic pour sauvegarder des PV.
- 8
- L'emplacement de l'instantané doit être situé dans la même région que les PV.
- Cliquez sur Create.
Vérifiez l'installation en consultant les ressources de l'OADP :
oc get all -n openshift-adp
$ oc get all -n openshift-adpCopy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.3.4.5.1. Activation de l'ISC dans l'application de protection des données CR Copier lienLien copié sur presse-papiers!
Vous activez l'interface de stockage de conteneurs (CSI) dans la ressource personnalisée (CR) DataProtectionApplication afin de sauvegarder des volumes persistants à l'aide d'instantanés CSI.
Conditions préalables
- Le fournisseur de services en nuage doit prendre en charge les instantanés CSI.
Procédure
Modifiez le CR
DataProtectionApplication, comme dans l'exemple suivant :Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Ajouter le plugin par défaut
csi.
4.3.5. Installation et configuration de l'API OpenShift pour la protection des données avec Multicloud Object Gateway Copier lienLien copié sur presse-papiers!
Vous installez OpenShift API for Data Protection (OADP) avec Multicloud Object Gateway (MCG) en installant l'opérateur OADP. L'opérateur installe Velero 1.9.
À partir d'OADP 1.0.4, toutes les versions d'OADP 1.0.z ne peuvent être utilisées qu'en tant que dépendance de l'opérateur MTC et ne sont pas disponibles en tant qu'opérateur autonome.
Vous configurez Multicloud Object Gateway en tant qu'emplacement de sauvegarde. MCG est un composant d'OpenShift Data Foundation. Vous configurez MCG comme emplacement de sauvegarde dans la ressource personnalisée (CR) DataProtectionApplication.
L'API CloudStorage, qui automatise la création d'un godet pour le stockage d'objets, est une fonctionnalité de l'aperçu technologique uniquement. Les fonctionnalités de l'aperçu technologique ne sont pas prises en charge par les accords de niveau de service (SLA) de production de Red Hat et peuvent ne pas être complètes sur le plan fonctionnel. Red Hat ne recommande pas de les utiliser en production. Ces fonctionnalités offrent un accès anticipé aux fonctionnalités des produits à venir, ce qui permet aux clients de tester les fonctionnalités et de fournir un retour d'information pendant le processus de développement.
Pour plus d'informations sur la portée de l'assistance des fonctionnalités de l'aperçu technologique de Red Hat, voir Portée de l'assistance des fonctionnalités de l'aperçu technologique.
Vous créez un site Secret pour l'emplacement de sauvegarde, puis vous installez l'application de protection des données.
Pour installer l'OADP Operator dans un environnement réseau restreint, vous devez d'abord désactiver les sources OperatorHub par défaut et mettre en miroir le catalogue Operator. Pour plus de détails, voir Utilisation d'Operator Lifecycle Manager sur des réseaux restreints.
4.3.5.1. Installation de l'opérateur OADP Copier lienLien copié sur presse-papiers!
Vous installez l'opérateur OpenShift API for Data Protection (OADP) sur OpenShift Container Platform 4.12 en utilisant Operator Lifecycle Manager (OLM).
L'opérateur OADP installe Velero 1.9.
Conditions préalables
-
Vous devez être connecté en tant qu'utilisateur avec des privilèges
cluster-admin.
Procédure
- Dans la console web d'OpenShift Container Platform, cliquez sur Operators → OperatorHub.
- Utilisez le champ Filter by keyword pour trouver le OADP Operator.
- Sélectionnez le site OADP Operator et cliquez sur Install.
-
Cliquez sur Install pour installer l'opérateur dans le projet
openshift-adp. - Cliquez sur Operators → Installed Operators pour vérifier l'installation.
4.3.5.2. Récupération des informations d'identification de la passerelle d'objets multicloud Copier lienLien copié sur presse-papiers!
Vous devez récupérer les informations d'identification de Multicloud Object Gateway (MCG) afin de créer une ressource personnalisée (CR) Secret pour OpenShift API for Data Protection (OADP).
MCG est un composant d'OpenShift Data Foundation.
Conditions préalables
- Vous devez déployer OpenShift Data Foundation en utilisant le guide de déploiement OpenShift Data Foundation approprié.
Procédure
-
Obtenez le point de terminaison S3,
AWS_ACCESS_KEY_IDetAWS_SECRET_ACCESS_KEYen exécutant la commandedescribesur la ressource personnaliséeNooBaa. Créer un fichier
credentials-velero:cat << EOF > ./credentials-velero [default] aws_access_key_id=<AWS_ACCESS_KEY_ID> aws_secret_access_key=<AWS_SECRET_ACCESS_KEY> EOF
$ cat << EOF > ./credentials-velero [default] aws_access_key_id=<AWS_ACCESS_KEY_ID> aws_secret_access_key=<AWS_SECRET_ACCESS_KEY> EOFCopy to Clipboard Copied! Toggle word wrap Toggle overflow Vous utilisez le fichier
credentials-veleropour créer un objetSecretlorsque vous installez l'application de protection des données.
4.3.5.3. A propos des emplacements de sauvegarde et d'instantané et de leurs secrets Copier lienLien copié sur presse-papiers!
Vous spécifiez les emplacements de sauvegarde et d'instantané ainsi que leurs secrets dans la ressource personnalisée (CR) DataProtectionApplication.
Emplacements de sauvegarde
Vous spécifiez un stockage d'objets compatible S3, tel que Multicloud Object Gateway, Noobaa ou Minio, en tant qu'emplacement de sauvegarde.
Velero sauvegarde les ressources d'OpenShift Container Platform, les objets Kubernetes et les images internes en tant que fichier d'archive sur le stockage d'objets.
Lieux de l'instantané
Si vous utilisez l'API d'instantané native de votre fournisseur de cloud computing pour sauvegarder des volumes persistants, vous devez spécifier le fournisseur de cloud computing comme emplacement d'instantané.
Si vous utilisez des instantanés de l'interface de stockage de conteneurs (CSI), vous n'avez pas besoin de spécifier un emplacement d'instantané car vous créerez un CR VolumeSnapshotClass pour enregistrer le pilote CSI.
Si vous utilisez Restic, vous n'avez pas besoin de spécifier un emplacement d'instantané car Restic sauvegarde le système de fichiers sur le stockage objet.
Secrets
Si les emplacements de sauvegarde et d'instantané utilisent les mêmes informations d'identification ou si vous n'avez pas besoin d'un emplacement d'instantané, vous créez un emplacement par défaut Secret.
Si les emplacements de sauvegarde et d'instantané utilisent des informations d'identification différentes, vous créez deux objets secrets :
-
Secretpersonnalisé pour l'emplacement de sauvegarde, que vous spécifiez dans le CRDataProtectionApplication. -
Secretpar défaut pour l'emplacement de l'instantané, qui n'est pas référencé dans le CRDataProtectionApplication.
L'application de protection des données nécessite une adresse par défaut Secret. Dans le cas contraire, l'installation échouera.
Si vous ne souhaitez pas spécifier d'emplacements de sauvegarde ou d'instantanés lors de l'installation, vous pouvez créer un site Secret par défaut avec un fichier credentials-velero vide.
4.3.5.3.1. Création d'un secret par défaut Copier lienLien copié sur presse-papiers!
Vous créez un site Secret par défaut si vos emplacements de sauvegarde et de cliché utilisent les mêmes informations d'identification ou si vous n'avez pas besoin d'un emplacement de cliché.
Le nom par défaut du site Secret est cloud-credentials.
La ressource personnalisée (CR) DataProtectionApplication nécessite une ressource par défaut Secret. Sinon, l'installation échouera. Si le nom de l'emplacement de sauvegarde Secret n'est pas spécifié, le nom par défaut est utilisé.
Si vous ne souhaitez pas utiliser les informations d'identification de l'emplacement de sauvegarde lors de l'installation, vous pouvez créer un site Secret avec le nom par défaut en utilisant un fichier credentials-velero vide.
Conditions préalables
- Votre stockage d'objets et votre stockage en nuage, le cas échéant, doivent utiliser les mêmes informations d'identification.
- Vous devez configurer le stockage d'objets pour Velero.
-
Vous devez créer un fichier
credentials-veleropour le stockage d'objets dans le format approprié.
Procédure
Créez un site
Secretavec le nom par défaut :oc create secret generic cloud-credentials -n openshift-adp --from-file cloud=credentials-velero
$ oc create secret generic cloud-credentials -n openshift-adp --from-file cloud=credentials-veleroCopy to Clipboard Copied! Toggle word wrap Toggle overflow
Le site Secret est référencé dans le bloc spec.backupLocations.credential de la CR DataProtectionApplication lorsque vous installez l'application de protection des données.
4.3.5.3.2. Création de secrets pour différentes informations d'identification Copier lienLien copié sur presse-papiers!
Si vos emplacements de sauvegarde et de snapshot utilisent des identifiants différents, vous devez créer deux objets Secret:
-
Sauvegarde de l'emplacement
Secretavec un nom personnalisé. Le nom personnalisé est spécifié dans le blocspec.backupLocationsde la ressource personnalisée (CR)DataProtectionApplication. -
Emplacement de l'instantané
Secretavec le nom par défaut,cloud-credentials. Cette adresseSecretn'est pas spécifiée dans la CRDataProtectionApplication.
Procédure
-
Créez un fichier
credentials-veleropour l'emplacement de l'instantané dans le format approprié pour votre fournisseur de cloud. Créez un site
Secretpour l'emplacement de l'instantané avec le nom par défaut :oc create secret generic cloud-credentials -n openshift-adp --from-file cloud=credentials-velero
$ oc create secret generic cloud-credentials -n openshift-adp --from-file cloud=credentials-veleroCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
Créez un fichier
credentials-veleropour l'emplacement de sauvegarde dans le format approprié pour votre stockage d'objets. Créez une adresse
Secretpour l'emplacement de sauvegarde avec un nom personnalisé :oc create secret generic <custom_secret> -n openshift-adp --from-file cloud=credentials-velero
oc create secret generic <custom_secret> -n openshift-adp --from-file cloud=credentials-veleroCopy to Clipboard Copied! Toggle word wrap Toggle overflow Ajoutez le
Secretavec le nom personnalisé auDataProtectionApplicationCR, comme dans l'exemple suivant :Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Emplacement de la sauvegarde
Secretavec un nom personnalisé.
4.3.5.4. Configuration de l'application de protection des données Copier lienLien copié sur presse-papiers!
Vous pouvez configurer l'application de protection des données en définissant les allocations de ressources Velero ou en activant les certificats CA auto-signés.
4.3.5.4.1. Paramétrage de l'allocation des ressources CPU et mémoire de Velero Copier lienLien copié sur presse-papiers!
Vous définissez les allocations de ressources CPU et mémoire pour le pod Velero en modifiant le manifeste de ressources personnalisées (CR) DataProtectionApplication.
Conditions préalables
- L'opérateur OpenShift API for Data Protection (OADP) doit être installé.
Procédure
Modifiez les valeurs dans le bloc
spec.configuration.velero.podConfig.ResourceAllocationsdu manifesteDataProtectionApplicationCR, comme dans l'exemple suivant :Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Spécifier le sélecteur de nœud à fournir à Velero podSpec
4.3.5.4.2. Activation des certificats CA auto-signés Copier lienLien copié sur presse-papiers!
Vous devez activer un certificat CA auto-signé pour le stockage d'objets en modifiant le manifeste de ressources personnalisées (CR) DataProtectionApplication afin d'éviter une erreur certificate signed by unknown authority.
Conditions préalables
- L'opérateur OpenShift API for Data Protection (OADP) doit être installé.
Procédure
Modifier les paramètres
spec.backupLocations.velero.objectStorage.caCertetspec.backupLocations.velero.configdu manifesteDataProtectionApplicationCR :Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.3.5.5. Installation de l'application de protection des données Copier lienLien copié sur presse-papiers!
Vous installez l'application de protection des données (DPA) en créant une instance de l'API DataProtectionApplication.
Conditions préalables
- Vous devez installer l'opérateur OADP.
- Vous devez configurer le stockage d'objets comme emplacement de sauvegarde.
- Si vous utilisez des instantanés pour sauvegarder des PV, votre fournisseur de cloud computing doit prendre en charge une API d'instantanés native ou des instantanés de l'interface de stockage de conteneurs (CSI).
-
Si les emplacements de sauvegarde et d'instantané utilisent les mêmes informations d'identification, vous devez créer un site
Secretavec le nom par défaut,cloud-credentials. Si les emplacements de sauvegarde et de cliché utilisent des informations d'identification différentes, vous devez créer deux sites
Secrets:-
Secretavec un nom personnalisé pour l'emplacement de la sauvegarde. Vous ajoutez ceSecretau CRDataProtectionApplication. Secretavec le nom par défaut,cloud-credentials, pour l'emplacement de l'instantané. Ce siteSecretn'est pas référencé dans le CRDataProtectionApplication.NoteSi vous ne souhaitez pas spécifier d'emplacements de sauvegarde ou d'instantanés lors de l'installation, vous pouvez créer une adresse
Secretpar défaut avec un fichiercredentials-velerovide. S'il n'y a pas deSecretpar défaut, l'installation échouera.
-
Procédure
- Cliquez sur Operators → Installed Operators et sélectionnez l'opérateur OADP.
- Sous Provided APIs, cliquez sur Create instance dans la boîte DataProtectionApplication.
Cliquez sur YAML View et mettez à jour les paramètres du manifeste
DataProtectionApplication:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Le plugin
openshiftest obligatoire. - 2
- Définissez
falsesi vous souhaitez désactiver l'installation de Restic. Restic déploie un ensemble de démons, ce qui signifie que chaque nœud de travailleur a des podsResticen cours d'exécution. Vous configurez Restic pour les sauvegardes en ajoutantspec.defaultVolumesToRestic: trueau CRBackup. - 3
- Spécifie le sélecteur de nœud à fournir à Restic podSpec.
- 4
- Spécifiez l'URL du point de terminaison S3.
- 5
- Si vous ne spécifiez pas cette valeur, le nom par défaut,
cloud-credentials, est utilisé. Si vous spécifiez un nom personnalisé, celui-ci est utilisé pour l'emplacement de la sauvegarde. - 6
- Spécifiez un bac comme emplacement de stockage des sauvegardes. Si le bac n'est pas un bac dédié aux sauvegardes Velero, vous devez spécifier un préfixe.
- 7
- Spécifiez un préfixe pour les sauvegardes Velero, par exemple,
velero, si le seau est utilisé à des fins multiples.
- Cliquez sur Create.
Vérifiez l'installation en consultant les ressources de l'OADP :
oc get all -n openshift-adp
$ oc get all -n openshift-adpCopy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.3.5.5.1. Activation de l'ISC dans l'application de protection des données CR Copier lienLien copié sur presse-papiers!
Vous activez l'interface de stockage de conteneurs (CSI) dans la ressource personnalisée (CR) DataProtectionApplication afin de sauvegarder des volumes persistants à l'aide d'instantanés CSI.
Conditions préalables
- Le fournisseur de services en nuage doit prendre en charge les instantanés CSI.
Procédure
Modifiez le CR
DataProtectionApplication, comme dans l'exemple suivant :Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Ajouter le plugin par défaut
csi.
4.3.6. Installation et configuration de l'API OpenShift pour la protection des données avec OpenShift Data Foundation Copier lienLien copié sur presse-papiers!
Vous installez OpenShift API for Data Protection (OADP) avec OpenShift Data Foundation en installant l'opérateur OADP et en configurant un emplacement de sauvegarde et un emplacement d'instantané. Ensuite, vous installez l'application de protection des données.
À partir d'OADP 1.0.4, toutes les versions d'OADP 1.0.z ne peuvent être utilisées qu'en tant que dépendance de l'opérateur MTC et ne sont pas disponibles en tant qu'opérateur autonome.
Vous pouvez configurer Multicloud Object Gateway ou tout stockage d'objets compatible S3 comme emplacement de sauvegarde.
L'API CloudStorage, qui automatise la création d'un godet pour le stockage d'objets, est une fonctionnalité de l'aperçu technologique uniquement. Les fonctionnalités de l'aperçu technologique ne sont pas prises en charge par les accords de niveau de service (SLA) de production de Red Hat et peuvent ne pas être complètes sur le plan fonctionnel. Red Hat ne recommande pas de les utiliser en production. Ces fonctionnalités offrent un accès anticipé aux fonctionnalités des produits à venir, ce qui permet aux clients de tester les fonctionnalités et de fournir un retour d'information pendant le processus de développement.
Pour plus d'informations sur la portée de l'assistance des fonctionnalités de l'aperçu technologique de Red Hat, voir Portée de l'assistance des fonctionnalités de l'aperçu technologique.
Vous créez un site Secret pour l'emplacement de sauvegarde, puis vous installez l'application de protection des données.
Pour installer l'OADP Operator dans un environnement réseau restreint, vous devez d'abord désactiver les sources OperatorHub par défaut et mettre en miroir le catalogue Operator. Pour plus de détails, voir Utilisation d'Operator Lifecycle Manager sur des réseaux restreints.
4.3.6.1. Installation de l'opérateur OADP Copier lienLien copié sur presse-papiers!
Vous installez l'opérateur OpenShift API for Data Protection (OADP) sur OpenShift Container Platform 4.12 en utilisant Operator Lifecycle Manager (OLM).
L'opérateur OADP installe Velero 1.9.
Conditions préalables
-
Vous devez être connecté en tant qu'utilisateur avec des privilèges
cluster-admin.
Procédure
- Dans la console web d'OpenShift Container Platform, cliquez sur Operators → OperatorHub.
- Utilisez le champ Filter by keyword pour trouver le OADP Operator.
- Sélectionnez le site OADP Operator et cliquez sur Install.
-
Cliquez sur Install pour installer l'opérateur dans le projet
openshift-adp. - Cliquez sur Operators → Installed Operators pour vérifier l'installation.
4.3.6.2. A propos des emplacements de sauvegarde et d'instantané et de leurs secrets Copier lienLien copié sur presse-papiers!
Vous spécifiez les emplacements de sauvegarde et d'instantané ainsi que leurs secrets dans la ressource personnalisée (CR) DataProtectionApplication.
Emplacements de sauvegarde
Vous spécifiez un stockage d'objets compatible S3, tel que Multicloud Object Gateway, Noobaa ou Minio, en tant qu'emplacement de sauvegarde.
Velero sauvegarde les ressources d'OpenShift Container Platform, les objets Kubernetes et les images internes en tant que fichier d'archive sur le stockage d'objets.
Lieux de l'instantané
Si vous utilisez l'API d'instantané native de votre fournisseur de cloud computing pour sauvegarder des volumes persistants, vous devez spécifier le fournisseur de cloud computing comme emplacement d'instantané.
Si vous utilisez des instantanés de l'interface de stockage de conteneurs (CSI), vous n'avez pas besoin de spécifier un emplacement d'instantané car vous créerez un CR VolumeSnapshotClass pour enregistrer le pilote CSI.
Si vous utilisez Restic, vous n'avez pas besoin de spécifier un emplacement d'instantané car Restic sauvegarde le système de fichiers sur le stockage objet.
Secrets
Si les emplacements de sauvegarde et d'instantané utilisent les mêmes informations d'identification ou si vous n'avez pas besoin d'un emplacement d'instantané, vous créez un emplacement par défaut Secret.
Si les emplacements de sauvegarde et d'instantané utilisent des informations d'identification différentes, vous créez deux objets secrets :
-
Secretpersonnalisé pour l'emplacement de sauvegarde, que vous spécifiez dans le CRDataProtectionApplication. -
Secretpar défaut pour l'emplacement de l'instantané, qui n'est pas référencé dans le CRDataProtectionApplication.
L'application de protection des données nécessite une adresse par défaut Secret. Dans le cas contraire, l'installation échouera.
Si vous ne souhaitez pas spécifier d'emplacements de sauvegarde ou d'instantanés lors de l'installation, vous pouvez créer un site Secret par défaut avec un fichier credentials-velero vide.
4.3.6.2.1. Création d'un secret par défaut Copier lienLien copié sur presse-papiers!
Vous créez un site Secret par défaut si vos emplacements de sauvegarde et de cliché utilisent les mêmes informations d'identification ou si vous n'avez pas besoin d'un emplacement de cliché.
La ressource personnalisée (CR) DataProtectionApplication nécessite une ressource par défaut Secret. Sinon, l'installation échouera. Si le nom de l'emplacement de sauvegarde Secret n'est pas spécifié, le nom par défaut est utilisé.
Si vous ne souhaitez pas utiliser les informations d'identification de l'emplacement de sauvegarde lors de l'installation, vous pouvez créer un site Secret avec le nom par défaut en utilisant un fichier credentials-velero vide.
Conditions préalables
- Votre stockage d'objets et votre stockage en nuage, le cas échéant, doivent utiliser les mêmes informations d'identification.
- Vous devez configurer le stockage d'objets pour Velero.
-
Vous devez créer un fichier
credentials-veleropour le stockage d'objets dans le format approprié.
Procédure
Créez un site
Secretavec le nom par défaut :oc create secret generic cloud-credentials -n openshift-adp --from-file cloud=credentials-velero
$ oc create secret generic cloud-credentials -n openshift-adp --from-file cloud=credentials-veleroCopy to Clipboard Copied! Toggle word wrap Toggle overflow
Le site Secret est référencé dans le bloc spec.backupLocations.credential de la CR DataProtectionApplication lorsque vous installez l'application de protection des données.
4.3.6.3. Configuration de l'application de protection des données Copier lienLien copié sur presse-papiers!
Vous pouvez configurer l'application de protection des données en définissant les allocations de ressources Velero ou en activant les certificats CA auto-signés.
4.3.6.3.1. Paramétrage de l'allocation des ressources CPU et mémoire de Velero Copier lienLien copié sur presse-papiers!
Vous définissez les allocations de ressources CPU et mémoire pour le pod Velero en modifiant le manifeste de ressources personnalisées (CR) DataProtectionApplication.
Conditions préalables
- L'opérateur OpenShift API for Data Protection (OADP) doit être installé.
Procédure
Modifiez les valeurs dans le bloc
spec.configuration.velero.podConfig.ResourceAllocationsdu manifesteDataProtectionApplicationCR, comme dans l'exemple suivant :Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Spécifier le sélecteur de nœud à fournir à Velero podSpec
4.3.6.3.2. Activation des certificats CA auto-signés Copier lienLien copié sur presse-papiers!
Vous devez activer un certificat CA auto-signé pour le stockage d'objets en modifiant le manifeste de ressources personnalisées (CR) DataProtectionApplication afin d'éviter une erreur certificate signed by unknown authority.
Conditions préalables
- L'opérateur OpenShift API for Data Protection (OADP) doit être installé.
Procédure
Modifier les paramètres
spec.backupLocations.velero.objectStorage.caCertetspec.backupLocations.velero.configdu manifesteDataProtectionApplicationCR :Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.3.6.4. Installation de l'application de protection des données Copier lienLien copié sur presse-papiers!
Vous installez l'application de protection des données (DPA) en créant une instance de l'API DataProtectionApplication.
Conditions préalables
- Vous devez installer l'opérateur OADP.
- Vous devez configurer le stockage d'objets comme emplacement de sauvegarde.
- Si vous utilisez des instantanés pour sauvegarder des PV, votre fournisseur de cloud computing doit prendre en charge une API d'instantanés native ou des instantanés de l'interface de stockage de conteneurs (CSI).
Si les emplacements de sauvegarde et d'instantané utilisent les mêmes informations d'identification, vous devez créer un site
Secretavec le nom par défaut,cloud-credentials.NoteSi vous ne souhaitez pas spécifier d'emplacements de sauvegarde ou d'instantanés lors de l'installation, vous pouvez créer une adresse
Secretpar défaut avec un fichiercredentials-velerovide. S'il n'y a pas deSecretpar défaut, l'installation échouera.
Procédure
- Cliquez sur Operators → Installed Operators et sélectionnez l'opérateur OADP.
- Sous Provided APIs, cliquez sur Create instance dans la boîte DataProtectionApplication.
-
Cliquez sur YAML View et mettez à jour les paramètres du manifeste
DataProtectionApplication: - Cliquez sur Create.
Vérifiez l'installation en consultant les ressources de l'OADP :
oc get all -n openshift-adp
$ oc get all -n openshift-adpCopy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.3.6.4.1. Configurer NooBaa pour la reprise après sinistre sur OpenShift Data Foundation Copier lienLien copié sur presse-papiers!
Si vous utilisez le stockage en cluster pour votre bucket NooBaa backupStorageLocation sur OpenShift Data Foundation, configurez NooBaa en tant que magasin d'objets externe.
Si NooBaa n'est pas configuré comme un magasin d'objets externe, les sauvegardes risquent de ne pas être disponibles.
Procédure
- Configurez NooBaa en tant que magasin d'objets externe comme décrit dans Ajouter des ressources de stockage pour l'hybride ou le Multicloud.
4.3.6.4.2. Activation de l'ISC dans l'application de protection des données CR Copier lienLien copié sur presse-papiers!
Vous activez l'interface de stockage de conteneurs (CSI) dans la ressource personnalisée (CR) DataProtectionApplication afin de sauvegarder des volumes persistants à l'aide d'instantanés CSI.
Conditions préalables
- Le fournisseur de services en nuage doit prendre en charge les instantanés CSI.
Procédure
Modifiez le CR
DataProtectionApplication, comme dans l'exemple suivant :Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Ajouter le plugin par défaut
csi.
4.3.7. Désinstallation de l'API OpenShift pour la protection des données Copier lienLien copié sur presse-papiers!
Vous désinstallez OpenShift API for Data Protection (OADP) en supprimant l'opérateur OADP. Pour plus d'informations, reportez-vous à la section Suppression des opérateurs d'un cluster.
4.4. Sauvegarde et restauration Copier lienLien copié sur presse-papiers!
4.4.1. Sauvegarde des applications Copier lienLien copié sur presse-papiers!
Vous sauvegardez les applications en créant une Backup ressource personnalisée (CR).
Le CR Backup crée des fichiers de sauvegarde pour les ressources Kubernetes et les images internes, sur le stockage d'objets S3, et des instantanés pour les volumes persistants (PV), si le fournisseur de cloud utilise une API d'instantané native ou l'interface de stockage de conteneurs (CSI) pour créer des instantanés, comme OpenShift Data Foundation 4. Pour plus d'informations, voir Instantanés de volume CSI.
L'API CloudStorage pour le stockage S3 est une fonctionnalité d'aperçu technologique uniquement. Les fonctionnalités de l'aperçu technologique ne sont pas prises en charge par les accords de niveau de service (SLA) de production de Red Hat et peuvent ne pas être complètes sur le plan fonctionnel. Red Hat ne recommande pas de les utiliser en production. Ces fonctionnalités offrent un accès anticipé aux fonctionnalités des produits à venir, ce qui permet aux clients de tester les fonctionnalités et de fournir un retour d'information pendant le processus de développement.
Pour plus d'informations sur la portée de l'assistance des fonctionnalités de l'aperçu technologique de Red Hat, voir Portée de l'assistance des fonctionnalités de l'aperçu technologique.
Si votre fournisseur de cloud dispose d'une API d'instantané native ou prend en charge les instantanés de l'interface de stockage de conteneurs (CSI), le CR Backup sauvegarde les volumes persistants en créant des instantanés. Pour plus d'informations, voir Overview of CSI volume snapshots dans la documentation OpenShift Container Platform.
Si votre fournisseur de cloud computing ne prend pas en charge les instantanés ou si vos applications se trouvent sur des volumes de données NFS, vous pouvez créer des sauvegardes à l'aide de Restic.
Vous pouvez créer des crochets de sauvegarde pour exécuter des commandes avant ou après l'opération de sauvegarde.
Vous pouvez planifier des sauvegardes en créant un CRSchedule au lieu d'un CR Backup.
4.4.1.1. Création d'un CR de sauvegarde Copier lienLien copié sur presse-papiers!
Vous sauvegardez les images Kubernetes, les images internes et les volumes persistants (PV) en créant une ressource personnalisée (CR) Backup.
Conditions préalables
- Vous devez installer l'opérateur OpenShift API for Data Protection (OADP).
-
Le CR
DataProtectionApplicationdoit être dans un étatReady. Conditions préalables relatives à l'emplacement de la sauvegarde :
- Le stockage d'objets S3 doit être configuré pour Velero.
-
Un emplacement de sauvegarde doit être configuré dans le CR
DataProtectionApplication.
Conditions préalables pour l'emplacement des instantanés :
- Votre fournisseur de cloud computing doit disposer d'une API d'instantané native ou prendre en charge les instantanés de l'interface de stockage de conteneurs (CSI).
-
Pour les instantanés CSI, vous devez créer un CR
VolumeSnapshotClasspour enregistrer le pilote CSI. -
Un emplacement de volume doit être configuré dans le CR
DataProtectionApplication.
Procédure
Récupérez les CR
backupStorageLocationsen entrant la commande suivante :oc get backupStorageLocations -n openshift-adp
$ oc get backupStorageLocations -n openshift-adpCopy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
NAMESPACE NAME PHASE LAST VALIDATED AGE DEFAULT openshift-adp velero-sample-1 Available 11s 31m
NAMESPACE NAME PHASE LAST VALIDATED AGE DEFAULT openshift-adp velero-sample-1 Available 11s 31mCopy to Clipboard Copied! Toggle word wrap Toggle overflow Créez un CR
Backup, comme dans l'exemple suivant :Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Spécifier un tableau d'espaces de noms à sauvegarder.
- 2
- Facultatif : Spécifiez un tableau de ressources à inclure dans la sauvegarde. Les ressources peuvent être des raccourcis (par exemple, "po" pour "pods") ou être entièrement qualifiées. Si rien n'est spécifié, toutes les ressources sont incluses.
- 3
- Facultatif : Spécifiez un tableau de ressources à exclure de la sauvegarde. Les ressources peuvent être des raccourcis (par exemple, "po" pour "pods") ou être entièrement qualifiées.
- 4
- Indiquez le nom du CR
backupStorageLocations. - 5
- Sauvegarde des ressources qui ont toutes les étiquettes spécifiées.
- 6
- Sauvegarde des ressources qui ont une ou plusieurs des étiquettes spécifiées.
Vérifiez que l'état de la CR
BackupestCompleted:oc get backup -n openshift-adp <backup> -o jsonpath='{.status.phase}'$ oc get backup -n openshift-adp <backup> -o jsonpath='{.status.phase}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.4.1.2. Sauvegarde de volumes persistants avec des instantanés CSI Copier lienLien copié sur presse-papiers!
Vous sauvegardez des volumes persistants avec des instantanés de l'interface de stockage de conteneurs (CSI) en modifiant la ressource personnalisée (CR) VolumeSnapshotClass du stockage en nuage avant de créer la CR Backup.
Conditions préalables
- Le fournisseur de services en nuage doit prendre en charge les instantanés CSI.
-
Vous devez activer le CSI sur le site
DataProtectionApplicationCR.
Procédure
Ajouter la paire clé-valeur
metadata.labels.velero.io/csi-volumesnapshot-class: "true"à la CRVolumeSnapshotClass:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Vous pouvez maintenant créer un CR Backup.
4.4.1.3. Sauvegarde des applications avec Restic Copier lienLien copié sur presse-papiers!
Vous sauvegardez les ressources Kubernetes, les images internes et les volumes persistants avec Restic en modifiant la ressource personnalisée (CR) Backup.
Il n'est pas nécessaire de spécifier un emplacement d'instantané dans le CR DataProtectionApplication.
Restic ne prend pas en charge la sauvegarde des volumes hostPath. Pour plus d'informations, voir les limitations supplémentaires de Restic.
Conditions préalables
- Vous devez installer l'opérateur OpenShift API for Data Protection (OADP).
-
Vous ne devez pas désactiver l'installation par défaut de Restic en remplaçant
spec.configuration.restic.enableparfalsedans le CRDataProtectionApplication. -
Le CR
DataProtectionApplicationdoit être dans un étatReady.
Procédure
Modifiez le CR
Backup, comme dans l'exemple suivant :Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Ajouter
defaultVolumesToRestic: trueau blocspec.
4.4.1.4. Utilisation de Data Mover pour les instantanés CSI Copier lienLien copié sur presse-papiers!
Data Mover for CSI snapshots est une fonctionnalité d'aperçu technologique uniquement. Les fonctionnalités de l'aperçu technologique ne sont pas prises en charge par les accords de niveau de service (SLA) de production de Red Hat et peuvent ne pas être complètes sur le plan fonctionnel. Red Hat ne recommande pas leur utilisation en production. Ces fonctionnalités offrent un accès anticipé aux fonctionnalités des produits à venir, ce qui permet aux clients de tester les fonctionnalités et de fournir un retour d'information pendant le processus de développement.
Pour plus d'informations sur la portée de l'assistance des fonctionnalités de l'aperçu technologique de Red Hat, voir Portée de l'assistance des fonctionnalités de l'aperçu technologique.
Le Data Mover de l'OADP 1.1.2 permet aux clients de sauvegarder les instantanés de volume de l'interface de stockage de conteneurs (CSI) dans un magasin d'objets distant. Lorsque le Data Mover est activé, vous pouvez restaurer des applications avec état à partir du magasin en cas de panne, de suppression accidentelle ou de corruption du cluster. La solution OADP 1.1.2 Data Mover utilise l'option Restic de VolSync.
Data Mover ne prend en charge que la sauvegarde et la restauration des instantanés de volumes CSI.
Actuellement, Data Mover ne prend pas en charge les buckets de Google Cloud Storage (GCS).
Conditions préalables
-
Vous avez vérifié que les ressources personnalisées (CR)
StorageClassetVolumeSnapshotClassprennent en charge CSI. -
Vous avez vérifié qu'un seul CR
volumeSnapshotClassporte l'annotationsnapshot.storage.kubernetes.io/is-default-class: true. -
Vous avez vérifié qu'un seul CR
storageClassporte l'annotationstorageclass.kubernetes.io/is-default-class: true. -
Vous avez inclus le label
velero.io/csi-volumesnapshot-class: 'true'dans votre CRVolumeSnapshotClass. Vous avez installé l'opérateur VolSync en utilisant le gestionnaire du cycle de vie de l'opérateur (OLM).
NoteL'opérateur VolSync n'est nécessaire que pour l'utilisation du Data Mover de l'aperçu technologique. Il n'est pas nécessaire pour utiliser les fonctions de production de l'OADP.
- Vous avez installé l'opérateur OADP en utilisant OLM.
Procédure
Configurez un secret Restic en créant un fichier
.yamlcomme suit :Copy to Clipboard Copied! Toggle word wrap Toggle overflow NotePar défaut, l'opérateur recherche un secret nommé
dm-credential. Si vous utilisez un nom différent, vous devez le spécifier dans une application de protection des données (DPA) CR à l'aide dedpa.spec.features.dataMover.credentialName.Créez un DPA CR similaire à l'exemple suivant. Les plugins par défaut incluent CSI.
Exemple de demande de protection des données (DPA) CR
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Ajoutez le nom secret Restic de l'étape précédente. Si cela n'est pas fait, le nom secret par défaut
dm-credentialest utilisé.
L'opérateur OADP installe deux définitions de ressources personnalisées (CRD),
VolumeSnapshotBackupetVolumeSnapshotRestore.Exemple
VolumeSnapshotBackupCRDCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Spécifiez l'espace de noms dans lequel le cliché instantané du volume existe.
Exemple
VolumeSnapshotRestoreCRDCopy to Clipboard Copied! Toggle word wrap Toggle overflow Vous pouvez sauvegarder un instantané de volume en procédant comme suit :
Créer un CR de sauvegarde :
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Indiquez l'espace de noms dans lequel l'opérateur est installé. L'espace de noms par défaut est
openshift-adp.
Attendez jusqu'à 10 minutes et vérifiez si l'état de
VolumeSnapshotBackupCR estCompleteden entrant les commandes suivantes :oc get vsb -n <app_ns>
$ oc get vsb -n <app_ns>Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get vsb <vsb_name> -n <app_ns> -o jsonpath="{.status.phase}"$ oc get vsb <vsb_name> -n <app_ns> -o jsonpath="{.status.phase}"Copy to Clipboard Copied! Toggle word wrap Toggle overflow Un instantané est créé dans le magasin d'objets configuré dans le DPA.
NoteSi l'état de
VolumeSnapshotBackupCR devientFailed, reportez-vous aux registres Velero pour le dépannage.
Vous pouvez restaurer un instantané de volume en procédant comme suit :
-
Supprimez l'espace de noms de l'application et le site
volumeSnapshotContentqui a été créé par le plugin Velero CSI. Créez un CR
Restoreet définissezrestorePVscommetrue.Exemple
RestoreCRCopy to Clipboard Copied! Toggle word wrap Toggle overflow Attendez jusqu'à 10 minutes et vérifiez si l'état de
VolumeSnapshotRestoreCR estCompleteden entrant la commande suivante :oc get vsr -n <app_ns>
$ oc get vsr -n <app_ns>Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get vsr <vsr_name> -n <app_ns> -o jsonpath="{.status.phase}"$ oc get vsr <vsr_name> -n <app_ns> -o jsonpath="{.status.phase}"Copy to Clipboard Copied! Toggle word wrap Toggle overflow Vérifiez si les données et les ressources de votre application ont été restaurées.
NoteSi l'état de
VolumeSnapshotRestoreCR devient "Échec", reportez-vous aux journaux Velero pour le dépannage.
-
Supprimez l'espace de noms de l'application et le site
4.4.1.5. Création de crochets de sauvegarde Copier lienLien copié sur presse-papiers!
Vous créez des crochets de sauvegarde pour exécuter des commandes dans un conteneur d'un pod en modifiant la ressource personnalisée (CR) Backup.
Pre s'exécutent avant la sauvegarde du pod. Post s'exécutent après la sauvegarde.
Procédure
Ajoutez un crochet au bloc
spec.hooksdu CRBackup, comme dans l'exemple suivant :Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Facultatif : vous pouvez spécifier les espaces de noms auxquels le crochet s'applique. Si cette valeur n'est pas spécifiée, le crochet s'applique à tous les espaces de noms.
- 2
- Facultatif : vous pouvez spécifier des espaces de noms auxquels le crochet ne s'applique pas.
- 3
- Actuellement, les pods sont la seule ressource prise en charge à laquelle les crochets peuvent s'appliquer.
- 4
- Facultatif : vous pouvez spécifier les ressources auxquelles le crochet ne s'applique pas.
- 5
- Facultatif : Ce crochet ne s'applique qu'aux objets correspondant à l'étiquette. Si cette valeur n'est pas spécifiée, le crochet s'applique à tous les espaces de noms.
- 6
- Tableau de crochets à exécuter avant la sauvegarde.
- 7
- Facultatif : si le conteneur n'est pas spécifié, la commande s'exécute dans le premier conteneur du pod.
- 8
- Il s'agit du point d'entrée du conteneur init ajouté.
- 9
- Les valeurs autorisées pour le traitement des erreurs sont
FailetContinue. La valeur par défaut estFail. - 10
- Facultatif : durée d'attente pour l'exécution des commandes. La valeur par défaut est
30s. - 11
- Ce bloc définit un tableau de hooks à exécuter après la sauvegarde, avec les mêmes paramètres que les hooks de pré-sauvegarde.
4.4.1.6. Planification des sauvegardes Copier lienLien copié sur presse-papiers!
Vous planifiez les sauvegardes en créant une ressource personnalisée (CR) Schedule au lieu d'une CR Backup.
Laissez suffisamment de temps dans votre calendrier de sauvegarde pour qu'une sauvegarde se termine avant qu'une autre ne soit créée.
Par exemple, si la sauvegarde d'un espace de noms prend généralement 10 minutes, ne planifiez pas de sauvegardes plus fréquentes que toutes les 15 minutes.
Conditions préalables
- Vous devez installer l'opérateur OpenShift API for Data Protection (OADP).
-
Le CR
DataProtectionApplicationdoit être dans un étatReady.
Procédure
Récupérer les CR de
backupStorageLocations:oc get backupStorageLocations -n openshift-adp
$ oc get backupStorageLocations -n openshift-adpCopy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
NAMESPACE NAME PHASE LAST VALIDATED AGE DEFAULT openshift-adp velero-sample-1 Available 11s 31m
NAMESPACE NAME PHASE LAST VALIDATED AGE DEFAULT openshift-adp velero-sample-1 Available 11s 31mCopy to Clipboard Copied! Toggle word wrap Toggle overflow Créez un CR
Schedule, comme dans l'exemple suivant :Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
cronexpression to schedule the backup, for example,0 7 * * *to perform a backup every day at 7:00.- 2
- Tableau des espaces de noms à sauvegarder.
- 3
- Nom du CR
backupStorageLocations. - 4
- Facultatif : Ajoutez la paire clé-valeur
defaultVolumesToRestic: truesi vous sauvegardez des volumes avec Restic.
Vérifiez que l'état de
ScheduleCR estCompletedaprès l'exécution de la sauvegarde programmée :oc get schedule -n openshift-adp <schedule> -o jsonpath='{.status.phase}'$ oc get schedule -n openshift-adp <schedule> -o jsonpath='{.status.phase}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.4.1.7. Suppression des sauvegardes Copier lienLien copié sur presse-papiers!
Vous pouvez supprimer les fichiers de sauvegarde en supprimant la ressource personnalisée (CR) Backup.
Une fois que vous avez supprimé le CR Backup et les données de stockage d'objets associées, vous ne pouvez pas récupérer les données supprimées.
Conditions préalables
-
Vous avez créé un CR
Backup. -
Vous connaissez le nom du CR
Backupet l'espace de noms qui le contient. - Vous avez téléchargé l'outil Velero CLI.
- Vous pouvez accéder au binaire Velero dans votre cluster.
Procédure
Choisissez l'une des actions suivantes pour supprimer le CR
Backup:Pour supprimer le CR
Backupet conserver les données de stockage de l'objet associé, exécutez la commande suivante :oc delete backup <backup_CR_name> -n <velero_namespace>
oc delete backup <backup_CR_name> -n <velero_namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow Pour supprimer le CR
Backupet les données de stockage d'objets associées, exécutez la commande suivante :velero backup delete <backup_CR_name> -n <velero_namespace>
$ velero backup delete <backup_CR_name> -n <velero_namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow Où ?
- <backup_CR_name>
-
Spécifie le nom de la ressource personnalisée
Backup. - <velero_namespace>
-
Spécifie l'espace de noms qui contient la ressource personnalisée
Backup.
4.4.2. Restauration des applications Copier lienLien copié sur presse-papiers!
Vous restaurez les sauvegardes de l'application en créant une ressource personnalisée (CR) à l'adresseRestore .
Vous pouvez créer des crochets de restauration pour exécuter des commandes dans les conteneurs d'initialisation, avant le démarrage du conteneur d'application ou dans le conteneur d'application lui-même.
4.4.2.1. Création d'un CR de restauration Copier lienLien copié sur presse-papiers!
Vous restaurez une ressource personnalisée (CR) Backup en créant une CR Restore.
Conditions préalables
- Vous devez installer l'opérateur OpenShift API for Data Protection (OADP).
-
Le CR
DataProtectionApplicationdoit être dans un étatReady. -
Vous devez avoir un Velero
BackupCR. - Ajustez la taille demandée pour que la capacité du volume persistant (PV) corresponde à la taille demandée au moment de la sauvegarde.
Procédure
Créez un CR
Restore, comme dans l'exemple suivant :Copy to Clipboard Copied! Toggle word wrap Toggle overflow Vérifiez que l'état du CR
RestoreestCompleteden entrant la commande suivante :oc get restore -n openshift-adp <restore> -o jsonpath='{.status.phase}'$ oc get restore -n openshift-adp <restore> -o jsonpath='{.status.phase}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow Vérifiez que les ressources de sauvegarde ont été restaurées en entrant la commande suivante :
oc get all -n <namespace>
$ oc get all -n <namespace>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Namespace que vous avez sauvegardé.
Si vous utilisez Restic pour restaurer les objets
DeploymentConfigou si vous utilisez des crochets post-restauration, exécutez le script de nettoyagedc-restic-post-restore.shen entrant la commande suivante :bash dc-restic-post-restore.sh <restore-name>
bash dc-restic-post-restore.sh <restore-name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow NoteAu cours du processus de restauration, les plug-ins OADP Velero réduisent les objets
DeploymentConfiget restaurent les pods en tant que pods autonomes pour éviter que le cluster ne supprime les podsDeploymentConfigrestaurés immédiatement après la restauration et pour permettre aux hooks Restic et post-restauration de terminer leurs actions sur les pods restaurés. Le script de nettoyage supprime ces pods déconnectés et met à l'échelle tous les objetsDeploymentConfigjusqu'au nombre approprié de répliques.Exemple 4.1.
dc-restic-post-restore.shscript de nettoyageCopy to Clipboard Copied! Toggle word wrap Toggle overflow
4.4.2.2. Création de crochets de restauration Copier lienLien copié sur presse-papiers!
Vous créez des crochets de restauration pour exécuter des commandes dans un conteneur dans un pod tout en restaurant votre application en modifiant la ressource personnalisée (CR) Restore.
Vous pouvez créer deux types de crochets de restauration :
Un crochet
initajoute un conteneur init à un pod pour effectuer des tâches de configuration avant que le conteneur d'application ne démarre.Si vous restaurez une sauvegarde Restic, le conteneur init
restic-waitest ajouté avant le conteneur init restore hook.-
Un hook
execexécute des commandes ou des scripts dans un conteneur d'un pod restauré.
Procédure
Ajoutez un crochet au bloc
spec.hooksdu CRRestore, comme dans l'exemple suivant :Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Facultatif : Tableau des espaces de noms auxquels le crochet s'applique. Si cette valeur n'est pas spécifiée, le crochet s'applique à tous les espaces de noms.
- 2
- Actuellement, les pods sont la seule ressource prise en charge à laquelle les crochets peuvent s'appliquer.
- 3
- Facultatif : Ce crochet ne s'applique qu'aux objets correspondant au sélecteur d'étiquette.
- 4
- Facultatif : Timeout indique la durée maximale pendant laquelle Velero attend la fin de
initContainers. - 5
- Facultatif : si le conteneur n'est pas spécifié, la commande s'exécute dans le premier conteneur du pod.
- 6
- Il s'agit du point d'entrée du conteneur init ajouté.
- 7
- Facultatif : durée d'attente pour qu'un conteneur soit prêt. Cette durée doit être suffisante pour que le conteneur démarre et que tous les crochets précédents dans le même conteneur soient terminés. S'il n'est pas défini, le processus de restauration attend indéfiniment.
- 8
- Facultatif : durée d'attente pour l'exécution des commandes. La valeur par défaut est
30s. - 9
- Les valeurs autorisées pour le traitement des erreurs sont
FailetContinue:-
Continue: Seuls les échecs de commande sont consignés. -
Fail: Plus aucun crochet de restauration n'est exécuté dans aucun conteneur, dans aucun pod. Le statut du CRRestoreseraPartiallyFailed.
-
4.5. Dépannage Copier lienLien copié sur presse-papiers!
Vous pouvez déboguer les ressources personnalisées (CR) Velero en utilisant l'outil CLI d'OpenShift ou l'outil CLI de Velero. L'outil Velero CLI fournit des journaux et des informations plus détaillés.
Vous pouvez vérifier les problèmes d'installation, de sauvegarde et de restauration de la CR, ainsi que les problèmes liés à Restic.
Vous pouvez collecter des journaux, des informations CR et des données métriques Prometheus à l'aide de l'outilmust-gather .
Vous pouvez obtenir l'outil Velero CLI par :
- Télécharger l'outil Velero CLI
- Accès au binaire Velero dans le déploiement Velero dans le cluster
4.5.1. Télécharger l'outil Velero CLI Copier lienLien copié sur presse-papiers!
Vous pouvez télécharger et installer l'outil Velero CLI en suivant les instructions de la page de documentation Velero.
La page comprend des instructions pour :
- macOS en utilisant Homebrew
- GitHub
- Windows en utilisant Chocolatey
Conditions préalables
- Vous avez accès à un cluster Kubernetes, v1.16 ou plus récent, avec le DNS et la mise en réseau des conteneurs activés.
-
Vous avez installé
kubectllocalement.
Procédure
- Ouvrez un navigateur et accédez à la page "Installer le CLI" sur le site web de Velero.
- Suivez la procédure appropriée pour macOS, GitHub ou Windows.
Téléchargez la version de Velero correspondant à votre version d'OADP et d'OpenShift Container Platform selon le tableau suivant :
Expand Tableau 4.2. OADP-Velero-OpenShift Container Platform relation de version Version de l'OADP Version Velero Version d'OpenShift Container Platform 1.0.0
4.6 et plus
1.0.1
4.6 et plus
1.0.2
4.6 et plus
1.0.3
4.6 et plus
1.1.0
4.9 et plus
1.1.1
4.9 et plus
1.1.2
4.9 et plus
4.5.2. Accès au binaire Velero dans le déploiement Velero dans le cluster Copier lienLien copié sur presse-papiers!
Vous pouvez utiliser une commande shell pour accéder au binaire Velero dans le déploiement Velero dans le cluster.
Conditions préalables
-
Votre ressource personnalisée
DataProtectionApplicationa le statutReconcile complete.
Procédure
Entrez la commande suivante pour définir l'alias nécessaire :
alias velero='oc -n openshift-adp exec deployment/velero -c velero -it -- ./velero'
$ alias velero='oc -n openshift-adp exec deployment/velero -c velero -it -- ./velero'Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.5.3. Déboguer les ressources Velero avec l'outil OpenShift CLI Copier lienLien copié sur presse-papiers!
Vous pouvez déboguer un échec de sauvegarde ou de restauration en vérifiant les ressources personnalisées Velero (CRs) et le journal du pod Velero avec l'outil CLI d'OpenShift.
Velero CRs
Utilisez la commande oc describe pour obtenir un résumé des avertissements et des erreurs associés à un CR Backup ou Restore:
oc describe <velero_cr> <cr_name>
oc describe <velero_cr> <cr_name>
Billes de pods Velero
Utilisez la commande oc logs pour récupérer les journaux du pod Velero:
oc logs pod/<velero>
$ oc logs pod/<velero>
Journaux de débogage du pod Velero
Vous pouvez spécifier le niveau de journalisation de Velero dans la ressource DataProtectionApplication comme le montre l'exemple suivant.
Cette option est disponible à partir de l'OADP 1.0.3.
Les valeurs suivantes sont disponibles sur logLevel:
-
trace -
debug -
info -
warning -
error -
fatal -
panic
Il est recommandé d'utiliser debug pour la plupart des journaux.
4.5.4. Déboguer les ressources Velero avec l'outil Velero CLI Copier lienLien copié sur presse-papiers!
Vous pouvez déboguer Backup et Restore custom resources (CRs) et récupérer les journaux avec l'outil Velero CLI.
L'outil Velero CLI fournit des informations plus détaillées que l'outil OpenShift CLI.
Syntaxe
Utilisez la commande oc exec pour exécuter une commande CLI Velero :
oc -n openshift-adp exec deployment/velero -c velero -- ./velero \ <backup_restore_cr> <command> <cr_name>
$ oc -n openshift-adp exec deployment/velero -c velero -- ./velero \
<backup_restore_cr> <command> <cr_name>
Exemple
oc -n openshift-adp exec deployment/velero -c velero -- ./velero \ backup describe 0e44ae00-5dc3-11eb-9ca8-df7e5254778b-2d8ql
$ oc -n openshift-adp exec deployment/velero -c velero -- ./velero \
backup describe 0e44ae00-5dc3-11eb-9ca8-df7e5254778b-2d8ql
Option d'aide
L'option velero --help permet d'obtenir la liste de toutes les commandes CLI de Velero :
oc -n openshift-adp exec deployment/velero -c velero -- ./velero \ --help
$ oc -n openshift-adp exec deployment/velero -c velero -- ./velero \
--help
Décrire la commande
Utilisez la commande velero describe pour obtenir un résumé des avertissements et des erreurs associés à un CR Backup ou Restore:
oc -n openshift-adp exec deployment/velero -c velero -- ./velero \ <backup_restore_cr> describe <cr_name>
$ oc -n openshift-adp exec deployment/velero -c velero -- ./velero \
<backup_restore_cr> describe <cr_name>
Exemple
oc -n openshift-adp exec deployment/velero -c velero -- ./velero \ backup describe 0e44ae00-5dc3-11eb-9ca8-df7e5254778b-2d8ql
$ oc -n openshift-adp exec deployment/velero -c velero -- ./velero \
backup describe 0e44ae00-5dc3-11eb-9ca8-df7e5254778b-2d8ql
Commande d'enregistrement
Utilisez la commande velero logs pour récupérer les journaux d'un CR Backup ou Restore:
oc -n openshift-adp exec deployment/velero -c velero -- ./velero \ <backup_restore_cr> logs <cr_name>
$ oc -n openshift-adp exec deployment/velero -c velero -- ./velero \
<backup_restore_cr> logs <cr_name>
Exemple
oc -n openshift-adp exec deployment/velero -c velero -- ./velero \ restore logs ccc7c2d0-6017-11eb-afab-85d0007f5a19-x4lbf
$ oc -n openshift-adp exec deployment/velero -c velero -- ./velero \
restore logs ccc7c2d0-6017-11eb-afab-85d0007f5a19-x4lbf
4.5.5. Problèmes avec Velero et les webhooks d'admission Copier lienLien copié sur presse-papiers!
Velero a des capacités limitées pour résoudre les problèmes liés aux webhooks d'admission lors d'une restauration. Si vous avez des charges de travail avec des webhooks d'admission, vous devrez peut-être utiliser un plugin Velero supplémentaire ou modifier la façon dont vous restaurez la charge de travail.
Généralement, les charges de travail avec des webhooks d'admission exigent que vous créiez d'abord une ressource d'un type spécifique. Cela est particulièrement vrai si votre charge de travail comporte des ressources enfants, car les webhooks d'admission bloquent généralement les ressources enfants.
Par exemple, la création ou la restauration d'un objet de premier niveau tel que service.serving.knative.dev crée automatiquement des ressources enfants. Si vous procédez d'abord à cette opération, vous ne devrez pas utiliser Velero pour créer et restaurer ces ressources. Cela permet d'éviter que les ressources enfants soient bloquées par un webhook d'admission que Velero pourrait utiliser.
4.5.5.1. Solutions de contournement pour la restauration des sauvegardes Velero qui utilisent des webhooks d'admission Copier lienLien copié sur presse-papiers!
Cette section décrit les étapes supplémentaires requises pour restaurer les ressources pour plusieurs types de sauvegardes Velero qui utilisent des webhooks d'admission.
4.5.5.1.1. Restaurer les ressources natives Copier lienLien copié sur presse-papiers!
Vous pouvez rencontrer des problèmes en utilisant Velero pour sauvegarder des ressources Knative qui utilisent des webhooks d'admission.
Vous pouvez éviter ces problèmes en restaurant d'abord la ressource Service de niveau supérieur chaque fois que vous sauvegardez et restaurez des ressources Knative qui utilisent des webhooks d'admission.
Procédure
Restaurer la ressource de premier niveau
service.serving.knavtive.dev Service:velero restore <restore_name> \ --from-backup=<backup_name> --include-resources \ service.serving.knavtive.dev
$ velero restore <restore_name> \ --from-backup=<backup_name> --include-resources \ service.serving.knavtive.devCopy to Clipboard Copied! Toggle word wrap Toggle overflow
4.5.5.1.2. Restauration des ressources IBM AppConnect Copier lienLien copié sur presse-papiers!
Si vous rencontrez des problèmes lorsque vous utilisez Velero pour restaurer une ressource IBM AppConnect dotée d'un webhook d'admission, vous pouvez effectuer les vérifications décrites dans cette procédure.
Procédure
Vérifiez si vous avez des plugins d'admission à la mutation de
kind: MutatingWebhookConfigurationdans le cluster :oc get mutatingwebhookconfigurations
$ oc get mutatingwebhookconfigurationsCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
Examinez le fichier YAML de chaque site
kind: MutatingWebhookConfigurationpour vous assurer qu'aucune de ses règles ne bloque la création des objets qui posent problème. Pour plus d'informations, voir la documentation officielle de Kuberbetes. -
Vérifiez que tout
spec.versiondanstype: Configuration.appconnect.ibm.com/v1beta1utilisé au moment de la sauvegarde est pris en charge par l'opérateur installé.
4.5.6. Problèmes d'installation Copier lienLien copié sur presse-papiers!
Vous pouvez rencontrer des problèmes dus à l'utilisation de répertoires non valides ou d'informations d'identification incorrectes lors de l'installation de l'application de protection des données.
4.5.6.1. Le stockage de sauvegarde contient des répertoires non valides Copier lienLien copié sur presse-papiers!
Le journal du pod Velero affiche le message d'erreur Backup storage contains invalid top-level directories.
Cause
Le stockage d'objets contient des répertoires de premier niveau qui ne sont pas des répertoires Velero.
Solution
Si le stockage d'objets n'est pas dédié à Velero, vous devez spécifier un préfixe pour le seau en définissant le paramètre spec.backupLocations.velero.objectStorage.prefix dans le manifeste DataProtectionApplication.
4.5.6.2. Informations d'identification AWS incorrectes Copier lienLien copié sur presse-papiers!
Le journal du pod oadp-aws-registry affiche le message d'erreur, InvalidAccessKeyId: The AWS Access Key Id you provided does not exist in our records.
Le journal du pod Velero affiche le message d'erreur NoCredentialProviders: no valid providers in chain.
Cause
Le fichier credentials-velero utilisé pour créer l'objet Secret est mal formaté.
Solution
Assurez-vous que le fichier credentials-velero est correctement formaté, comme dans l'exemple suivant :
Exemple de fichier credentials-velero
[default] aws_access_key_id=AKIAIOSFODNN7EXAMPLE aws_secret_access_key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
[default]
aws_access_key_id=AKIAIOSFODNN7EXAMPLE
aws_secret_access_key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
4.5.7. Problèmes de sauvegarde et de restauration de la CR Copier lienLien copié sur presse-papiers!
Vous pouvez rencontrer ces problèmes courants avec les ressources personnalisées (CR) Backup et Restore.
4.5.7.1. Le CR de sauvegarde ne peut pas récupérer le volume Copier lienLien copié sur presse-papiers!
Le CR Backup affiche le message d'erreur InvalidVolume.NotFound: The volume ‘vol-xxxx’ does not exist.
Cause
Le volume persistant (PV) et les emplacements des instantanés se trouvent dans des régions différentes.
Solution
-
Modifiez la valeur de la clé
spec.snapshotLocations.velero.config.regiondans le manifesteDataProtectionApplicationafin que l'emplacement de l'instantané se trouve dans la même région que le PV. -
Créez un nouveau CR
Backup.
4.5.7.2. L'état de la CR de sauvegarde reste en cours Copier lienLien copié sur presse-papiers!
Le statut d'une CR Backup reste dans la phase InProgress et ne s'achève pas.
Cause
Si une sauvegarde est interrompue, elle ne peut pas être reprise.
Solution
Récupérer les détails du CR
Backup:oc -n {namespace} exec deployment/velero -c velero -- ./velero \ backup describe <backup>$ oc -n {namespace} exec deployment/velero -c velero -- ./velero \ backup describe <backup>Copy to Clipboard Copied! Toggle word wrap Toggle overflow Supprimer le CR
Backup:oc delete backup <backup> -n openshift-adp
oc delete backup <backup> -n openshift-adpCopy to Clipboard Copied! Toggle word wrap Toggle overflow Il n'est pas nécessaire de nettoyer l'emplacement de sauvegarde car un CR
Backupen cours n'a pas téléchargé de fichiers vers le stockage d'objets.-
Créez un nouveau CR
Backup.
4.5.7.3. Le statut de la CR de sauvegarde reste en PartiallyFailed (échec partiel) Copier lienLien copié sur presse-papiers!
L'état d'un CR Backup sans Restic en cours d'utilisation reste dans la phase PartiallyFailed et ne se termine pas. Un instantané du PVC affilié n'est pas créé.
Cause
Si la sauvegarde est créée sur la base de la classe d'instantané CSI, mais que l'étiquette est manquante, le plugin d'instantané CSI ne parvient pas à créer un instantané. En conséquence, le pod Velero enregistre une erreur similaire à la suivante :
time="2023-02-17T16:33:13Z" level=error msg="Error backing up item" backup=openshift-adp/user1-backup-check5 error="error executing custom action (groupResource=persistentvolumeclaims, namespace=busy1, name=pvc1-user1): rpc error: code = Unknown desc = failed to get volumesnapshotclass for storageclass ocs-storagecluster-ceph-rbd: failed to get volumesnapshotclass for provisioner openshift-storage.rbd.csi.ceph.com, ensure that the desired volumesnapshot class has the velero.io/csi-volumesnapshot-class label" logSource="/remote-source/velero/app/pkg/backup/backup.go:417" name=busybox-79799557b5-vprq
time="2023-02-17T16:33:13Z" level=error msg="Error backing up item" backup=openshift-adp/user1-backup-check5 error="error executing custom action (groupResource=persistentvolumeclaims, namespace=busy1, name=pvc1-user1): rpc error: code = Unknown desc = failed to get volumesnapshotclass for storageclass ocs-storagecluster-ceph-rbd: failed to get volumesnapshotclass for provisioner openshift-storage.rbd.csi.ceph.com, ensure that the desired volumesnapshot class has the velero.io/csi-volumesnapshot-class label" logSource="/remote-source/velero/app/pkg/backup/backup.go:417" name=busybox-79799557b5-vprq
Solution
Supprimer le CR
Backup:oc delete backup <backup> -n openshift-adp
oc delete backup <backup> -n openshift-adpCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
Si nécessaire, nettoyez les données stockées sur le site
BackupStorageLocationpour libérer de l'espace. Appliquez l'étiquette
velero.io/csi-volumesnapshot-class=trueà l'objetVolumeSnapshotClass:oc label volumesnapshotclass/<snapclass_name> velero.io/csi-volumesnapshot-class=true
oc label volumesnapshotclass/<snapclass_name> velero.io/csi-volumesnapshot-class=trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
Créez un nouveau CR
Backup.
4.5.8. Questions relatives à l'agriculture Copier lienLien copié sur presse-papiers!
Vous pouvez rencontrer ces problèmes lorsque vous sauvegardez des applications avec Restic.
4.5.8.1. Erreur d'autorisation de restic pour les volumes de données NFS avec l'option root_squash activée Copier lienLien copié sur presse-papiers!
Le journal du pod Restic affiche le message d'erreur : controller=pod-volume-backup error="fork/exec/usr/bin/restic: permission denied".
Cause
Si vos volumes de données NFS ont activé root_squash, Restic est mappé à nfsnobody et n'a pas l'autorisation de créer des sauvegardes.
Solution
Vous pouvez résoudre ce problème en créant un groupe supplémentaire pour Restic et en ajoutant l'identifiant du groupe au manifeste DataProtectionApplication:
-
Créez un groupe supplémentaire pour
Resticsur le volume de données NFS. -
Activez le bit
setgidsur les répertoires NFS pour que la propriété du groupe soit héritée. Ajoutez le paramètre
spec.configuration.restic.supplementalGroupset l'identifiant du groupe au manifesteDataProtectionApplication, comme dans l'exemple suivant :Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Indiquez l'ID du groupe supplémentaire.
-
Attendez que les pods
Resticredémarrent pour que les changements soient appliqués.
4.5.8.2. Restic Backup CR ne peut pas être recréé après que le seau a été vidé Copier lienLien copié sur presse-papiers!
Si vous créez un CR Restic Backup pour un espace de noms, videz le seau de stockage d'objets, puis recréez le CR Backup pour le même espace de noms, le CR Backup recréé échoue.
Le journal du pod velero affiche le message d'erreur suivant : stderr=Fatal: unable to open config file: Stat: The specified key does not exist.\nIs there a repository at the following location?.
Cause
Velero ne recrée pas ou ne met pas à jour le référentiel Restic à partir du manifeste ResticRepository si les répertoires Restic sont supprimés du stockage d'objets. Voir le problème 4421 de Velero pour plus d'informations.
Solution
Supprimez le référentiel Restic correspondant de l'espace de noms en exécutant la commande suivante :
oc delete resticrepository openshift-adp <name_of_the_restic_repository>
oc delete resticrepository openshift-adp <name_of_the_restic_repository>Copy to Clipboard Copied! Toggle word wrap Toggle overflow Dans le journal d'erreurs suivant,
mysql-persistentest le dépôt Restic problématique. Le nom du dépôt apparaît en italique pour plus de clarté.Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.5.9. Utilisation de l'outil de collecte obligatoire Copier lienLien copié sur presse-papiers!
Vous pouvez collecter des journaux, des mesures et des informations sur les ressources personnalisées de l'OADP à l'aide de l'outil must-gather.
Les données du site must-gather doivent être jointes à tous les dossiers clients.
Conditions préalables
-
Vous devez être connecté au cluster OpenShift Container Platform en tant qu'utilisateur ayant le rôle
cluster-admin. -
Vous devez avoir installé OpenShift CLI (
oc).
Procédure
-
Naviguez jusqu'au répertoire dans lequel vous souhaitez stocker les données
must-gather. Exécutez la commande
oc adm must-gatherpour l'une des options de collecte de données suivantes :oc adm must-gather --image=registry.redhat.io/oadp/oadp-mustgather-rhel8:v1.1
$ oc adm must-gather --image=registry.redhat.io/oadp/oadp-mustgather-rhel8:v1.1Copy to Clipboard Copied! Toggle word wrap Toggle overflow Les données sont sauvegardées en tant que
must-gather/must-gather.tar.gz. Vous pouvez télécharger ce fichier vers un dossier d'assistance sur le portail client de Red Hat.oc adm must-gather --image=registry.redhat.io/oadp/oadp-mustgather-rhel8:v1.1 \ -- /usr/bin/gather_metrics_dump
$ oc adm must-gather --image=registry.redhat.io/oadp/oadp-mustgather-rhel8:v1.1 \ -- /usr/bin/gather_metrics_dumpCopy to Clipboard Copied! Toggle word wrap Toggle overflow Cette opération peut prendre beaucoup de temps. Les données sont enregistrées sous
must-gather/metrics/prom_data.tar.gz.
Visualisation des données de métrologie avec la console Prometheus
Vous pouvez consulter les données de mesure dans la console Prometheus.
Procédure
Décompressez le fichier
prom_data.tar.gz:tar -xvzf must-gather/metrics/prom_data.tar.gz
$ tar -xvzf must-gather/metrics/prom_data.tar.gzCopy to Clipboard Copied! Toggle word wrap Toggle overflow Créer une instance locale de Prometheus :
make prometheus-run
$ make prometheus-runCopy to Clipboard Copied! Toggle word wrap Toggle overflow La commande affiche l'URL de Prometheus.
Sortie
Started Prometheus on http://localhost:9090
Started Prometheus on http://localhost:9090Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Lancez un navigateur web et accédez à l'URL pour visualiser les données à l'aide de la console web Prometheus.
Après avoir consulté les données, supprimez l'instance Prometheus et les données :
make prometheus-cleanup
$ make prometheus-cleanupCopy to Clipboard Copied! Toggle word wrap Toggle overflow
4.6. API utilisées avec l'OADP Copier lienLien copié sur presse-papiers!
Ce document fournit des informations sur les API suivantes que vous pouvez utiliser avec l'OADP :
- API Velero
- API OADP
4.6.1. API Velero Copier lienLien copié sur presse-papiers!
La documentation de l'API Velero est maintenue par Velero, et non par Red Hat. Elle peut être consultée à l'adresse Velero API types.
4.6.2. API OADP Copier lienLien copié sur presse-papiers!
Les tableaux suivants présentent la structure de l'API OADP :
| Propriété | Type | Description |
|---|---|---|
|
|
Définit la liste des configurations à utiliser pour | |
|
|
Définit la liste des configurations à utiliser pour | |
|
| map [ UnsupportedImageKey ] string |
Peut être utilisé pour remplacer les images dépendantes déployées pour le développement. Les options sont |
|
| Utilisé pour ajouter des annotations aux pods déployés par les opérateurs. | |
|
| Définit la configuration du DNS d'un pod. | |
|
|
Définit les paramètres DNS d'un pod en plus de ceux générés par | |
|
| *bool | Permet de spécifier si vous souhaitez ou non déployer un registre pour permettre la sauvegarde et la restauration des images. |
|
| Utilisé pour définir la configuration du serveur de l'application de protection des données. | |
|
| Définit la configuration du DPA pour activer les fonctions d'aperçu technologique. |
Définitions complètes des schémas pour l'API de l'OADP.
| Propriété | Type | Description |
|---|---|---|
|
| Emplacement pour stocker les instantanés de volume, comme décrit dans Emplacement de stockage des sauvegardes. | |
|
| [Aperçu technologique] Automatise la création d'un bac chez certains fournisseurs de stockage dans le nuage pour l'utiliser comme emplacement de stockage de sauvegarde. |
Le paramètre bucket est une fonctionnalité d'aperçu technologique uniquement. Les fonctionnalités de l'aperçu technologique ne sont pas prises en charge par les accords de niveau de service (SLA) de production de Red Hat et peuvent ne pas être complètes sur le plan fonctionnel. Red Hat ne recommande pas de les utiliser en production. Ces fonctionnalités offrent un accès anticipé aux fonctionnalités des produits à venir, ce qui permet aux clients de tester les fonctionnalités et de fournir un retour d'information au cours du processus de développement.
Pour plus d'informations sur la portée de l'assistance des fonctionnalités de l'aperçu technologique de Red Hat, voir Portée de l'assistance des fonctionnalités de l'aperçu technologique.
Définitions complètes du schéma pour le type BackupLocation.
| Propriété | Type | Description |
|---|---|---|
|
| Emplacement pour stocker les instantanés de volume, comme décrit dans Emplacement de l'instantané de volume. |
Définitions complètes du schéma pour le type SnapshotLocation.
| Propriété | Type | Description |
|---|---|---|
|
| Définit la configuration du serveur Velero. | |
|
| Définit la configuration du serveur Restic. |
Définitions complètes du schéma pour le type ApplicationConfig.
| Propriété | Type | Description |
|---|---|---|
|
| Définit la liste des fonctionnalités à activer pour l'instance Velero. | |
|
|
Les types suivants de plugins Velero par défaut peuvent être installés : | |
|
| Utilisé pour l'installation de plugins Velero personnalisés. Les plugins par défaut et personnalisés sont décrits dans les plugins OADP | |
|
|
Représente une carte de configuration qui est créée si elle est définie pour être utilisée avec l'indicateur de fonctionnalité | |
|
|
Pour installer Velero sans emplacement de stockage par défaut, vous devez définir l'option | |
|
|
Définit la configuration du pod | |
|
|
Niveau de journalisation du serveur Velero (utilisez |
Définitions complètes du schéma pour le type VeleroConfig.
| Propriété | Type | Description |
|---|---|---|
|
| Nom du plugin personnalisé. | |
|
| Image du plugin personnalisé. |
Définitions complètes du schéma pour le type CustomPlugin.
| Propriété | Type | Description |
|---|---|---|
|
| *bool |
Si la valeur est |
|
|
Définit les groupes Linux à appliquer au pod | |
|
|
Chaîne de durée fournie par l'utilisateur qui définit le délai d'attente de Restic. La valeur par défaut est | |
|
|
Définit la configuration du pod |
Définitions complètes du schéma pour le type ResticConfig.
| Propriété | Type | Description |
|---|---|---|
|
|
Définit le | |
|
|
Définit la liste des tolérances à appliquer à un déploiement Velero ou à un Restic | |
|
|
Définissez les ressources spécifiques | |
|
| Étiquettes à ajouter aux cosses. |
Définitions complètes du schéma pour le type PodConfig.
| Propriété | Type | Description |
|---|---|---|
|
| Définit la configuration du Data Mover. |
Définitions complètes du schéma pour le type Features.
| Propriété | Type | Description |
|---|---|---|
|
|
S'il est défini sur | |
|
|
Nom Restic | |
|
|
Chaîne de durée fournie par l'utilisateur pour l'achèvement de |
L'API de l'OADP est décrite plus en détail dans OADP Operator.
4.7. Caractéristiques et fonctionnalités avancées de l'OADP Copier lienLien copié sur presse-papiers!
Ce document fournit des informations sur les caractéristiques et les fonctionnalités avancées d'OpenShift API for Data Protection (OADP).
4.7.1. Travailler avec différentes versions de l'API Kubernetes sur le même cluster Copier lienLien copié sur presse-papiers!
4.7.1.1. Liste des versions des groupes de l'API Kubernetes sur un cluster Copier lienLien copié sur presse-papiers!
Un groupe de sources peut proposer plusieurs versions d'une API, l'une de ces versions étant la version préférée de l'API. Par exemple, un groupe de sources avec une API nommée Example peut être disponible dans les groupes d'API example.com/v1 et example.com/v1beta2.
Si vous utilisez Velero pour sauvegarder et restaurer un tel cluster source, Velero ne sauvegarde que la version de cette ressource qui utilise la version préférée de son API Kubernetes.
Pour revenir à l'exemple ci-dessus, si example.com/v1 est l'API préférée, Velero ne sauvegarde que la version d'une ressource qui utilise example.com/v1. En outre, le cluster cible doit avoir enregistré example.com/v1 dans son ensemble de ressources API disponibles pour que Velero puisse restaurer la ressource sur le cluster cible.
Par conséquent, vous devez générer une liste des versions du groupe d'API Kubernetes sur votre cluster cible pour vous assurer que la version d'API préférée est enregistrée dans son ensemble de ressources d'API disponibles.
Procédure
- Entrez la commande suivante :
oc api-resources
$ oc api-resources
4.7.1.2. À propos de l'activation des versions des groupes d'API Copier lienLien copié sur presse-papiers!
Par défaut, Velero ne sauvegarde que les ressources qui utilisent la version préférée de l'API Kubernetes. Cependant, Velero inclut également une fonctionnalité, Enable API Group Versions, qui permet de surmonter cette limitation. Lorsqu'elle est activée sur le cluster source, cette fonctionnalité permet à Velero de sauvegarder all les versions du groupe API Kubernetes qui sont prises en charge sur le cluster, et pas seulement la version préférée. Une fois les versions stockées dans le fichier .tar de sauvegarde, elles sont disponibles pour être restaurées sur le cluster de destination.
Par exemple, un cluster source avec une API nommée Example peut être disponible dans les groupes d'API example.com/v1 et example.com/v1beta2, example.com/v1 étant l'API préférée.
Si la fonction Activer les versions du groupe API n'est pas activée, Velero ne sauvegarde que la version préférée du groupe API pour Example, c'est-à-dire example.com/v1. Si cette fonctionnalité est activée, Velero sauvegarde également example.com/v1beta2.
Lorsque la fonctionnalité Enable API Group Versions est activée sur le cluster de destination, Velero sélectionne la version à restaurer en fonction de l'ordre de priorité des versions des groupes d'API.
Enable API Group Versions est encore en version bêta.
Velero utilise l'algorithme suivant pour attribuer des priorités aux versions de l'API, 1 étant la priorité absolue :
- Version préférée du cluster destination
- Version préférée du cluster source
- Version commune non préférée prise en charge avec la priorité de version Kubernetes la plus élevée
4.7.1.3. Utilisation de l'activation des versions des groupes API Copier lienLien copié sur presse-papiers!
Vous pouvez utiliser la fonctionnalité Enable API Group Versions de Velero pour sauvegarder all Kubernetes API group versions that are supported on a cluster, not only the preferred one.
Enable API Group Versions est encore en version bêta.
Procédure
-
Configurez l'indicateur de fonctionnalité
EnableAPIGroupVersions:
Chapitre 5. Sauvegarde et restauration du plan de contrôle Copier lienLien copié sur presse-papiers!
5.1. Sauvegarde de etcd Copier lienLien copié sur presse-papiers!
etcd est le magasin clé-valeur d'OpenShift Container Platform, qui conserve l'état de tous les objets de ressources.
Sauvegardez régulièrement les données etcd de votre cluster et stockez-les dans un endroit sûr, idéalement en dehors de l'environnement OpenShift Container Platform. Ne prenez pas de sauvegarde etcd avant la fin de la première rotation des certificats, qui a lieu 24 heures après l'installation, sinon la sauvegarde contiendra des certificats expirés. Il est également recommandé d'effectuer des sauvegardes etcd en dehors des heures de pointe, car l'instantané etcd a un coût d'E/S élevé.
Veillez à effectuer une sauvegarde etcd après avoir mis à niveau votre cluster. Ceci est important car lorsque vous restaurez votre cluster, vous devez utiliser une sauvegarde etcd qui a été prise à partir de la même version de z-stream. Par exemple, un cluster OpenShift Container Platform 4.y.z doit utiliser une sauvegarde etcd provenant de la version 4.y.z.
Sauvegardez les données etcd de votre cluster en effectuant une seule invocation du script de sauvegarde sur un hôte du plan de contrôle. Ne faites pas de sauvegarde pour chaque hôte du plan de contrôle.
Après avoir effectué une sauvegarde d'etcd, vous pouvez restaurer un état antérieur du cluster.
5.1.1. Sauvegarde des données etcd Copier lienLien copié sur presse-papiers!
Suivez ces étapes pour sauvegarder les données etcd en créant un instantané etcd et en sauvegardant les ressources des pods statiques. Cette sauvegarde peut être enregistrée et utilisée ultérieurement si vous avez besoin de restaurer etcd.
N'effectuez une sauvegarde qu'à partir d'un seul hôte de plan de contrôle. N'effectuez pas de sauvegarde à partir de chaque hôte de plan de contrôle du cluster.
Conditions préalables
-
Vous avez accès au cluster en tant qu'utilisateur ayant le rôle
cluster-admin. Vous avez vérifié si le proxy à l'échelle du cluster est activé.
AstuceVous pouvez vérifier si le proxy est activé en examinant la sortie de
oc get proxy cluster -o yaml. Le proxy est activé si les champshttpProxy,httpsProxyetnoProxyont des valeurs définies.
Procédure
Démarrer une session de débogage pour un nœud de plan de contrôle :
oc debug node/<node_name>
oc debug node/<node_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow Changez votre répertoire racine en
/host:chroot /host
sh-4.2# chroot /hostCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
Si le proxy à l'échelle du cluster est activé, assurez-vous que vous avez exporté les variables d'environnement
NO_PROXY,HTTP_PROXY, etHTTPS_PROXY. Exécutez le script
cluster-backup.shet indiquez l'emplacement où sauvegarder la sauvegarde.AstuceLe script
cluster-backup.shest maintenu en tant que composant de l'opérateur de cluster etcd et est une enveloppe autour de la commandeetcdctl snapshot save./usr/local/bin/cluster-backup.sh /home/core/assets/backup
sh-4.4# /usr/local/bin/cluster-backup.sh /home/core/assets/backupCopy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie de script
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Dans cet exemple, deux fichiers sont créés dans le répertoire
/home/core/assets/backup/sur l'hôte du plan de contrôle :-
snapshot_<datetimestamp>.db: Ce fichier est le snapshot etcd. Le scriptcluster-backup.shconfirme sa validité. static_kuberesources_<datetimestamp>.tar.gz: Ce fichier contient les ressources pour les pods statiques. Si le chiffrement etcd est activé, il contient également les clés de chiffrement pour l'instantané etcd.NoteSi le cryptage etcd est activé, il est recommandé de stocker ce deuxième fichier séparément de l'instantané etcd pour des raisons de sécurité. Toutefois, ce fichier est nécessaire pour restaurer à partir de l'instantané etcd.
Gardez à l'esprit que le chiffrement etcd ne chiffre que les valeurs, pas les clés. Cela signifie que les types de ressources, les espaces de noms et les noms d'objets ne sont pas chiffrés.
-
5.2. Remplacement d'un membre etcd malsain Copier lienLien copié sur presse-papiers!
Ce document décrit le processus de remplacement d'un membre etcd malsain.
Ce processus dépend du fait que le membre etcd est malsain parce que la machine ne fonctionne pas ou que le nœud n'est pas prêt, ou qu'il est malsain parce que le pod etcd est en train de faire du crashlooping.
Si vous avez perdu la majorité de vos hôtes du plan de contrôle, suivez la procédure de reprise après sinistre pour restaurer un état antérieur du cluster au lieu de suivre cette procédure.
Si les certificats du plan de contrôle ne sont pas valides sur le membre remplacé, vous devez suivre la procédure de récupération des certificats de plan de contrôle expirés au lieu de cette procédure.
Si un nœud de plan de contrôle est perdu et qu'un nouveau est créé, l'opérateur de cluster etcd se charge de générer les nouveaux certificats TLS et d'ajouter le nœud en tant que membre etcd.
5.2.1. Conditions préalables Copier lienLien copié sur presse-papiers!
- Effectuez une sauvegarde d'etcd avant de remplacer un membre d'etcd malsain.
5.2.2. Identification d'un membre etcd malsain Copier lienLien copié sur presse-papiers!
Vous pouvez identifier si votre cluster a un membre etcd en mauvaise santé.
Conditions préalables
-
Accès au cluster en tant qu'utilisateur ayant le rôle
cluster-admin.
Procédure
Vérifiez l'état de la condition d'état
EtcdMembersAvailableà l'aide de la commande suivante :oc get etcd -o=jsonpath='{range .items[0].status.conditions[?(@.type=="EtcdMembersAvailable")]}{.message}{"\n"}'$ oc get etcd -o=jsonpath='{range .items[0].status.conditions[?(@.type=="EtcdMembersAvailable")]}{.message}{"\n"}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow Examiner les résultats :
2 of 3 members are available, ip-10-0-131-183.ec2.internal is unhealthy
2 of 3 members are available, ip-10-0-131-183.ec2.internal is unhealthyCopy to Clipboard Copied! Toggle word wrap Toggle overflow Cet exemple montre que le membre
ip-10-0-131-183.ec2.internaletcd n'est pas sain.
5.2.3. Déterminer l'état d'un membre etcd malsain Copier lienLien copié sur presse-papiers!
Les étapes pour remplacer un membre etcd malsain dépendent de l'état dans lequel se trouve votre membre etcd :
- La machine ne fonctionne pas ou le nœud n'est pas prêt
- Le pod etcd est en train de faire un crashloop
Cette procédure permet de déterminer dans quel état se trouve votre membre etcd. Cela vous permet de savoir quelle procédure suivre pour remplacer le membre etcd en mauvais état.
Si vous savez que la machine ne fonctionne pas ou que le nœud n'est pas prêt, mais que vous vous attendez à ce qu'il revienne bientôt à un état sain, vous n'avez pas besoin d'exécuter une procédure pour remplacer le membre etcd. L'opérateur de cluster etcd se synchronisera automatiquement lorsque la machine ou le nœud redeviendra sain.
Conditions préalables
-
Vous avez accès au cluster en tant qu'utilisateur ayant le rôle
cluster-admin. - Vous avez identifié un membre etcd malsain.
Procédure
Déterminer si le site machine is not running:
oc get machines -A -ojsonpath='{range .items[*]}{@.status.nodeRef.name}{@.status.providerStatus.instanceState}{@.status.providerStatus.instanceState}{\N-"\N-"\N"}" | grep -v running$ oc get machines -A -ojsonpath='{range .items[*]}{@.status.nodeRef.name}{@.status.providerStatus.instanceState}{@.status.providerStatus.instanceState}{\N-"\N-"\N"}" | grep -v runningCopy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
ip-10-0-131-183.ec2.internal stopped
ip-10-0-131-183.ec2.internal stopped1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Cette sortie indique le nœud et l'état de la machine du nœud. Si l'état est différent de
running, alors la page machine is not running.
Si le site machine is not running, suivre la procédure Replacing an unhealthy etcd member whose machine is not running or whose node is not ready.
Déterminer si le site node is not ready.
Si l'un ou l'autre des scénarios suivants est vrai, alors le site node is not ready.
Si la machine fonctionne, vérifiez si le nœud est inaccessible :
oc get nodes -o jsonpath='{range .items[*]}{"\n"}{.metadata.name}{"\t"}{range .spec.taints[*]}{.key}{" "}' | grep unreachable$ oc get nodes -o jsonpath='{range .items[*]}{"\n"}{.metadata.name}{"\t"}{range .spec.taints[*]}{.key}{" "}' | grep unreachableCopy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
ip-10-0-131-183.ec2.internal node-role.kubernetes.io/master node.kubernetes.io/unreachable node.kubernetes.io/unreachable
ip-10-0-131-183.ec2.internal node-role.kubernetes.io/master node.kubernetes.io/unreachable node.kubernetes.io/unreachable1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Si le nœud est répertorié avec une tare
unreachable, alors la tare node is not ready.
Si le nœud est toujours accessible, vérifiez si le nœud est répertorié comme
NotReady:oc get nodes -l node-role.kubernetes.io/master | grep "NotReady"
$ oc get nodes -l node-role.kubernetes.io/master | grep "NotReady"Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
ip-10-0-131-183.ec2.internal NotReady master 122m v1.25.0
ip-10-0-131-183.ec2.internal NotReady master 122m v1.25.01 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Si le nœud est répertorié comme
NotReady, alors le nœud node is not ready.
Si le site node is not ready, suivre la procédure Replacing an unhealthy etcd member whose machine is not running or whose node is not ready.
Déterminer si le site etcd pod is crashlooping.
Si la machine fonctionne et que le nœud est prêt, vérifiez si le pod etcd fait du crashlooping.
Vérifiez que tous les nœuds du plan de contrôle sont répertoriés comme
Ready:oc get nodes -l node-role.kubernetes.io/master
$ oc get nodes -l node-role.kubernetes.io/masterCopy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
NAME STATUS ROLES AGE VERSION ip-10-0-131-183.ec2.internal Ready master 6h13m v1.25.0 ip-10-0-164-97.ec2.internal Ready master 6h13m v1.25.0 ip-10-0-154-204.ec2.internal Ready master 6h13m v1.25.0
NAME STATUS ROLES AGE VERSION ip-10-0-131-183.ec2.internal Ready master 6h13m v1.25.0 ip-10-0-164-97.ec2.internal Ready master 6h13m v1.25.0 ip-10-0-154-204.ec2.internal Ready master 6h13m v1.25.0Copy to Clipboard Copied! Toggle word wrap Toggle overflow Vérifier si l'état d'un pod etcd est
ErrorouCrashloopBackoff:oc -n openshift-etcd get pods -l k8s-app=etcd
$ oc -n openshift-etcd get pods -l k8s-app=etcdCopy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
etcd-ip-10-0-131-183.ec2.internal 2/3 Error 7 6h9m etcd-ip-10-0-164-97.ec2.internal 3/3 Running 0 6h6m etcd-ip-10-0-154-204.ec2.internal 3/3 Running 0 6h6m
etcd-ip-10-0-131-183.ec2.internal 2/3 Error 7 6h9m1 etcd-ip-10-0-164-97.ec2.internal 3/3 Running 0 6h6m etcd-ip-10-0-154-204.ec2.internal 3/3 Running 0 6h6mCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Puisque le statut de ce pod est
Error, alors le etcd pod is crashlooping.
Si le site etcd pod is crashlooping, suivre la procédure Replacing an unhealthy etcd member whose etcd pod is crashlooping.
5.2.4. Remplacement d'un membre etcd malsain Copier lienLien copié sur presse-papiers!
Selon l'état de votre membre etcd malsain, utilisez l'une des procédures suivantes :
5.2.4.1. Remplacement d'un membre etcd en mauvaise santé dont la machine ne fonctionne pas ou dont le nœud n'est pas prêt Copier lienLien copié sur presse-papiers!
Cette procédure détaille les étapes à suivre pour remplacer un membre etcd qui n'est pas sain, soit parce que la machine ne fonctionne pas, soit parce que le nœud n'est pas prêt.
Si votre cluster utilise un jeu de machines de plan de contrôle, voir "Récupération d'un opérateur etcd dégradé" dans "Dépannage du jeu de machines de plan de contrôle" pour une procédure de récupération etcd plus simple.
Conditions préalables
- Vous avez identifié le membre etcd malsain.
Vous avez vérifié que la machine n'est pas en cours d'exécution ou que le nœud n'est pas prêt.
ImportantVous devez attendre si les autres nœuds du plan de contrôle sont hors tension. Les nœuds du plan de contrôle doivent rester hors tension jusqu'à ce que le remplacement d'un membre etcd malsain soit terminé.
-
Vous avez accès au cluster en tant qu'utilisateur ayant le rôle
cluster-admin. Vous avez effectué une sauvegarde etcd.
ImportantIl est important de faire une sauvegarde d'etcd avant d'effectuer cette procédure afin de pouvoir restaurer votre cluster en cas de problème.
Procédure
Retirer l'élément malsain.
Choisissez un pod qui est not sur le nœud affecté :
Dans un terminal ayant accès au cluster en tant qu'utilisateur
cluster-admin, exécutez la commande suivante :oc -n openshift-etcd get pods -l k8s-app=etcd
$ oc -n openshift-etcd get pods -l k8s-app=etcdCopy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
etcd-ip-10-0-131-183.ec2.internal 3/3 Running 0 123m etcd-ip-10-0-164-97.ec2.internal 3/3 Running 0 123m etcd-ip-10-0-154-204.ec2.internal 3/3 Running 0 124m
etcd-ip-10-0-131-183.ec2.internal 3/3 Running 0 123m etcd-ip-10-0-164-97.ec2.internal 3/3 Running 0 123m etcd-ip-10-0-154-204.ec2.internal 3/3 Running 0 124mCopy to Clipboard Copied! Toggle word wrap Toggle overflow Se connecter au conteneur etcd en cours d'exécution, en passant le nom d'un pod qui n'est pas sur le nœud affecté :
Dans un terminal ayant accès au cluster en tant qu'utilisateur
cluster-admin, exécutez la commande suivante :oc rsh -n openshift-etcd etcd-ip-10-0-154-204.ec2.internal
$ oc rsh -n openshift-etcd etcd-ip-10-0-154-204.ec2.internalCopy to Clipboard Copied! Toggle word wrap Toggle overflow Consulter la liste des membres :
etcdctl member list -w table
sh-4.2# etcdctl member list -w tableCopy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Notez l'ID et le nom du membre etcd malsain, car ces valeurs seront nécessaires plus tard dans la procédure. La commande
$ etcdctl endpoint healthlistera le membre supprimé jusqu'à ce que la procédure de remplacement soit terminée et qu'un nouveau membre soit ajouté.Supprimez le membre etcd malsain en fournissant l'ID à la commande
etcdctl member remove:etcdctl member remove 6fc1e7c9db35841d
sh-4.2# etcdctl member remove 6fc1e7c9db35841dCopy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
Member 6fc1e7c9db35841d removed from cluster ead669ce1fbfb346
Member 6fc1e7c9db35841d removed from cluster ead669ce1fbfb346Copy to Clipboard Copied! Toggle word wrap Toggle overflow Consultez à nouveau la liste des membres et vérifiez que le membre a bien été supprimé :
etcdctl member list -w table
sh-4.2# etcdctl member list -w tableCopy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Vous pouvez maintenant quitter le shell du nœud.
ImportantAprès avoir supprimé le membre, le cluster peut être inaccessible pendant une courte période, le temps que les instances etcd restantes redémarrent.
Désactivez la garde du quorum en entrant la commande suivante :
oc patch etcd/cluster --type=merge -p '{"spec": {"unsupportedConfigOverrides": {"useUnsupportedUnsafeNonHANonProductionUnstableEtcd": true}}}'$ oc patch etcd/cluster --type=merge -p '{"spec": {"unsupportedConfigOverrides": {"useUnsupportedUnsafeNonHANonProductionUnstableEtcd": true}}}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow Cette commande permet de s'assurer que vous pouvez recréer les secrets et déployer les pods statiques avec succès.
Supprime les anciens secrets du membre etcd malsain qui a été supprimé.
Liste les secrets du membre etcd malsain qui a été supprimé.
oc get secrets -n openshift-etcd | grep ip-10-0-131-183.ec2.internal
$ oc get secrets -n openshift-etcd | grep ip-10-0-131-183.ec2.internal1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Saisissez le nom du membre etcd malsain dont vous avez pris note plus tôt dans cette procédure.
Il y a un pair, un serveur et un secret de métrique, comme le montre la sortie suivante :
Exemple de sortie
etcd-peer-ip-10-0-131-183.ec2.internal kubernetes.io/tls 2 47m etcd-serving-ip-10-0-131-183.ec2.internal kubernetes.io/tls 2 47m etcd-serving-metrics-ip-10-0-131-183.ec2.internal kubernetes.io/tls 2 47m
etcd-peer-ip-10-0-131-183.ec2.internal kubernetes.io/tls 2 47m etcd-serving-ip-10-0-131-183.ec2.internal kubernetes.io/tls 2 47m etcd-serving-metrics-ip-10-0-131-183.ec2.internal kubernetes.io/tls 2 47mCopy to Clipboard Copied! Toggle word wrap Toggle overflow Supprime les secrets du membre etcd malsain qui a été supprimé.
Supprimer le secret de l'homologue :
oc delete secret -n openshift-etcd etcd-peer-ip-10-0-131-183.ec2.internal
$ oc delete secret -n openshift-etcd etcd-peer-ip-10-0-131-183.ec2.internalCopy to Clipboard Copied! Toggle word wrap Toggle overflow Supprimer le secret de service :
oc delete secret -n openshift-etcd etcd-serving-ip-10-0-131-183.ec2.internal
$ oc delete secret -n openshift-etcd etcd-serving-ip-10-0-131-183.ec2.internalCopy to Clipboard Copied! Toggle word wrap Toggle overflow Supprimer le secret des métriques :
oc delete secret -n openshift-etcd etcd-serving-metrics-ip-10-0-131-183.ec2.internal
$ oc delete secret -n openshift-etcd etcd-serving-metrics-ip-10-0-131-183.ec2.internalCopy to Clipboard Copied! Toggle word wrap Toggle overflow
Supprimer et recréer la machine du plan de contrôle. Une fois cette machine recréée, une nouvelle révision est forcée et etcd se met automatiquement à l'échelle.
Si vous utilisez une infrastructure fournie par l'installateur ou si vous avez utilisé l'API Machine pour créer vos machines, suivez ces étapes. Sinon, vous devez créer le nouveau master en utilisant la même méthode que celle utilisée pour le créer à l'origine.
Obtenir la machine pour le membre en mauvaise santé.
Dans un terminal ayant accès au cluster en tant qu'utilisateur
cluster-admin, exécutez la commande suivante :oc get machines -n openshift-machine-api -o wide
$ oc get machines -n openshift-machine-api -o wideCopy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Il s'agit de la machine du plan de contrôle pour le nœud malsain,
ip-10-0-131-183.ec2.internal.
Enregistrez la configuration de la machine dans un fichier sur votre système de fichiers :
oc get machine clustername-8qw5l-master-0 \ -n openshift-machine-api \ -o yaml \ > new-master-machine.yaml$ oc get machine clustername-8qw5l-master-0 \1 -n openshift-machine-api \ -o yaml \ > new-master-machine.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Indiquez le nom de la machine du plan de contrôle pour le nœud malsain.
Modifiez le fichier
new-master-machine.yamlcréé à l'étape précédente pour lui attribuer un nouveau nom et supprimer les champs inutiles.Retirer toute la section
status:Copy to Clipboard Copied! Toggle word wrap Toggle overflow Changez le nom du champ
metadata.name.Il est recommandé de conserver le même nom de base que l'ancienne machine et de remplacer le numéro de fin par le prochain numéro disponible. Dans cet exemple,
clustername-8qw5l-master-0est remplacé parclustername-8qw5l-master-3.Par exemple :
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Supprimer le champ
spec.providerID:providerID: aws:///us-east-1a/i-0fdb85790d76d0c3f
providerID: aws:///us-east-1a/i-0fdb85790d76d0c3fCopy to Clipboard Copied! Toggle word wrap Toggle overflow
Supprimez l'objet
BareMetalHosten exécutant la commande suivante, en remplaçant<host_name>par le nom de l'hôte à nu du nœud malsain :oc delete bmh -n openshift-machine-api <host_name>
oc delete bmh -n openshift-machine-api <host_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow Supprimez la machine du membre malsain en exécutant la commande suivante, en remplaçant
<machine_name>par le nom de la machine du plan de contrôle du nœud malsain, par exempleclustername-8qw5l-master-0:oc delete machine -n openshift-machine-api <nom_de_la_machine>
$ oc delete machine -n openshift-machine-api <nom_de_la_machine>Copy to Clipboard Copied! Toggle word wrap Toggle overflow Vérifiez que la machine a été supprimée :
oc get machines -n openshift-machine-api -o wide
$ oc get machines -n openshift-machine-api -o wideCopy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Créez la nouvelle machine à l'aide du fichier
new-master-machine.yaml:oc apply -f new-master-machine.yaml
$ oc apply -f new-master-machine.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow Vérifiez que la nouvelle machine a été créée :
oc get machines -n openshift-machine-api -o wide
$ oc get machines -n openshift-machine-api -o wideCopy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- La nouvelle machine,
clustername-8qw5l-master-3, est en cours de création et sera prête lorsque la phase passera deProvisioningàRunning.
La création de la nouvelle machine peut prendre quelques minutes. L'opérateur du cluster etcd se synchronisera automatiquement lorsque la machine ou le nœud reviendra à un état sain.
Réactivez la garde du quorum en entrant la commande suivante :
oc patch etcd/cluster --type=merge -p '{"spec": {"unsupportedConfigOverrides": null}}'$ oc patch etcd/cluster --type=merge -p '{"spec": {"unsupportedConfigOverrides": null}}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow Vous pouvez vérifier que la section
unsupportedConfigOverridesest supprimée de l'objet en entrant cette commande :oc get etcd/cluster -oyaml
$ oc get etcd/cluster -oyamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow Si vous utilisez OpenShift à nœud unique, redémarrez le nœud. Sinon, vous risquez de rencontrer l'erreur suivante dans l'opérateur de cluster etcd :
Exemple de sortie
EtcdCertSignerControllerDegraded: [Operation cannot be fulfilled on secrets "etcd-peer-sno-0": the object has been modified; please apply your changes to the latest version and try again, Operation cannot be fulfilled on secrets "etcd-serving-sno-0": the object has been modified; please apply your changes to the latest version and try again, Operation cannot be fulfilled on secrets "etcd-serving-metrics-sno-0": the object has been modified; please apply your changes to the latest version and try again]
EtcdCertSignerControllerDegraded: [Operation cannot be fulfilled on secrets "etcd-peer-sno-0": the object has been modified; please apply your changes to the latest version and try again, Operation cannot be fulfilled on secrets "etcd-serving-sno-0": the object has been modified; please apply your changes to the latest version and try again, Operation cannot be fulfilled on secrets "etcd-serving-metrics-sno-0": the object has been modified; please apply your changes to the latest version and try again]Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Vérification
Vérifiez que tous les pods etcd fonctionnent correctement.
Dans un terminal ayant accès au cluster en tant qu'utilisateur
cluster-admin, exécutez la commande suivante :oc -n openshift-etcd get pods -l k8s-app=etcd
$ oc -n openshift-etcd get pods -l k8s-app=etcdCopy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
etcd-ip-10-0-133-53.ec2.internal 3/3 Running 0 7m49s etcd-ip-10-0-164-97.ec2.internal 3/3 Running 0 123m etcd-ip-10-0-154-204.ec2.internal 3/3 Running 0 124m
etcd-ip-10-0-133-53.ec2.internal 3/3 Running 0 7m49s etcd-ip-10-0-164-97.ec2.internal 3/3 Running 0 123m etcd-ip-10-0-154-204.ec2.internal 3/3 Running 0 124mCopy to Clipboard Copied! Toggle word wrap Toggle overflow Si la sortie de la commande précédente n'indique que deux pods, vous pouvez forcer manuellement un redéploiement d'etcd. Dans un terminal ayant accès au cluster en tant qu'utilisateur
cluster-admin, exécutez la commande suivante :oc patch etcd cluster -p='{"spec" : {\i1}"forceRedeploymentReason" : \N-"recovery-'\N"$( date --rfc-3339=ns )'\N'\N"}'' -type=merge} --type=merge$ oc patch etcd cluster -p='{"spec" : {\i1}"forceRedeploymentReason" : \N-"recovery-'\N"$( date --rfc-3339=ns )'\N'\N"}'' -type=merge} --type=merge1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- La valeur
forceRedeploymentReasondoit être unique, c'est pourquoi un horodatage est ajouté.
Vérifiez qu'il y a exactement trois membres etcd.
Se connecter au conteneur etcd en cours d'exécution, en passant le nom d'un pod qui n'était pas sur le nœud affecté :
Dans un terminal ayant accès au cluster en tant qu'utilisateur
cluster-admin, exécutez la commande suivante :oc rsh -n openshift-etcd etcd-ip-10-0-154-204.ec2.internal
$ oc rsh -n openshift-etcd etcd-ip-10-0-154-204.ec2.internalCopy to Clipboard Copied! Toggle word wrap Toggle overflow Consulter la liste des membres :
etcdctl member list -w table
sh-4.2# etcdctl member list -w tableCopy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Si la sortie de la commande précédente répertorie plus de trois membres etcd, vous devez supprimer avec précaution le membre indésirable.
AvertissementVeillez à supprimer le bon membre etcd ; la suppression d'un bon membre etcd peut entraîner une perte de quorum.
5.2.4.2. Remplacement d'un membre etcd en mauvaise santé dont le pod etcd est en crashlooping Copier lienLien copié sur presse-papiers!
Cette procédure détaille les étapes à suivre pour remplacer un membre etcd qui n'est pas en bonne santé parce que le pod etcd fait du crashlooping.
Conditions préalables
- Vous avez identifié le membre etcd malsain.
- Vous avez vérifié que le pod etcd fait du crashlooping.
-
Vous avez accès au cluster en tant qu'utilisateur ayant le rôle
cluster-admin. Vous avez effectué une sauvegarde etcd.
ImportantIl est important de faire une sauvegarde d'etcd avant d'effectuer cette procédure afin de pouvoir restaurer votre cluster en cas de problème.
Procédure
Arrêter le pod etcd de crashlooping.
Déboguer le nœud qui fait du crashlooping.
Dans un terminal ayant accès au cluster en tant qu'utilisateur
cluster-admin, exécutez la commande suivante :oc debug node/ip-10-0-131-183.ec2.internal
oc debug node/ip-10-0-131-183.ec2.internal1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Remplacez ce nom par le nom du nœud malsain.
Changez votre répertoire racine en
/host:chroot /host
sh-4.2# chroot /hostCopy to Clipboard Copied! Toggle word wrap Toggle overflow Déplacer le fichier pod etcd existant hors du répertoire kubelet manifest :
mkdir /var/lib/etcd-backup
sh-4.2# mkdir /var/lib/etcd-backupCopy to Clipboard Copied! Toggle word wrap Toggle overflow mv /etc/kubernetes/manifests/etcd-pod.yaml /var/lib/etcd-backup/
sh-4.2# mv /etc/kubernetes/manifests/etcd-pod.yaml /var/lib/etcd-backup/Copy to Clipboard Copied! Toggle word wrap Toggle overflow Déplacez le répertoire de données etcd vers un autre emplacement :
mv /var/lib/etcd/ /tmp
sh-4.2# mv /var/lib/etcd/ /tmpCopy to Clipboard Copied! Toggle word wrap Toggle overflow Vous pouvez maintenant quitter le shell du nœud.
Retirer l'élément malsain.
Choisissez un pod qui est not sur le nœud affecté.
Dans un terminal ayant accès au cluster en tant qu'utilisateur
cluster-admin, exécutez la commande suivante :oc -n openshift-etcd get pods -l k8s-app=etcd
$ oc -n openshift-etcd get pods -l k8s-app=etcdCopy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
etcd-ip-10-0-131-183.ec2.internal 2/3 Error 7 6h9m etcd-ip-10-0-164-97.ec2.internal 3/3 Running 0 6h6m etcd-ip-10-0-154-204.ec2.internal 3/3 Running 0 6h6m
etcd-ip-10-0-131-183.ec2.internal 2/3 Error 7 6h9m etcd-ip-10-0-164-97.ec2.internal 3/3 Running 0 6h6m etcd-ip-10-0-154-204.ec2.internal 3/3 Running 0 6h6mCopy to Clipboard Copied! Toggle word wrap Toggle overflow Se connecter au conteneur etcd en cours d'exécution, en passant le nom d'un pod qui n'est pas sur le nœud affecté.
Dans un terminal ayant accès au cluster en tant qu'utilisateur
cluster-admin, exécutez la commande suivante :oc rsh -n openshift-etcd etcd-ip-10-0-154-204.ec2.internal
$ oc rsh -n openshift-etcd etcd-ip-10-0-154-204.ec2.internalCopy to Clipboard Copied! Toggle word wrap Toggle overflow Consulter la liste des membres :
etcdctl member list -w table
sh-4.2# etcdctl member list -w tableCopy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Notez l'ID et le nom du membre etcd malsain, car ces valeurs seront nécessaires plus tard dans la procédure.
Supprimez le membre etcd malsain en fournissant l'ID à la commande
etcdctl member remove:etcdctl member remove 62bcf33650a7170a
sh-4.2# etcdctl member remove 62bcf33650a7170aCopy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
Member 62bcf33650a7170a removed from cluster ead669ce1fbfb346
Member 62bcf33650a7170a removed from cluster ead669ce1fbfb346Copy to Clipboard Copied! Toggle word wrap Toggle overflow Consultez à nouveau la liste des membres et vérifiez que le membre a bien été supprimé :
etcdctl member list -w table
sh-4.2# etcdctl member list -w tableCopy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Vous pouvez maintenant quitter le shell du nœud.
Désactivez la garde du quorum en entrant la commande suivante :
oc patch etcd/cluster --type=merge -p '{"spec": {"unsupportedConfigOverrides": {"useUnsupportedUnsafeNonHANonProductionUnstableEtcd": true}}}'$ oc patch etcd/cluster --type=merge -p '{"spec": {"unsupportedConfigOverrides": {"useUnsupportedUnsafeNonHANonProductionUnstableEtcd": true}}}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow Cette commande permet de s'assurer que vous pouvez recréer les secrets et déployer les pods statiques avec succès.
Supprime les anciens secrets du membre etcd malsain qui a été supprimé.
Liste les secrets du membre etcd malsain qui a été supprimé.
oc get secrets -n openshift-etcd | grep ip-10-0-131-183.ec2.internal
$ oc get secrets -n openshift-etcd | grep ip-10-0-131-183.ec2.internal1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Saisissez le nom du membre etcd malsain dont vous avez pris note plus tôt dans cette procédure.
Il y a un pair, un serveur et un secret de métrique, comme le montre la sortie suivante :
Exemple de sortie
etcd-peer-ip-10-0-131-183.ec2.internal kubernetes.io/tls 2 47m etcd-serving-ip-10-0-131-183.ec2.internal kubernetes.io/tls 2 47m etcd-serving-metrics-ip-10-0-131-183.ec2.internal kubernetes.io/tls 2 47m
etcd-peer-ip-10-0-131-183.ec2.internal kubernetes.io/tls 2 47m etcd-serving-ip-10-0-131-183.ec2.internal kubernetes.io/tls 2 47m etcd-serving-metrics-ip-10-0-131-183.ec2.internal kubernetes.io/tls 2 47mCopy to Clipboard Copied! Toggle word wrap Toggle overflow Supprime les secrets du membre etcd malsain qui a été supprimé.
Supprimer le secret de l'homologue :
oc delete secret -n openshift-etcd etcd-peer-ip-10-0-131-183.ec2.internal
$ oc delete secret -n openshift-etcd etcd-peer-ip-10-0-131-183.ec2.internalCopy to Clipboard Copied! Toggle word wrap Toggle overflow Supprimer le secret de service :
oc delete secret -n openshift-etcd etcd-serving-ip-10-0-131-183.ec2.internal
$ oc delete secret -n openshift-etcd etcd-serving-ip-10-0-131-183.ec2.internalCopy to Clipboard Copied! Toggle word wrap Toggle overflow Supprimer le secret des métriques :
oc delete secret -n openshift-etcd etcd-serving-metrics-ip-10-0-131-183.ec2.internal
$ oc delete secret -n openshift-etcd etcd-serving-metrics-ip-10-0-131-183.ec2.internalCopy to Clipboard Copied! Toggle word wrap Toggle overflow
Forcer le redéploiement de etcd.
Dans un terminal ayant accès au cluster en tant qu'utilisateur
cluster-admin, exécutez la commande suivante :oc patch etcd cluster -p='{"spec" : {\i1}"forceRedeploymentReason" : \N "single-master-recovery-'\N"$( date --rfc-3339=ns )'\N"}'' -type=merge} --type=merge$ oc patch etcd cluster -p='{"spec" : {\i1}"forceRedeploymentReason" : \N "single-master-recovery-'\N"$( date --rfc-3339=ns )'\N"}'' -type=merge} --type=merge1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- La valeur
forceRedeploymentReasondoit être unique, c'est pourquoi un horodatage est ajouté.
Lorsque l'opérateur de cluster etcd effectue un redéploiement, il s'assure que tous les nœuds du plan de contrôle disposent d'un pod etcd fonctionnel.
Réactivez la garde du quorum en entrant la commande suivante :
oc patch etcd/cluster --type=merge -p '{"spec": {"unsupportedConfigOverrides": null}}'$ oc patch etcd/cluster --type=merge -p '{"spec": {"unsupportedConfigOverrides": null}}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow Vous pouvez vérifier que la section
unsupportedConfigOverridesest supprimée de l'objet en entrant cette commande :oc get etcd/cluster -oyaml
$ oc get etcd/cluster -oyamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow Si vous utilisez OpenShift à nœud unique, redémarrez le nœud. Sinon, vous risquez de rencontrer l'erreur suivante dans l'opérateur de cluster etcd :
Exemple de sortie
EtcdCertSignerControllerDegraded: [Operation cannot be fulfilled on secrets "etcd-peer-sno-0": the object has been modified; please apply your changes to the latest version and try again, Operation cannot be fulfilled on secrets "etcd-serving-sno-0": the object has been modified; please apply your changes to the latest version and try again, Operation cannot be fulfilled on secrets "etcd-serving-metrics-sno-0": the object has been modified; please apply your changes to the latest version and try again]
EtcdCertSignerControllerDegraded: [Operation cannot be fulfilled on secrets "etcd-peer-sno-0": the object has been modified; please apply your changes to the latest version and try again, Operation cannot be fulfilled on secrets "etcd-serving-sno-0": the object has been modified; please apply your changes to the latest version and try again, Operation cannot be fulfilled on secrets "etcd-serving-metrics-sno-0": the object has been modified; please apply your changes to the latest version and try again]Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Vérification
Vérifier que le nouveau membre est disponible et en bonne santé.
Connectez-vous à nouveau au conteneur etcd en cours d'exécution.
Dans un terminal ayant accès au cluster en tant qu'utilisateur cluster-admin, exécutez la commande suivante :
oc rsh -n openshift-etcd etcd-ip-10-0-154-204.ec2.internal
$ oc rsh -n openshift-etcd etcd-ip-10-0-154-204.ec2.internalCopy to Clipboard Copied! Toggle word wrap Toggle overflow Vérifier que tous les membres sont en bonne santé :
etcdctl endpoint health
sh-4.2# etcdctl endpoint healthCopy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
https://10.0.131.183:2379 is healthy: successfully committed proposal: took = 16.671434ms https://10.0.154.204:2379 is healthy: successfully committed proposal: took = 16.698331ms https://10.0.164.97:2379 is healthy: successfully committed proposal: took = 16.621645ms
https://10.0.131.183:2379 is healthy: successfully committed proposal: took = 16.671434ms https://10.0.154.204:2379 is healthy: successfully committed proposal: took = 16.698331ms https://10.0.164.97:2379 is healthy: successfully committed proposal: took = 16.621645msCopy to Clipboard Copied! Toggle word wrap Toggle overflow
5.2.4.3. Remplacement d'un membre etcd bare metal en mauvaise santé dont la machine ne fonctionne pas ou dont le nœud n'est pas prêt Copier lienLien copié sur presse-papiers!
Cette procédure détaille les étapes à suivre pour remplacer un membre etcd en métal nu qui n'est pas en bonne santé, soit parce que la machine ne fonctionne pas, soit parce que le nœud n'est pas prêt.
Si vous exécutez une infrastructure fournie par l'installateur ou si vous avez utilisé l'API Machine pour créer vos machines, suivez ces étapes. Sinon, vous devez créer le nouveau nœud de plan de contrôle en utilisant la même méthode que celle utilisée pour le créer à l'origine.
Conditions préalables
- Vous avez identifié le membre malsain de bare metal etcd.
- Vous avez vérifié que la machine n'est pas en cours d'exécution ou que le nœud n'est pas prêt.
-
Vous avez accès au cluster en tant qu'utilisateur ayant le rôle
cluster-admin. Vous avez effectué une sauvegarde etcd.
ImportantVous devez effectuer une sauvegarde d'etcd avant d'exécuter cette procédure afin de pouvoir restaurer votre cluster en cas de problème.
Procédure
Vérifiez et supprimez le membre malsain.
Choisissez un pod qui est not sur le nœud affecté :
Dans un terminal ayant accès au cluster en tant qu'utilisateur
cluster-admin, exécutez la commande suivante :oc -n openshift-etcd get pods -l k8s-app=etcd -o wide
$ oc -n openshift-etcd get pods -l k8s-app=etcd -o wideCopy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
etcd-openshift-control-plane-0 5/5 Running 11 3h56m 192.168.10.9 openshift-control-plane-0 <none> <none> etcd-openshift-control-plane-1 5/5 Running 0 3h54m 192.168.10.10 openshift-control-plane-1 <none> <none> etcd-openshift-control-plane-2 5/5 Running 0 3h58m 192.168.10.11 openshift-control-plane-2 <none> <none>
etcd-openshift-control-plane-0 5/5 Running 11 3h56m 192.168.10.9 openshift-control-plane-0 <none> <none> etcd-openshift-control-plane-1 5/5 Running 0 3h54m 192.168.10.10 openshift-control-plane-1 <none> <none> etcd-openshift-control-plane-2 5/5 Running 0 3h58m 192.168.10.11 openshift-control-plane-2 <none> <none>Copy to Clipboard Copied! Toggle word wrap Toggle overflow Se connecter au conteneur etcd en cours d'exécution, en passant le nom d'un pod qui n'est pas sur le nœud affecté :
Dans un terminal ayant accès au cluster en tant qu'utilisateur
cluster-admin, exécutez la commande suivante :oc rsh -n openshift-etcd etcd-openshift-control-plane-0
$ oc rsh -n openshift-etcd etcd-openshift-control-plane-0Copy to Clipboard Copied! Toggle word wrap Toggle overflow Consulter la liste des membres :
etcdctl member list -w table
sh-4.2# etcdctl member list -w tableCopy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Notez l'ID et le nom du membre etcd malsain, car ces valeurs seront nécessaires plus tard dans la procédure. La commande
etcdctl endpoint healthlistera le membre supprimé jusqu'à ce que la procédure de remplacement soit terminée et que le nouveau membre soit ajouté.Supprimez le membre etcd malsain en fournissant l'ID à la commande
etcdctl member remove:AvertissementVeillez à supprimer le bon membre etcd ; la suppression d'un bon membre etcd peut entraîner une perte de quorum.
etcdctl member remove 7a8197040a5126c8
sh-4.2# etcdctl member remove 7a8197040a5126c8Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
Member 7a8197040a5126c8 removed from cluster b23536c33f2cdd1b
Member 7a8197040a5126c8 removed from cluster b23536c33f2cdd1bCopy to Clipboard Copied! Toggle word wrap Toggle overflow Consultez à nouveau la liste des membres et vérifiez que le membre a bien été supprimé :
etcdctl member list -w table
sh-4.2# etcdctl member list -w tableCopy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Vous pouvez maintenant quitter le shell du nœud.
ImportantAprès avoir supprimé le membre, le cluster peut être inaccessible pendant une courte période, le temps que les instances etcd restantes redémarrent.
Désactivez la garde du quorum en entrant la commande suivante :
oc patch etcd/cluster --type=merge -p '{"spec": {"unsupportedConfigOverrides": {"useUnsupportedUnsafeNonHANonProductionUnstableEtcd": true}}}'$ oc patch etcd/cluster --type=merge -p '{"spec": {"unsupportedConfigOverrides": {"useUnsupportedUnsafeNonHANonProductionUnstableEtcd": true}}}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow Cette commande permet de s'assurer que vous pouvez recréer les secrets et déployer les pods statiques avec succès.
Supprimez les anciens secrets du membre etcd malsain qui a été supprimé en exécutant les commandes suivantes.
Liste les secrets du membre etcd malsain qui a été supprimé.
oc get secrets -n openshift-etcd | grep openshift-control-plane-2
$ oc get secrets -n openshift-etcd | grep openshift-control-plane-2Copy to Clipboard Copied! Toggle word wrap Toggle overflow Saisissez le nom du membre etcd malsain dont vous avez pris note plus tôt dans cette procédure.
Il y a un pair, un serveur et un secret de métrique, comme le montre la sortie suivante :
etcd-peer-openshift-control-plane-2 kubernetes.io/tls 2 134m etcd-serving-metrics-openshift-control-plane-2 kubernetes.io/tls 2 134m etcd-serving-openshift-control-plane-2 kubernetes.io/tls 2 134m
etcd-peer-openshift-control-plane-2 kubernetes.io/tls 2 134m etcd-serving-metrics-openshift-control-plane-2 kubernetes.io/tls 2 134m etcd-serving-openshift-control-plane-2 kubernetes.io/tls 2 134mCopy to Clipboard Copied! Toggle word wrap Toggle overflow Supprime les secrets du membre etcd malsain qui a été supprimé.
Supprimer le secret de l'homologue :
oc delete secret etcd-peer-openshift-control-plane-2 -n openshift-etcd secret "etcd-peer-openshift-control-plane-2" deleted
$ oc delete secret etcd-peer-openshift-control-plane-2 -n openshift-etcd secret "etcd-peer-openshift-control-plane-2" deletedCopy to Clipboard Copied! Toggle word wrap Toggle overflow Supprimer le secret de service :
oc delete secret etcd-serving-metrics-openshift-control-plane-2 -n openshift-etcd secret "etcd-serving-metrics-openshift-control-plane-2" deleted
$ oc delete secret etcd-serving-metrics-openshift-control-plane-2 -n openshift-etcd secret "etcd-serving-metrics-openshift-control-plane-2" deletedCopy to Clipboard Copied! Toggle word wrap Toggle overflow Supprimer le secret des métriques :
oc delete secret etcd-serving-openshift-control-plane-2 -n openshift-etcd secret "etcd-serving-openshift-control-plane-2" deleted
$ oc delete secret etcd-serving-openshift-control-plane-2 -n openshift-etcd secret "etcd-serving-openshift-control-plane-2" deletedCopy to Clipboard Copied! Toggle word wrap Toggle overflow
Supprimer la machine du plan de contrôle.
Si vous exécutez une infrastructure fournie par l'installateur ou si vous avez utilisé l'API Machine pour créer vos machines, suivez ces étapes. Sinon, vous devez créer le nouveau nœud de plan de contrôle en utilisant la même méthode que celle utilisée pour le créer à l'origine.
Obtenir la machine pour le membre en mauvaise santé.
Dans un terminal ayant accès au cluster en tant qu'utilisateur
cluster-admin, exécutez la commande suivante :oc get machines -n openshift-machine-api -o wide
$ oc get machines -n openshift-machine-api -o wideCopy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Il s'agit de la machine du plan de contrôle pour le nœud malsain,
examplecluster-control-plane-2.
Enregistrez la configuration de la machine dans un fichier sur votre système de fichiers :
oc get machine examplecluster-control-plane-2 \ -n openshift-machine-api \ -o yaml \ > new-master-machine.yaml$ oc get machine examplecluster-control-plane-2 \1 -n openshift-machine-api \ -o yaml \ > new-master-machine.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Indiquez le nom de la machine du plan de contrôle pour le nœud malsain.
Modifiez le fichier
new-master-machine.yamlcréé à l'étape précédente pour lui attribuer un nouveau nom et supprimer les champs inutiles.Retirer toute la section
status:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Changez le nom du champ
metadata.name.Il est recommandé de conserver le même nom de base que l'ancienne machine et de remplacer le numéro de fin par le prochain numéro disponible. Dans cet exemple,
examplecluster-control-plane-2est remplacé parexamplecluster-control-plane-3.Par exemple :
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Supprimer le champ
spec.providerID:providerID: baremetalhost:///openshift-machine-api/openshift-control-plane-2/3354bdac-61d8-410f-be5b-6a395b056135
providerID: baremetalhost:///openshift-machine-api/openshift-control-plane-2/3354bdac-61d8-410f-be5b-6a395b056135Copy to Clipboard Copied! Toggle word wrap Toggle overflow Supprimer les champs
metadata.annotationsetmetadata.generation:annotations: machine.openshift.io/instance-state: externally provisioned ... generation: 2annotations: machine.openshift.io/instance-state: externally provisioned ... generation: 2Copy to Clipboard Copied! Toggle word wrap Toggle overflow Supprimer les champs
spec.conditions,spec.lastUpdated,spec.nodeRefetspec.phase:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Assurez-vous que l'opérateur Bare Metal est disponible en exécutant la commande suivante :
oc get clusteroperator baremetal
$ oc get clusteroperator baremetalCopy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
NAME VERSION AVAILABLE PROGRESSING DEGRADED SINCE MESSAGE baremetal 4.12.0 True False False 3d15h
NAME VERSION AVAILABLE PROGRESSING DEGRADED SINCE MESSAGE baremetal 4.12.0 True False False 3d15hCopy to Clipboard Copied! Toggle word wrap Toggle overflow Supprimez l'ancien objet
BareMetalHosten exécutant la commande suivante :oc delete bmh openshift-control-plane-2 -n openshift-machine-api
$ oc delete bmh openshift-control-plane-2 -n openshift-machine-apiCopy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
baremetalhost.metal3.io "openshift-control-plane-2" deleted
baremetalhost.metal3.io "openshift-control-plane-2" deletedCopy to Clipboard Copied! Toggle word wrap Toggle overflow Supprimez la machine du membre malsain en exécutant la commande suivante :
oc delete machine -n openshift-machine-api examplecluster-control-plane-2
$ oc delete machine -n openshift-machine-api examplecluster-control-plane-2Copy to Clipboard Copied! Toggle word wrap Toggle overflow Après avoir supprimé les objets
BareMetalHostetMachine, le contrôleurMachinesupprime automatiquement l'objetNode.Si la suppression de la machine est retardée pour une raison quelconque ou si la commande est entravée et retardée, vous pouvez forcer la suppression en supprimant le champ finalizer de l'objet machine.
ImportantN'interrompez pas l'effacement de la machine en appuyant sur
Ctrl c. Vous devez laisser la commande se dérouler jusqu'à son terme. Ouvrez une nouvelle fenêtre de terminal pour éditer et supprimer les champs du finalisateur.Modifiez la configuration de la machine en exécutant la commande suivante :
oc edit machine -n openshift-machine-api examplecluster-control-plane-2
$ oc edit machine -n openshift-machine-api examplecluster-control-plane-2Copy to Clipboard Copied! Toggle word wrap Toggle overflow Supprimez les champs suivants dans la ressource personnalisée
Machine, puis enregistrez le fichier mis à jour :finalizers: - machine.machine.openshift.io
finalizers: - machine.machine.openshift.ioCopy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
machine.machine.openshift.io/examplecluster-control-plane-2 edited
machine.machine.openshift.io/examplecluster-control-plane-2 editedCopy to Clipboard Copied! Toggle word wrap Toggle overflow
Vérifiez que la machine a été supprimée en exécutant la commande suivante :
oc get machines -n openshift-machine-api -o wide
$ oc get machines -n openshift-machine-api -o wideCopy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
NAME PHASE TYPE REGION ZONE AGE NODE PROVIDERID STATE examplecluster-control-plane-0 Running 3h11m openshift-control-plane-0 baremetalhost:///openshift-machine-api/openshift-control-plane-0/da1ebe11-3ff2-41c5-b099-0aa41222964e externally provisioned examplecluster-control-plane-1 Running 3h11m openshift-control-plane-1 baremetalhost:///openshift-machine-api/openshift-control-plane-1/d9f9acbc-329c-475e-8d81-03b20280a3e1 externally provisioned examplecluster-compute-0 Running 165m openshift-compute-0 baremetalhost:///openshift-machine-api/openshift-compute-0/3d685b81-7410-4bb3-80ec-13a31858241f provisioned examplecluster-compute-1 Running 165m openshift-compute-1 baremetalhost:///openshift-machine-api/openshift-compute-1/0fdae6eb-2066-4241-91dc-e7ea72ab13b9 provisioned
NAME PHASE TYPE REGION ZONE AGE NODE PROVIDERID STATE examplecluster-control-plane-0 Running 3h11m openshift-control-plane-0 baremetalhost:///openshift-machine-api/openshift-control-plane-0/da1ebe11-3ff2-41c5-b099-0aa41222964e externally provisioned examplecluster-control-plane-1 Running 3h11m openshift-control-plane-1 baremetalhost:///openshift-machine-api/openshift-control-plane-1/d9f9acbc-329c-475e-8d81-03b20280a3e1 externally provisioned examplecluster-compute-0 Running 165m openshift-compute-0 baremetalhost:///openshift-machine-api/openshift-compute-0/3d685b81-7410-4bb3-80ec-13a31858241f provisioned examplecluster-compute-1 Running 165m openshift-compute-1 baremetalhost:///openshift-machine-api/openshift-compute-1/0fdae6eb-2066-4241-91dc-e7ea72ab13b9 provisionedCopy to Clipboard Copied! Toggle word wrap Toggle overflow Vérifiez que le nœud a été supprimé en exécutant la commande suivante :
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Créez le nouvel objet
BareMetalHostet le secret pour stocker les informations d'identification BMC :Copy to Clipboard Copied! Toggle word wrap Toggle overflow NoteLe nom d'utilisateur et le mot de passe peuvent être trouvés dans les secrets de l'autre hôte bare metal. Le protocole à utiliser dans
bmc:addresspeut être obtenu à partir d'autres objets bmh.ImportantSi vous réutilisez la définition de l'objet
BareMetalHostà partir d'un hôte de plan de contrôle existant, ne laissez pas le champexternallyProvisionedsurtrue.Les objets du plan de contrôle
BareMetalHostexistants peuvent avoir l'indicateurexternallyProvisioneddéfini surtrues'ils ont été provisionnés par le programme d'installation d'OpenShift Container Platform.Une fois l'inspection terminée, l'objet
BareMetalHostest créé et disponible pour être approvisionné.Vérifier le processus de création à l'aide des objets disponibles sur
BareMetalHost:Copy to Clipboard Copied! Toggle word wrap Toggle overflow Créez la nouvelle machine du plan de contrôle à l'aide du fichier
new-master-machine.yaml:oc apply -f new-master-machine.yaml
$ oc apply -f new-master-machine.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow Vérifiez que la nouvelle machine a été créée :
oc get machines -n openshift-machine-api -o wide
$ oc get machines -n openshift-machine-api -o wideCopy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- La nouvelle machine,
clustername-8qw5l-master-3, est en cours de création et sera prête après le changement de phase deProvisioningàRunning.
La création de la nouvelle machine devrait prendre quelques minutes. L'opérateur du cluster etcd se synchronisera automatiquement lorsque la machine ou le nœud reviendra à un état sain.
Vérifiez que l'hôte bare metal est provisionné et qu'aucune erreur n'est signalée en exécutant la commande suivante :
oc get bmh -n openshift-machine-api
$ oc get bmh -n openshift-machine-apiCopy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Vérifiez que le nouveau nœud est ajouté et prêt à fonctionner en exécutant la commande suivante :
oc get nodes
$ oc get nodesCopy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Réactivez la garde du quorum en entrant la commande suivante :
oc patch etcd/cluster --type=merge -p '{"spec": {"unsupportedConfigOverrides": null}}'$ oc patch etcd/cluster --type=merge -p '{"spec": {"unsupportedConfigOverrides": null}}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow Vous pouvez vérifier que la section
unsupportedConfigOverridesest supprimée de l'objet en entrant cette commande :oc get etcd/cluster -oyaml
$ oc get etcd/cluster -oyamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow Si vous utilisez OpenShift à nœud unique, redémarrez le nœud. Sinon, vous risquez de rencontrer l'erreur suivante dans l'opérateur de cluster etcd :
Exemple de sortie
EtcdCertSignerControllerDegraded: [Operation cannot be fulfilled on secrets "etcd-peer-sno-0": the object has been modified; please apply your changes to the latest version and try again, Operation cannot be fulfilled on secrets "etcd-serving-sno-0": the object has been modified; please apply your changes to the latest version and try again, Operation cannot be fulfilled on secrets "etcd-serving-metrics-sno-0": the object has been modified; please apply your changes to the latest version and try again]
EtcdCertSignerControllerDegraded: [Operation cannot be fulfilled on secrets "etcd-peer-sno-0": the object has been modified; please apply your changes to the latest version and try again, Operation cannot be fulfilled on secrets "etcd-serving-sno-0": the object has been modified; please apply your changes to the latest version and try again, Operation cannot be fulfilled on secrets "etcd-serving-metrics-sno-0": the object has been modified; please apply your changes to the latest version and try again]Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Vérification
Vérifiez que tous les pods etcd fonctionnent correctement.
Dans un terminal ayant accès au cluster en tant qu'utilisateur
cluster-admin, exécutez la commande suivante :oc -n openshift-etcd get pods -l k8s-app=etcd
$ oc -n openshift-etcd get pods -l k8s-app=etcdCopy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
etcd-openshift-control-plane-0 5/5 Running 0 105m etcd-openshift-control-plane-1 5/5 Running 0 107m etcd-openshift-control-plane-2 5/5 Running 0 103m
etcd-openshift-control-plane-0 5/5 Running 0 105m etcd-openshift-control-plane-1 5/5 Running 0 107m etcd-openshift-control-plane-2 5/5 Running 0 103mCopy to Clipboard Copied! Toggle word wrap Toggle overflow Si la sortie de la commande précédente n'indique que deux pods, vous pouvez forcer manuellement un redéploiement d'etcd. Dans un terminal ayant accès au cluster en tant qu'utilisateur
cluster-admin, exécutez la commande suivante :oc patch etcd cluster -p='{"spec" : {\i1}"forceRedeploymentReason" : \N-"recovery-'\N"$( date --rfc-3339=ns )'\N'\N"}'' -type=merge} --type=merge$ oc patch etcd cluster -p='{"spec" : {\i1}"forceRedeploymentReason" : \N-"recovery-'\N"$( date --rfc-3339=ns )'\N'\N"}'' -type=merge} --type=merge1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- La valeur
forceRedeploymentReasondoit être unique, c'est pourquoi un horodatage est ajouté.
Pour vérifier qu'il y a exactement trois membres etcd, connectez-vous au conteneur etcd en cours d'exécution, en indiquant le nom d'un pod qui n'était pas sur le nœud affecté. Dans un terminal ayant accès au cluster en tant qu'utilisateur
cluster-admin, exécutez la commande suivante :oc rsh -n openshift-etcd etcd-openshift-control-plane-0
$ oc rsh -n openshift-etcd etcd-openshift-control-plane-0Copy to Clipboard Copied! Toggle word wrap Toggle overflow Consulter la liste des membres :
etcdctl member list -w table
sh-4.2# etcdctl member list -w tableCopy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
Copy to Clipboard Copied! Toggle word wrap Toggle overflow NoteSi la sortie de la commande précédente répertorie plus de trois membres etcd, vous devez supprimer avec précaution le membre indésirable.
Vérifiez que tous les membres d'etcd sont sains en exécutant la commande suivante :
etcdctl endpoint health --cluster
# etcdctl endpoint health --clusterCopy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
https://192.168.10.10:2379 is healthy: successfully committed proposal: took = 8.973065ms https://192.168.10.9:2379 is healthy: successfully committed proposal: took = 11.559829ms https://192.168.10.11:2379 is healthy: successfully committed proposal: took = 11.665203ms
https://192.168.10.10:2379 is healthy: successfully committed proposal: took = 8.973065ms https://192.168.10.9:2379 is healthy: successfully committed proposal: took = 11.559829ms https://192.168.10.11:2379 is healthy: successfully committed proposal: took = 11.665203msCopy to Clipboard Copied! Toggle word wrap Toggle overflow Validez que tous les nœuds sont à la dernière révision en exécutant la commande suivante :
oc get etcd -o=jsonpath='{range.items[0].status.conditions[?(@.type=="NodeInstallerProgressing")]}{.reason}{"\n"}{.message}{"\n"}'$ oc get etcd -o=jsonpath='{range.items[0].status.conditions[?(@.type=="NodeInstallerProgressing")]}{.reason}{"\n"}{.message}{"\n"}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow AllNodesAtLatestRevision
AllNodesAtLatestRevisionCopy to Clipboard Copied! Toggle word wrap Toggle overflow
5.3. Sauvegarde et restauration d'etcd sur un cluster hébergé Copier lienLien copié sur presse-papiers!
Si vous utilisez des plans de contrôle hébergés sur OpenShift Container Platform, le processus de sauvegarde et de restauration d'etcd est différent du processus de sauvegarde habituel d'etcd.
Les plans de contrôle hébergés sont une fonctionnalité d'aperçu technologique uniquement. Les fonctionnalités de l'aperçu technologique ne sont pas prises en charge par les accords de niveau de service (SLA) de production de Red Hat et peuvent ne pas être complètes sur le plan fonctionnel. Red Hat ne recommande pas de les utiliser en production. Ces fonctionnalités offrent un accès anticipé aux fonctionnalités des produits à venir, ce qui permet aux clients de tester les fonctionnalités et de fournir un retour d'information pendant le processus de développement.
Pour plus d'informations sur la portée de l'assistance des fonctionnalités de l'aperçu technologique de Red Hat, voir Portée de l'assistance des fonctionnalités de l'aperçu technologique.
5.3.1. Prendre un instantané d'etcd sur un cluster hébergé Copier lienLien copié sur presse-papiers!
Dans le cadre du processus de sauvegarde d'etcd pour un cluster hébergé, vous prenez un instantané d'etcd. Après avoir pris l'instantané, vous pouvez le restaurer, par exemple, dans le cadre d'une opération de reprise après sinistre.
Cette procédure nécessite un temps d'arrêt de l'API.
Procédure
Interrompez la réconciliation du cluster hébergé en entrant cette commande :
oc patch -n clusters hostedclusters/${CLUSTER_NAME} -p '{"spec":{"pausedUntil":"'${PAUSED_UNTIL}'"}}' --type=merge$ oc patch -n clusters hostedclusters/${CLUSTER_NAME} -p '{"spec":{"pausedUntil":"'${PAUSED_UNTIL}'"}}' --type=mergeCopy to Clipboard Copied! Toggle word wrap Toggle overflow Arrêtez tous les déploiements d'etcd-writer en entrant cette commande :
oc scale deployment -n ${HOSTED_CLUSTER_NAMESPACE} --replicas=0 kube-apiserver openshift-apiserver openshift-oauth-apiserver$ oc scale deployment -n ${HOSTED_CLUSTER_NAMESPACE} --replicas=0 kube-apiserver openshift-apiserver openshift-oauth-apiserverCopy to Clipboard Copied! Toggle word wrap Toggle overflow Prenez un instantané etcd en utilisant la commande
execdans chaque conteneur etcd :oc exec -it etcd-0 -n ${HOSTED_CLUSTER_NAMESPACE} -- env ETCDCTL_API=3 /usr/bin/etcdctl --cacert /etc/etcd/tls/client/etcd-client-ca.crt --cert /etc/etcd/tls/client/etcd-client.crt --key /etc/etcd/tls/client/etcd-client.key --endpoints=localhost:2379 snapshot save /var/lib/data/snapshot.db oc exec -it etcd-0 -n ${HOSTED_CLUSTER_NAMESPACE} -- env ETCDCTL_API=3 /usr/bin/etcdctl -w table snapshot status /var/lib/data/snapshot.db$ oc exec -it etcd-0 -n ${HOSTED_CLUSTER_NAMESPACE} -- env ETCDCTL_API=3 /usr/bin/etcdctl --cacert /etc/etcd/tls/client/etcd-client-ca.crt --cert /etc/etcd/tls/client/etcd-client.crt --key /etc/etcd/tls/client/etcd-client.key --endpoints=localhost:2379 snapshot save /var/lib/data/snapshot.db $ oc exec -it etcd-0 -n ${HOSTED_CLUSTER_NAMESPACE} -- env ETCDCTL_API=3 /usr/bin/etcdctl -w table snapshot status /var/lib/data/snapshot.dbCopy to Clipboard Copied! Toggle word wrap Toggle overflow Copiez les données de l'instantané vers un emplacement où vous pourrez les récupérer ultérieurement, tel qu'un seau S3, comme indiqué dans l'exemple suivant.
NoteL'exemple suivant utilise la version 2 de la signature. Si vous vous trouvez dans une région qui prend en charge la version 4 de la signature, comme la région us-east-2, utilisez la version 4 de la signature. Dans le cas contraire, si vous utilisez la version 2 de la signature pour copier l'instantané dans un seau S3, le téléchargement échoue et la version 2 de la signature est obsolète.
Exemple
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Si vous souhaitez pouvoir restaurer ultérieurement l'instantané sur un nouveau cluster, enregistrez le secret de chiffrement auquel le cluster hébergé fait référence, comme indiqué dans cet exemple :
Exemple
oc get hostedcluster $CLUSTER_NAME -o=jsonpath='{.spec.secretEncryption.aescbc}' {"activeKey":{"name":"CLUSTER_NAME-etcd-encryption-key"}} # Save this secret, or the key it contains so the etcd data can later be decrypted oc get secret ${CLUSTER_NAME}-etcd-encryption-key -o=jsonpath='{.data.key}'oc get hostedcluster $CLUSTER_NAME -o=jsonpath='{.spec.secretEncryption.aescbc}' {"activeKey":{"name":"CLUSTER_NAME-etcd-encryption-key"}} # Save this secret, or the key it contains so the etcd data can later be decrypted oc get secret ${CLUSTER_NAME}-etcd-encryption-key -o=jsonpath='{.data.key}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Prochaines étapes
Restaurer l'instantané etcd.
5.3.2. Restauration d'un snapshot etcd sur un cluster hébergé Copier lienLien copié sur presse-papiers!
Si vous avez un instantané d'etcd de votre cluster hébergé, vous pouvez le restaurer. Actuellement, vous ne pouvez restaurer un instantané etcd que lors de la création d'un cluster.
Pour restaurer un instantané etcd, vous modifiez la sortie de la commande create cluster --render et définissez une valeur restoreSnapshotURL dans la section etcd de la spécification HostedCluster.
Conditions préalables
Vous avez pris un instantané etcd sur un cluster hébergé.
Procédure
Sur l'interface de ligne de commande (CLI)
aws, créez une URL pré-signée afin de pouvoir télécharger votre instantané etcd depuis S3 sans transmettre d'informations d'identification au déploiement etcd :ETCD_SNAPSHOT=${ETCD_SNAPSHOT:-"s3://${BUCKET_NAME}/${CLUSTER_NAME}-snapshot.db"} ETCD_SNAPSHOT_URL=$(aws s3 presign ${ETCD_SNAPSHOT})ETCD_SNAPSHOT=${ETCD_SNAPSHOT:-"s3://${BUCKET_NAME}/${CLUSTER_NAME}-snapshot.db"} ETCD_SNAPSHOT_URL=$(aws s3 presign ${ETCD_SNAPSHOT})Copy to Clipboard Copied! Toggle word wrap Toggle overflow Modifier la spécification
HostedClusterpour faire référence à l'URL :Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
Assurez-vous que le secret que vous avez référencé à partir de la valeur
spec.secretEncryption.aescbccontient la même clé AES que celle que vous avez enregistrée dans les étapes précédentes.
5.4. Reprise après sinistre Copier lienLien copié sur presse-papiers!
5.4.1. À propos de la reprise après sinistre Copier lienLien copié sur presse-papiers!
La documentation sur la reprise après sinistre fournit des informations aux administrateurs sur la façon de reprendre après plusieurs situations de sinistre pouvant survenir avec leur cluster OpenShift Container Platform. En tant qu'administrateur, vous devrez peut-être suivre une ou plusieurs des procédures suivantes pour remettre votre cluster en état de fonctionnement.
La reprise après sinistre nécessite la présence d'au moins un hôte de plan de contrôle sain.
- Rétablissement d'un état antérieur de la grappe
Cette solution gère les situations où vous souhaitez restaurer votre cluster à un état antérieur, par exemple, si un administrateur supprime quelque chose de critique. Cela inclut également les situations où vous avez perdu la majorité de vos hôtes du plan de contrôle, ce qui entraîne la perte du quorum etcd et la mise hors ligne du cluster. Tant que vous avez effectué une sauvegarde etcd, vous pouvez suivre cette procédure pour restaurer votre cluster dans un état antérieur.
Le cas échéant, il peut également s'avérer nécessaire de récupérer des certificats de plan de contrôle expirés.
AvertissementLa restauration d'un état antérieur de la grappe est une action destructrice et déstabilisante pour une grappe en cours d'exécution. Cette procédure ne doit être utilisée qu'en dernier recours.
Avant d'effectuer une restauration, voir À propos de la restauration de l'état du cluster pour plus d'informations sur l'impact sur le cluster.
NoteSi la majorité de vos maîtres sont encore disponibles et que vous avez un quorum etcd, suivez la procédure pour remplacer un seul membre etcd en mauvaise santé.
- Récupération des certificats expirés du plan de contrôle
- Cette solution permet de gérer les situations où les certificats du plan de contrôle ont expiré. Par exemple, si vous arrêtez votre cluster avant la première rotation des certificats, qui a lieu 24 heures après l'installation, vos certificats ne seront pas renouvelés et expireront. Vous pouvez suivre cette procédure pour récupérer les certificats de plan de contrôle expirés.
5.4.2. Rétablissement d'un état antérieur de la grappe Copier lienLien copié sur presse-papiers!
Pour restaurer le cluster à un état antérieur, vous devez avoir préalablement sauvegardé les données etcd en créant un snapshot. Vous utiliserez cet instantané pour restaurer l'état du cluster.
5.4.2.1. À propos de la restauration de l'état des clusters Copier lienLien copié sur presse-papiers!
Vous pouvez utiliser une sauvegarde etcd pour restaurer votre cluster à un état antérieur. Cela peut être utilisé pour récupérer les situations suivantes :
- Le cluster a perdu la majorité des hôtes du plan de contrôle (perte de quorum).
- Un administrateur a supprimé un élément critique et doit restaurer le cluster.
La restauration d'un état antérieur de la grappe est une action destructrice et déstabilisante pour une grappe en cours d'exécution. Elle ne doit être utilisée qu'en dernier recours.
Si vous êtes en mesure de récupérer des données à l'aide du serveur API Kubernetes, alors etcd est disponible et vous ne devez pas restaurer à l'aide d'une sauvegarde etcd.
La restauration d'etcd ramène effectivement un cluster dans le temps et tous les clients connaîtront un historique parallèle et conflictuel. Cela peut avoir un impact sur le comportement des composants de surveillance tels que les kubelets, les gestionnaires de contrôleurs Kubernetes, les contrôleurs SDN et les contrôleurs de volumes persistants.
Les opérateurs du serveur API Kubernetes, du gestionnaire de contrôleur Kubernetes, du planificateur Kubernetes et de etcd peuvent se retrouver bloqués lorsque les fichiers sur le disque sont en conflit avec le contenu de etcd. Cela peut nécessiter des actions manuelles pour résoudre les problèmes.
Dans les cas extrêmes, le cluster peut perdre la trace des volumes persistants, supprimer des charges de travail critiques qui n'existent plus, réimager des machines et réécrire des bundles d'autorité de certification avec des certificats expirés.
5.4.2.2. Rétablissement d'un état antérieur de la grappe Copier lienLien copié sur presse-papiers!
Vous pouvez utiliser une sauvegarde etcd enregistrée pour restaurer un état antérieur du cluster ou restaurer un cluster qui a perdu la majorité des hôtes du plan de contrôle.
Si votre cluster utilise un jeu de machines de plan de contrôle, voir "Dépannage du jeu de machines de plan de contrôle" pour une procédure de récupération etcd plus simple.
Lorsque vous restaurez votre cluster, vous devez utiliser une sauvegarde etcd provenant de la même version de z-stream. Par exemple, un cluster OpenShift Container Platform 4.7.2 doit utiliser une sauvegarde etcd provenant de la version 4.7.2.
Conditions préalables
-
Accès au cluster en tant qu'utilisateur ayant le rôle
cluster-admin. - Un hôte de plan de contrôle sain à utiliser comme hôte de reprise.
- Accès SSH aux hôtes du plan de contrôle.
-
Un répertoire de sauvegarde contenant à la fois l'instantané etcd et les ressources pour les pods statiques, qui proviennent de la même sauvegarde. Les noms de fichiers dans le répertoire doivent être dans les formats suivants :
snapshot_<datetimestamp>.dbetstatic_kuberesources_<datetimestamp>.tar.gz.
Pour les nœuds de plan de contrôle sans récupération, il n'est pas nécessaire d'établir une connectivité SSH ou d'arrêter les pods statiques. Vous pouvez supprimer et recréer d'autres machines de plan de contrôle sans récupération, une par une.
Procédure
- Sélectionnez un hôte du plan de contrôle à utiliser comme hôte de restauration. Il s'agit de l'hôte sur lequel vous exécuterez l'opération de restauration.
Établir une connectivité SSH avec chacun des nœuds du plan de contrôle, y compris l'hôte de reprise.
Le serveur API Kubernetes devient inaccessible après le démarrage du processus de restauration, de sorte que vous ne pouvez pas accéder aux nœuds du plan de contrôle. Pour cette raison, il est recommandé d'établir une connectivité SSH à chaque hôte du plan de contrôle dans un terminal séparé.
ImportantSi vous n'effectuez pas cette étape, vous ne pourrez pas accéder aux hôtes du plan de contrôle pour terminer la procédure de restauration, et vous ne pourrez pas récupérer votre cluster à partir de cet état.
Copiez le répertoire de sauvegarde etcd sur l'hôte du plan de contrôle de reprise.
Cette procédure suppose que vous avez copié le répertoire
backupcontenant le snapshot etcd et les ressources pour les pods statiques dans le répertoire/home/core/de votre hôte de plan de contrôle de récupération.Arrêtez les pods statiques sur tous les autres nœuds du plan de contrôle.
NoteIl n'est pas nécessaire d'arrêter manuellement les pods sur l'hôte de récupération. Le script de récupération arrêtera les pods sur l'hôte de récupération.
- Accéder à un hôte du plan de contrôle qui n'est pas l'hôte de reprise.
Déplacer le fichier pod etcd existant hors du répertoire kubelet manifest :
sudo mv /etc/kubernetes/manifests/etcd-pod.yaml /tmp
$ sudo mv /etc/kubernetes/manifests/etcd-pod.yaml /tmpCopy to Clipboard Copied! Toggle word wrap Toggle overflow Vérifiez que les pods etcd sont arrêtés.
sudo crictl ps | grep etcd | egrep -v "operator|etcd-guard"
$ sudo crictl ps | grep etcd | egrep -v "operator|etcd-guard"Copy to Clipboard Copied! Toggle word wrap Toggle overflow La sortie de cette commande doit être vide. Si ce n'est pas le cas, attendez quelques minutes et vérifiez à nouveau.
Déplacez le fichier pod du serveur API Kubernetes existant hors du répertoire kubelet manifest :
sudo mv /etc/kubernetes/manifests/kube-apiserver-pod.yaml /tmp
$ sudo mv /etc/kubernetes/manifests/kube-apiserver-pod.yaml /tmpCopy to Clipboard Copied! Toggle word wrap Toggle overflow Vérifiez que les pods du serveur API Kubernetes sont arrêtés.
sudo crictl ps | grep kube-apiserver | egrep -v "operator|guard"
$ sudo crictl ps | grep kube-apiserver | egrep -v "operator|guard"Copy to Clipboard Copied! Toggle word wrap Toggle overflow La sortie de cette commande doit être vide. Si ce n'est pas le cas, attendez quelques minutes et vérifiez à nouveau.
Déplacez le répertoire de données etcd vers un autre emplacement :
sudo mv /var/lib/etcd/ /tmp
$ sudo mv /var/lib/etcd/ /tmpCopy to Clipboard Copied! Toggle word wrap Toggle overflow - Répétez cette étape sur chacun des autres hôtes du plan de contrôle qui n'est pas l'hôte de reprise.
- Accéder à l'hôte du plan de contrôle de récupération.
Si le proxy à l'échelle du cluster est activé, assurez-vous que vous avez exporté les variables d'environnement
NO_PROXY,HTTP_PROXY, etHTTPS_PROXY.AstuceVous pouvez vérifier si le proxy est activé en examinant la sortie de
oc get proxy cluster -o yaml. Le proxy est activé si les champshttpProxy,httpsProxyetnoProxyont des valeurs définies.Exécutez le script de restauration sur l'hôte du plan de contrôle de récupération et indiquez le chemin d'accès au répertoire de sauvegarde etcd :
sudo -E /usr/local/bin/cluster-restore.sh /home/core/backup
$ sudo -E /usr/local/bin/cluster-restore.sh /home/core/backupCopy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie de script
Copy to Clipboard Copied! Toggle word wrap Toggle overflow NoteLe processus de restauration peut entraîner l'entrée des nœuds dans l'état
NotReadysi les certificats des nœuds ont été mis à jour après la dernière sauvegarde etcd.Vérifiez que les nœuds sont dans l'état
Ready.Exécutez la commande suivante :
oc get nodes -w
$ oc get nodes -wCopy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Il peut s'écouler plusieurs minutes avant que tous les nœuds ne communiquent leur état.
Si des nœuds sont dans l'état
NotReady, connectez-vous aux nœuds et supprimez tous les fichiers PEM du répertoire/var/lib/kubelet/pkisur chaque nœud. Vous pouvez vous connecter aux nœuds par SSH ou utiliser la fenêtre de terminal de la console web.ssh -i <ssh-key-path> core@<master-hostname>
$ ssh -i <ssh-key-path> core@<master-hostname>Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de répertoire
pkipwd /var/lib/kubelet/pki ls kubelet-client-2022-04-28-11-24-09.pem kubelet-server-2022-04-28-11-24-15.pem kubelet-client-current.pem kubelet-server-current.pem
sh-4.4# pwd /var/lib/kubelet/pki sh-4.4# ls kubelet-client-2022-04-28-11-24-09.pem kubelet-server-2022-04-28-11-24-15.pem kubelet-client-current.pem kubelet-server-current.pemCopy to Clipboard Copied! Toggle word wrap Toggle overflow
Redémarrer le service kubelet sur tous les hôtes du plan de contrôle.
À partir de l'hôte de récupération, exécutez la commande suivante :
sudo systemctl restart kubelet.service
$ sudo systemctl restart kubelet.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow - Répétez cette étape sur tous les autres hôtes du plan de contrôle.
Approuver les RSC en attente :
Obtenir la liste des CSR actuels :
oc get csr
$ oc get csrCopy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Examinez les détails d'un CSR pour vérifier qu'il est valide :
oc describe csr <csr_name>
oc describe csr <csr_name>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
<csr_name>est le nom d'un CSR figurant dans la liste des CSR actuels.
Approuver chaque CSR
node-bootstrappervalide :oc adm certificate approve <csr_name>
$ oc adm certificate approve <csr_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow Pour les installations fournies par l'utilisateur, approuver chaque CSR de service kubelet valide :
oc adm certificate approve <csr_name>
$ oc adm certificate approve <csr_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Vérifiez que le plan de contrôle à membre unique a bien démarré.
Depuis l'hôte de récupération, vérifiez que le conteneur etcd est en cours d'exécution.
sudo crictl ps | grep etcd | grep -v operator
$ sudo crictl ps | grep etcd | grep -v operatorCopy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
3ad41b7908e32 36f86e2eeaaffe662df0d21041eb22b8198e0e58abeeae8c743c3e6e977e8009 About a minute ago Running etcd 0 7c05f8af362f0
3ad41b7908e32 36f86e2eeaaffe662df0d21041eb22b8198e0e58abeeae8c743c3e6e977e8009 About a minute ago Running etcd 0 7c05f8af362f0Copy to Clipboard Copied! Toggle word wrap Toggle overflow Depuis l'hôte de récupération, vérifiez que le pod etcd est en cours d'exécution.
oc -n openshift-etcd get pods -l k8s-app=etcd
$ oc -n openshift-etcd get pods -l k8s-app=etcdCopy to Clipboard Copied! Toggle word wrap Toggle overflow NoteSi vous essayez d'exécuter
oc loginavant d'exécuter cette commande et que vous recevez l'erreur suivante, attendez quelques instants pour que les contrôleurs d'authentification démarrent et réessayez.Unable to connect to the server: EOF
Unable to connect to the server: EOFCopy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
NAME READY STATUS RESTARTS AGE etcd-ip-10-0-143-125.ec2.internal 1/1 Running 1 2m47s
NAME READY STATUS RESTARTS AGE etcd-ip-10-0-143-125.ec2.internal 1/1 Running 1 2m47sCopy to Clipboard Copied! Toggle word wrap Toggle overflow Si l'état est
Pending, ou si la sortie indique plus d'un pod etcd en cours d'exécution, attendez quelques minutes et vérifiez à nouveau.
NoteN'effectuez l'étape suivante que si vous utilisez le plugin réseau
OVNKubernetes.Supprimer les objets nœuds associés aux hôtes du plan de contrôle qui ne sont pas l'hôte du plan de contrôle de reprise.
oc delete node <non-recovery-controlplane-host-1> <non-recovery-controlplane-host-2>
oc delete node <non-recovery-controlplane-host-1> <non-recovery-controlplane-host-2>Copy to Clipboard Copied! Toggle word wrap Toggle overflow Vérifier que le Cluster Network Operator (CNO) redéploie le plan de contrôle OVN-Kubernetes et qu'il ne référence plus les mauvaises adresses IP des contrôleurs. Pour vérifier ce résultat, vérifiez régulièrement la sortie de la commande suivante. Attendez qu'elle renvoie un résultat vide avant de passer à l'étape suivante.
oc -n openshift-ovn-kubernetes get ds/ovnkube-master -o yaml | grep -E '<wrong_master_ip_1>|<wrong_master_ip_2>'
$ oc -n openshift-ovn-kubernetes get ds/ovnkube-master -o yaml | grep -E '<wrong_master_ip_1>|<wrong_master_ip_2>'Copy to Clipboard Copied! Toggle word wrap Toggle overflow NoteCela peut prendre au moins 5 à 10 minutes pour que le plan de contrôle OVN-Kubernetes soit redéployé et que la commande précédente renvoie une sortie vide.
Désactivez la garde du quorum en entrant la commande suivante :
oc patch etcd/cluster --type=merge -p '{"spec": {"unsupportedConfigOverrides": {"useUnsupportedUnsafeNonHANonProductionUnstableEtcd": true}}}'$ oc patch etcd/cluster --type=merge -p '{"spec": {"unsupportedConfigOverrides": {"useUnsupportedUnsafeNonHANonProductionUnstableEtcd": true}}}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow Cette commande permet de s'assurer que vous pouvez recréer les secrets et déployer les pods statiques avec succès.
Redémarrez les pods Kubernetes d'Open Virtual Network (OVN) sur tous les hôtes.
NoteLes webhooks de validation et de mutation des admissions peuvent rejeter les pods. Si vous ajoutez d'autres webhooks dont l'adresse
failurePolicyestFail, ils peuvent rejeter des pods et le processus de restauration peut échouer. Vous pouvez éviter cela en sauvegardant et en supprimant les webhooks lors de la restauration de l'état de la grappe. Une fois l'état du cluster restauré avec succès, vous pouvez réactiver les webhooks.Vous pouvez également définir temporairement
failurePolicysurIgnorependant la restauration de l'état de la grappe. Une fois l'état de la grappe restauré avec succès, vous pouvez définirfailurePolicysurFail.Supprimez la base de données en direction du nord (nbdb) et la base de données en direction du sud (sbdb). Accédez à l'hôte de reprise et aux nœuds de plan de contrôle restants à l'aide de Secure Shell (SSH) et exécutez la commande suivante :
sudo rm -f /var/lib/ovn/etc/*.db
$ sudo rm -f /var/lib/ovn/etc/*.dbCopy to Clipboard Copied! Toggle word wrap Toggle overflow Supprimez tous les pods du plan de contrôle OVN-Kubernetes en exécutant la commande suivante :
oc delete pods -l app=ovnkube-master -n openshift-ovn-kubernetes
$ oc delete pods -l app=ovnkube-master -n openshift-ovn-kubernetesCopy to Clipboard Copied! Toggle word wrap Toggle overflow Assurez-vous que tous les pods du plan de contrôle OVN-Kubernetes sont à nouveau déployés et sont dans un état
Runningen exécutant la commande suivante :oc get pods -l app=ovnkube-master -n openshift-ovn-kubernetes
$ oc get pods -l app=ovnkube-master -n openshift-ovn-kubernetesCopy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
NAME READY STATUS RESTARTS AGE ovnkube-master-nb24h 4/4 Running 0 48s ovnkube-master-rm8kw 4/4 Running 0 47s ovnkube-master-zbqnh 4/4 Running 0 56s
NAME READY STATUS RESTARTS AGE ovnkube-master-nb24h 4/4 Running 0 48s ovnkube-master-rm8kw 4/4 Running 0 47s ovnkube-master-zbqnh 4/4 Running 0 56sCopy to Clipboard Copied! Toggle word wrap Toggle overflow Supprimez tous les pods
ovnkube-nodeen exécutant la commande suivante :oc get pods -n openshift-ovn-kubernetes -o name | grep ovnkube-node | while read p ; do oc delete $p -n openshift-ovn-kubernetes ; done
$ oc get pods -n openshift-ovn-kubernetes -o name | grep ovnkube-node | while read p ; do oc delete $p -n openshift-ovn-kubernetes ; doneCopy to Clipboard Copied! Toggle word wrap Toggle overflow Assurez-vous que tous les pods
ovnkube-nodesont à nouveau déployés et sont dans un étatRunningen exécutant la commande suivante :oc get pods -n openshift-ovn-kubernetes | grep ovnkube-node
$ oc get pods -n openshift-ovn-kubernetes | grep ovnkube-nodeCopy to Clipboard Copied! Toggle word wrap Toggle overflow
Supprimer et recréer les autres machines du plan de contrôle qui ne sont pas des machines de récupération, une par une. Une fois les machines recréées, une nouvelle révision est forcée et etcd passe automatiquement à l'échelle supérieure.
Si vous utilisez une installation bare metal fournie par l'utilisateur, vous pouvez recréer une machine de plan de contrôle en utilisant la même méthode que celle utilisée pour la créer à l'origine. Pour plus d'informations, voir "Installation d'un cluster fourni par l'utilisateur sur bare metal".
AvertissementNe supprimez pas et ne recréez pas la machine pour l'hôte de récupération.
Si vous utilisez une infrastructure fournie par l'installateur ou si vous avez utilisé l'API Machine pour créer vos machines, procédez comme suit :
AvertissementNe supprimez pas et ne recréez pas la machine pour l'hôte de récupération.
Pour les installations bare metal sur une infrastructure fournie par l'installateur, les machines du plan de contrôle ne sont pas recréées. Pour plus d'informations, voir "Remplacement d'un nœud de plan de contrôle bare-metal".
Obtenir la machine de l'un des hôtes du plan de contrôle perdus.
Dans un terminal ayant accès au cluster en tant qu'utilisateur cluster-admin, exécutez la commande suivante :
oc get machines -n openshift-machine-api -o wide
$ oc get machines -n openshift-machine-api -o wideCopy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie :
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Il s'agit de la machine du plan de contrôle de l'hôte du plan de contrôle perdu,
ip-10-0-131-183.ec2.internal.
Enregistrez la configuration de la machine dans un fichier sur votre système de fichiers :
oc get machine clustername-8qw5l-master-0 \ -n openshift-machine-api \ -o yaml \ > new-master-machine.yaml$ oc get machine clustername-8qw5l-master-0 \1 -n openshift-machine-api \ -o yaml \ > new-master-machine.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Indiquez le nom de la machine du plan de contrôle pour l'hôte du plan de contrôle perdu.
Modifiez le fichier
new-master-machine.yamlcréé à l'étape précédente pour lui attribuer un nouveau nom et supprimer les champs inutiles.Retirer toute la section
status:Copy to Clipboard Copied! Toggle word wrap Toggle overflow Changez le nom du champ
metadata.name.Il est recommandé de conserver le même nom de base que l'ancienne machine et de remplacer le numéro de fin par le prochain numéro disponible. Dans cet exemple,
clustername-8qw5l-master-0est remplacé parclustername-8qw5l-master-3:Copy to Clipboard Copied! Toggle word wrap Toggle overflow Supprimer le champ
spec.providerID:providerID: aws:///us-east-1a/i-0fdb85790d76d0c3f
providerID: aws:///us-east-1a/i-0fdb85790d76d0c3fCopy to Clipboard Copied! Toggle word wrap Toggle overflow Supprimer les champs
metadata.annotationsetmetadata.generation:annotations: machine.openshift.io/instance-state: running ... generation: 2
annotations: machine.openshift.io/instance-state: running ... generation: 2Copy to Clipboard Copied! Toggle word wrap Toggle overflow Supprimer les champs
metadata.resourceVersionetmetadata.uid:resourceVersion: "13291" uid: a282eb70-40a2-4e89-8009-d05dd420d31a
resourceVersion: "13291" uid: a282eb70-40a2-4e89-8009-d05dd420d31aCopy to Clipboard Copied! Toggle word wrap Toggle overflow
Supprimer la machine de l'hôte du plan de contrôle perdu :
oc delete machine -n openshift-machine-api clustername-8qw5l-master-0
oc delete machine -n openshift-machine-api clustername-8qw5l-master-01 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Indiquez le nom de la machine du plan de contrôle pour l'hôte du plan de contrôle perdu.
Vérifiez que la machine a été supprimée :
oc get machines -n openshift-machine-api -o wide
$ oc get machines -n openshift-machine-api -o wideCopy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie :
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Créez une machine en utilisant le fichier
new-master-machine.yaml:oc apply -f new-master-machine.yaml
$ oc apply -f new-master-machine.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow Vérifiez que la nouvelle machine a été créée :
oc get machines -n openshift-machine-api -o wide
$ oc get machines -n openshift-machine-api -o wideCopy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie :
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- La nouvelle machine,
clustername-8qw5l-master-3, est en cours de création et sera prête après le changement de phase deProvisioningàRunning.
La création de la nouvelle machine peut prendre quelques minutes. L'opérateur du cluster etcd se synchronisera automatiquement lorsque la machine ou le nœud reviendra à un état sain.
- Répétez ces étapes pour chaque hôte du plan de contrôle perdu qui n'est pas l'hôte de récupération.
Dans une fenêtre de terminal séparée, connectez-vous au cluster en tant qu'utilisateur ayant le rôle
cluster-adminen entrant la commande suivante :oc login -u <cluster_admin>
$ oc login -u <cluster_admin>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Pour
<cluster_admin>, indiquez un nom d'utilisateur avec le rôlecluster-admin.
Forcer le redéploiement de etcd.
Dans un terminal ayant accès au cluster en tant qu'utilisateur
cluster-admin, exécutez la commande suivante :oc patch etcd cluster -p='{"spec" : {\i1}"forceRedeploymentReason" : \N-"recovery-'\N"$( date --rfc-3339=ns )'\N'\N"}'' -type=merge} --type=merge$ oc patch etcd cluster -p='{"spec" : {\i1}"forceRedeploymentReason" : \N-"recovery-'\N"$( date --rfc-3339=ns )'\N'\N"}'' -type=merge} --type=merge1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- La valeur
forceRedeploymentReasondoit être unique, c'est pourquoi un horodatage est ajouté.
Lorsque l'opérateur du cluster etcd effectue un redéploiement, les nœuds existants sont démarrés avec de nouveaux pods, comme lors de la mise à l'échelle initiale.
Réactivez la garde du quorum en entrant la commande suivante :
oc patch etcd/cluster --type=merge -p '{"spec": {"unsupportedConfigOverrides": null}}'$ oc patch etcd/cluster --type=merge -p '{"spec": {"unsupportedConfigOverrides": null}}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow Vous pouvez vérifier que la section
unsupportedConfigOverridesest supprimée de l'objet en entrant cette commande :oc get etcd/cluster -oyaml
$ oc get etcd/cluster -oyamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow Vérifier que tous les nœuds sont mis à jour avec la dernière révision.
Dans un terminal ayant accès au cluster en tant qu'utilisateur
cluster-admin, exécutez la commande suivante :oc get etcd -o=jsonpath='{range .items[0].status.conditions[?(@.type=="NodeInstallerProgressing")]}{.reason}{"\n"}{.message}{"\n"}'$ oc get etcd -o=jsonpath='{range .items[0].status.conditions[?(@.type=="NodeInstallerProgressing")]}{.reason}{"\n"}{.message}{"\n"}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow Examinez la condition d'état
NodeInstallerProgressingpour etcd afin de vérifier que tous les nœuds sont à la dernière révision. La sortie indiqueAllNodesAtLatestRevisionlorsque la mise à jour est réussie :AllNodesAtLatestRevision 3 nodes are at revision 7
AllNodesAtLatestRevision 3 nodes are at revision 71 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Dans cet exemple, le dernier numéro de révision est
7.
Si le résultat comprend plusieurs numéros de révision, tels que
2 nodes are at revision 6; 1 nodes are at revision 7, cela signifie que la mise à jour est toujours en cours. Attendez quelques minutes et réessayez.Une fois etcd redéployé, forcez de nouveaux déploiements pour le plan de contrôle. Le serveur API Kubernetes se réinstallera sur les autres nœuds car le kubelet est connecté aux serveurs API à l'aide d'un équilibreur de charge interne.
Dans un terminal ayant accès au cluster en tant qu'utilisateur
cluster-admin, exécutez les commandes suivantes.Forcer un nouveau déploiement pour le serveur API Kubernetes :
oc patch kubeapiserver cluster -p='{"spec": {"forceRedeploymentReason": "recovery-'"$( date --rfc-3339=ns )"'"}}' --type=merge$ oc patch kubeapiserver cluster -p='{"spec": {"forceRedeploymentReason": "recovery-'"$( date --rfc-3339=ns )"'"}}' --type=mergeCopy to Clipboard Copied! Toggle word wrap Toggle overflow Vérifier que tous les nœuds sont mis à jour avec la dernière révision.
oc get kubeapiserver -o=jsonpath='{range .items[0].status.conditions[?(@.type=="NodeInstallerProgressing")]}{.reason}{"\n"}{.message}{"\n"}'$ oc get kubeapiserver -o=jsonpath='{range .items[0].status.conditions[?(@.type=="NodeInstallerProgressing")]}{.reason}{"\n"}{.message}{"\n"}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow Examinez l'état de
NodeInstallerProgressingpour vérifier que tous les nœuds sont à la dernière révision. La sortie indiqueAllNodesAtLatestRevisionlorsque la mise à jour est réussie :AllNodesAtLatestRevision 3 nodes are at revision 7
AllNodesAtLatestRevision 3 nodes are at revision 71 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Dans cet exemple, le dernier numéro de révision est
7.
Si le résultat comprend plusieurs numéros de révision, tels que
2 nodes are at revision 6; 1 nodes are at revision 7, cela signifie que la mise à jour est toujours en cours. Attendez quelques minutes et réessayez.Forcer un nouveau déploiement pour le gestionnaire de contrôleur Kubernetes :
oc patch kubecontrollermanager cluster -p='{"spec": {"forceRedeploymentReason": "recovery-'"$( date --rfc-3339=ns )"'"}}' --type=merge$ oc patch kubecontrollermanager cluster -p='{"spec": {"forceRedeploymentReason": "recovery-'"$( date --rfc-3339=ns )"'"}}' --type=mergeCopy to Clipboard Copied! Toggle word wrap Toggle overflow Vérifier que tous les nœuds sont mis à jour avec la dernière révision.
oc get kubecontrollermanager -o=jsonpath='{range .items[0].status.conditions[?(@.type=="NodeInstallerProgressing")]}{.reason}{"\n"}{.message}{"\n"}'$ oc get kubecontrollermanager -o=jsonpath='{range .items[0].status.conditions[?(@.type=="NodeInstallerProgressing")]}{.reason}{"\n"}{.message}{"\n"}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow Examinez l'état de
NodeInstallerProgressingpour vérifier que tous les nœuds sont à la dernière révision. La sortie indiqueAllNodesAtLatestRevisionlorsque la mise à jour est réussie :AllNodesAtLatestRevision 3 nodes are at revision 7
AllNodesAtLatestRevision 3 nodes are at revision 71 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Dans cet exemple, le dernier numéro de révision est
7.
Si le résultat comprend plusieurs numéros de révision, tels que
2 nodes are at revision 6; 1 nodes are at revision 7, cela signifie que la mise à jour est toujours en cours. Attendez quelques minutes et réessayez.Forcer un nouveau déploiement pour le planificateur Kubernetes :
oc patch kubescheduler cluster -p='{"spec": {"forceRedeploymentReason": "recovery-'"$( date --rfc-3339=ns )"'"}}' --type=merge$ oc patch kubescheduler cluster -p='{"spec": {"forceRedeploymentReason": "recovery-'"$( date --rfc-3339=ns )"'"}}' --type=mergeCopy to Clipboard Copied! Toggle word wrap Toggle overflow Vérifier que tous les nœuds sont mis à jour avec la dernière révision.
oc get kubescheduler -o=jsonpath='{range .items[0].status.conditions[?(@.type=="NodeInstallerProgressing")]}{.reason}{"\n"}{.message}{"\n"}'$ oc get kubescheduler -o=jsonpath='{range .items[0].status.conditions[?(@.type=="NodeInstallerProgressing")]}{.reason}{"\n"}{.message}{"\n"}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow Examinez l'état de
NodeInstallerProgressingpour vérifier que tous les nœuds sont à la dernière révision. La sortie indiqueAllNodesAtLatestRevisionlorsque la mise à jour est réussie :AllNodesAtLatestRevision 3 nodes are at revision 7
AllNodesAtLatestRevision 3 nodes are at revision 71 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Dans cet exemple, le dernier numéro de révision est
7.
Si le résultat comprend plusieurs numéros de révision, tels que
2 nodes are at revision 6; 1 nodes are at revision 7, cela signifie que la mise à jour est toujours en cours. Attendez quelques minutes et réessayez.
Vérifiez que tous les hôtes du plan de contrôle ont démarré et rejoint le cluster.
Dans un terminal ayant accès au cluster en tant qu'utilisateur
cluster-admin, exécutez la commande suivante :oc -n openshift-etcd get pods -l k8s-app=etcd
$ oc -n openshift-etcd get pods -l k8s-app=etcdCopy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
etcd-ip-10-0-143-125.ec2.internal 2/2 Running 0 9h etcd-ip-10-0-154-194.ec2.internal 2/2 Running 0 9h etcd-ip-10-0-173-171.ec2.internal 2/2 Running 0 9h
etcd-ip-10-0-143-125.ec2.internal 2/2 Running 0 9h etcd-ip-10-0-154-194.ec2.internal 2/2 Running 0 9h etcd-ip-10-0-173-171.ec2.internal 2/2 Running 0 9hCopy to Clipboard Copied! Toggle word wrap Toggle overflow
Pour s'assurer que toutes les charges de travail reviennent à un fonctionnement normal à la suite d'une procédure de récupération, redémarrez chaque pod qui stocke les informations de l'API Kubernetes. Cela inclut les composants d'OpenShift Container Platform tels que les routeurs, les opérateurs et les composants tiers.
Notez que la restauration de tous les services peut prendre plusieurs minutes après l'exécution de cette procédure. Par exemple, l'authentification à l'aide de oc login peut ne pas fonctionner immédiatement jusqu'à ce que les pods du serveur OAuth soient redémarrés.
5.4.2.4. Problèmes et solutions de contournement pour la restauration d'un état de stockage persistant Copier lienLien copié sur presse-papiers!
Si votre cluster OpenShift Container Platform utilise un stockage persistant sous quelque forme que ce soit, un état du cluster est généralement stocké en dehors d'etcd. Il peut s'agir d'un cluster Elasticsearch fonctionnant dans un pod ou d'une base de données fonctionnant dans un objet StatefulSet. Lorsque vous restaurez à partir d'une sauvegarde etcd, l'état des charges de travail dans OpenShift Container Platform est également restauré. Cependant, si le snapshot etcd est ancien, l'état peut être invalide ou obsolète.
Le contenu des volumes persistants (PV) ne fait jamais partie de l'instantané etcd. Lorsque vous restaurez un cluster OpenShift Container Platform à partir d'un instantané etcd, les charges de travail non critiques peuvent avoir accès aux données critiques, et vice-versa.
Voici quelques exemples de scénarios qui produisent un état périmé :
- La base de données MySQL s'exécute dans un pod sauvegardé par un objet PV. La restauration d'OpenShift Container Platform à partir d'un snapshot etcd ne rétablit pas le volume sur le fournisseur de stockage et ne produit pas de pod MySQL en cours d'exécution, malgré les tentatives répétées de démarrage du pod. Vous devez restaurer manuellement ce pod en restaurant le volume sur le fournisseur de stockage, puis en modifiant le PV pour qu'il pointe vers le nouveau volume.
- Le pod P1 utilise le volume A, qui est attaché au nœud X. Si l'instantané etcd est pris alors qu'un autre pod utilise le même volume sur le nœud Y, alors lorsque la restauration etcd est effectuée, le pod P1 pourrait ne pas être en mesure de démarrer correctement en raison du fait que le volume est toujours attaché au nœud Y. OpenShift Container Platform n'est pas conscient de l'attachement et ne le détache pas automatiquement. Lorsque cela se produit, le volume doit être détaché manuellement du nœud Y afin que le volume puisse s'attacher au nœud X, puis le pod P1 peut démarrer.
- Les informations d'identification du fournisseur de cloud ou du fournisseur de stockage ont été mises à jour après que l'instantané etcd a été pris. Par conséquent, les pilotes ou opérateurs CSI qui dépendent de ces informations d'identification ne fonctionnent pas. Il se peut que vous deviez mettre à jour manuellement les informations d'identification requises par ces pilotes ou opérateurs.
Un périphérique est supprimé ou renommé à partir des nœuds OpenShift Container Platform après que l'instantané etcd a été pris. L'opérateur de stockage local crée des liens symboliques pour chaque PV qu'il gère à partir des répertoires
/dev/disk/by-idou/dev. Cette situation peut amener les PV locaux à faire référence à des périphériques qui n'existent plus.Pour résoudre ce problème, l'administrateur doit
- Supprimer manuellement les PV dont les dispositifs ne sont pas valides.
- Supprimer les liens symboliques des nœuds respectifs.
-
Supprimer les objets
LocalVolumeouLocalVolumeSet(voir Storage → Configuring persistent storage → Persistent storage using local volumes → Deleting the Local Storage Operator Resources).
5.4.3. Récupération des certificats expirés du plan de contrôle Copier lienLien copié sur presse-papiers!
5.4.3.1. Récupération des certificats expirés du plan de contrôle Copier lienLien copié sur presse-papiers!
Le cluster peut récupérer automatiquement les certificats du plan de contrôle qui ont expiré.
Cependant, vous devez approuver manuellement les demandes de signature de certificat (CSR) en attente sur node-bootstrapper pour récupérer les certificats des kubelets. Pour les installations fournies par l'utilisateur, il se peut que vous deviez également approuver les CSR de service des kubelets en attente.
Procédez comme suit pour approuver les CSR en attente :
Procédure
Obtenir la liste des CSR actuels :
oc get csr
$ oc get csrCopy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Examinez les détails d'un CSR pour vérifier qu'il est valide :
oc describe csr <csr_name>
oc describe csr <csr_name>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
<csr_name>est le nom d'un CSR figurant dans la liste des CSR actuels.
Approuver chaque CSR
node-bootstrappervalide :oc adm certificate approve <csr_name>
$ oc adm certificate approve <csr_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow Pour les installations fournies par l'utilisateur, approuver chaque kubelet valide servant de CSR :
oc adm certificate approve <csr_name>
$ oc adm certificate approve <csr_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.4.4. Reprise après sinistre pour un cluster hébergé dans une région AWS Copier lienLien copié sur presse-papiers!
Si vous avez besoin d'une reprise après sinistre (DR) pour un cluster hébergé, vous pouvez récupérer un cluster hébergé dans la même région au sein d'AWS. Par exemple, vous avez besoin d'une reprise après sinistre lorsque la mise à niveau d'un cluster de gestion échoue et que le cluster hébergé est en lecture seule.
Les plans de contrôle hébergés sont une fonctionnalité d'aperçu technologique uniquement. Les fonctionnalités de l'aperçu technologique ne sont pas prises en charge par les accords de niveau de service (SLA) de production de Red Hat et peuvent ne pas être complètes sur le plan fonctionnel. Red Hat ne recommande pas de les utiliser en production. Ces fonctionnalités offrent un accès anticipé aux fonctionnalités des produits à venir, ce qui permet aux clients de tester les fonctionnalités et de fournir un retour d'information pendant le processus de développement.
Pour plus d'informations sur la portée de l'assistance des fonctionnalités de l'aperçu technologique de Red Hat, voir Portée de l'assistance des fonctionnalités de l'aperçu technologique.
Le processus de DR comporte trois étapes principales :
- Sauvegarde du cluster hébergé sur le cluster de gestion source
- Restauration du cluster hébergé sur un cluster de gestion de destination
- Suppression du cluster hébergé du cluster de gestion source
Vos charges de travail restent en cours d'exécution pendant le processus. L'API du cluster peut être indisponible pendant un certain temps, mais cela n'affectera pas les services exécutés sur les nœuds de travail.
Le cluster de gestion source et le cluster de gestion de destination doivent avoir les drapeaux --external-dns pour gérer l'URL du serveur API, comme indiqué dans cet exemple :
Exemple : Drapeaux DNS externes
--external-dns-provider=aws \ --external-dns-credentials=<AWS Credentials location> \ --external-dns-domain-filter=<DNS Base Domain>
--external-dns-provider=aws \
--external-dns-credentials=<AWS Credentials location> \
--external-dns-domain-filter=<DNS Base Domain>
Ainsi, l'URL du serveur se termine par https://api-sample-hosted.sample-hosted.aws.openshift.com.
Si vous n'incluez pas les drapeaux --external-dns pour maintenir l'URL du serveur API, le cluster hébergé ne peut pas être migré.
5.4.4.1. Exemple d'environnement et de contexte Copier lienLien copié sur presse-papiers!
Considérons un scénario dans lequel vous avez trois clusters à restaurer. Deux sont des clusters de gestion et un est un cluster hébergé. Vous pouvez restaurer soit le plan de contrôle uniquement, soit le plan de contrôle et les nœuds. Avant de commencer, vous avez besoin des informations suivantes :
- Espace de noms Source MGMT : L'espace de noms de la gestion de la source
- Source MGMT ClusterName : Le nom du cluster de gestion source
-
Source MGMT Kubeconfig : Le fichier de gestion des sources
kubeconfig -
Destination MGMT Kubeconfig : Le fichier de gestion de destination
kubeconfig -
HC Kubeconfig : Le fichier du cluster hébergé
kubeconfig - Fichier de clé SSH : La clé publique SSH
- Secret d'extraction : le fichier secret d'extraction pour accéder aux images de la version
- Références AWS
- Région AWS
- Domaine de base : Le domaine de base DNS à utiliser comme domaine DNS externe
- Nom du seau S3 : Le seau dans la région AWS où vous prévoyez de télécharger la sauvegarde etcd
Ces informations sont présentées dans l'exemple suivant de variables d'environnement.
Exemple de variables d'environnement
5.4.4.2. Vue d'ensemble du processus de sauvegarde et de restauration Copier lienLien copié sur presse-papiers!
Le processus de sauvegarde et de restauration fonctionne comme suit :
Sur le cluster de gestion 1, que vous pouvez considérer comme le cluster de gestion source, le plan de contrôle et les travailleurs interagissent en utilisant l'API DNS externe. L'API DNS externe est accessible et un équilibreur de charge se trouve entre les clusters de gestion.
Vous prenez un instantané du cluster hébergé, qui comprend etcd, le plan de contrôle et les nœuds de travail. Au cours de ce processus, les nœuds de travail continuent d'essayer d'accéder à l'API DNS externe même si elle n'est pas accessible, les charges de travail sont en cours d'exécution, le plan de contrôle est sauvegardé dans un fichier manifeste local et etcd est sauvegardé dans un seau S3. Le plan de données est actif et le plan de contrôle est en pause.
Sur le cluster de gestion 2, que vous pouvez considérer comme le cluster de gestion de destination, vous restaurez etcd à partir du seau S3 et restaurez le plan de contrôle à partir du fichier manifeste local. Au cours de ce processus, l'API DNS externe est arrêtée, l'API du cluster hébergé devient inaccessible et tous les travailleurs qui utilisent l'API sont incapables de mettre à jour leurs fichiers manifestes, mais les charges de travail sont toujours en cours d'exécution.
L'API DNS externe est à nouveau accessible et les nœuds de travail l'utilisent pour passer au cluster de gestion 2. L'API DNS externe peut accéder à l'équilibreur de charge qui pointe vers le plan de contrôle.
Sur le cluster de gestion 2, le plan de contrôle et les nœuds de travail interagissent en utilisant l'API DNS externe. Les ressources sont supprimées du cluster de gestion 1, à l'exception de la sauvegarde S3 de etcd. Si vous essayez de configurer à nouveau le cluster hébergé sur le cluster de gestion 1, cela ne fonctionnera pas.
Vous pouvez sauvegarder et restaurer manuellement votre cluster hébergé ou exécuter un script pour terminer le processus. Pour plus d'informations sur le script, voir "Exécution d'un script pour sauvegarder et restaurer un cluster hébergé".
5.4.4.3. Sauvegarde d'un cluster hébergé Copier lienLien copié sur presse-papiers!
Pour récupérer votre cluster hébergé dans votre cluster de gestion cible, vous devez d'abord sauvegarder toutes les données pertinentes.
Procédure
Créez un fichier configmap pour déclarer le cluster de gestion des sources en entrant cette commande :
oc create configmap mgmt-parent-cluster -n default --from-literal=from=${MGMT_CLUSTER_NAME}$ oc create configmap mgmt-parent-cluster -n default --from-literal=from=${MGMT_CLUSTER_NAME}Copy to Clipboard Copied! Toggle word wrap Toggle overflow Arrêtez la réconciliation dans le cluster hébergé et dans les pools de nœuds en entrant ces commandes :
PAUSED_UNTIL="true" oc patch -n ${HC_CLUSTER_NS} hostedclusters/${HC_CLUSTER_NAME} -p '{"spec":{"pausedUntil":"'${PAUSED_UNTIL}'"}}' --type=merge oc scale deployment -n ${HC_CLUSTER_NS}-${HC_CLUSTER_NAME} --replicas=0 kube-apiserver openshift-apiserver openshift-oauth-apiserver control-plane-operatorPAUSED_UNTIL="true" oc patch -n ${HC_CLUSTER_NS} hostedclusters/${HC_CLUSTER_NAME} -p '{"spec":{"pausedUntil":"'${PAUSED_UNTIL}'"}}' --type=merge oc scale deployment -n ${HC_CLUSTER_NS}-${HC_CLUSTER_NAME} --replicas=0 kube-apiserver openshift-apiserver openshift-oauth-apiserver control-plane-operatorCopy to Clipboard Copied! Toggle word wrap Toggle overflow PAUSED_UNTIL="true" oc patch -n ${HC_CLUSTER_NS} hostedclusters/${HC_CLUSTER_NAME} -p '{"spec":{"pausedUntil":"'${PAUSED_UNTIL}'"}}' --type=merge oc patch -n ${HC_CLUSTER_NS} nodepools/${NODEPOOLS} -p '{"spec":{"pausedUntil":"'${PAUSED_UNTIL}'"}}' --type=merge oc scale deployment -n ${HC_CLUSTER_NS}-${HC_CLUSTER_NAME} --replicas=0 kube-apiserver openshift-apiserver openshift-oauth-apiserver control-plane-operatorPAUSED_UNTIL="true" oc patch -n ${HC_CLUSTER_NS} hostedclusters/${HC_CLUSTER_NAME} -p '{"spec":{"pausedUntil":"'${PAUSED_UNTIL}'"}}' --type=merge oc patch -n ${HC_CLUSTER_NS} nodepools/${NODEPOOLS} -p '{"spec":{"pausedUntil":"'${PAUSED_UNTIL}'"}}' --type=merge oc scale deployment -n ${HC_CLUSTER_NS}-${HC_CLUSTER_NAME} --replicas=0 kube-apiserver openshift-apiserver openshift-oauth-apiserver control-plane-operatorCopy to Clipboard Copied! Toggle word wrap Toggle overflow Sauvegardez etcd et téléchargez les données vers un panier S3 en exécutant ce script bash :
AstuceEnveloppez ce script dans une fonction et appelez-le à partir de la fonction principale.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Pour plus d'informations sur la sauvegarde d'etcd, voir "Sauvegarde et restauration d'etcd sur un cluster hébergé".
Sauvegardez les objets Kubernetes et OpenShift Container Platform en entrant les commandes suivantes. Vous devez sauvegarder les objets suivants :
-
HostedClusteretNodePoolobjets de l'espace de noms HostedCluster -
HostedClustersecrets de l'espace de noms HostedCluster -
HostedControlPlanede l'espace de noms du plan de contrôle hébergé -
Clusterde l'espace de noms du plan de contrôle hébergé -
AWSCluster,AWSMachineTemplate, etAWSMachinede l'espace de noms du plan de contrôle hébergé -
MachineDeployments,MachineSets, etMachinesde l'espace de noms du plan de contrôle hébergé ControlPlanesecrets de l'espace de noms du plan de contrôle hébergéCopy to Clipboard Copied! Toggle word wrap Toggle overflow
-
Nettoyez les itinéraires
ControlPlaneen entrant cette commande :oc delete routes -n ${HC_CLUSTER_NS}-${HC_CLUSTER_NAME} --all$ oc delete routes -n ${HC_CLUSTER_NS}-${HC_CLUSTER_NAME} --allCopy to Clipboard Copied! Toggle word wrap Toggle overflow En entrant cette commande, vous permettez à l'opérateur ExternalDNS de supprimer les entrées Route53.
Vérifiez que les entrées de Route53 sont propres en exécutant ce script :
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Vérification
Vérifiez tous les objets d'OpenShift Container Platform et le seau S3 pour vous assurer que tout se passe comme prévu.
Prochaines étapes
Restaurez votre cluster hébergé.
5.4.4.4. Restauration d'un cluster hébergé Copier lienLien copié sur presse-papiers!
Rassemblez tous les objets que vous avez sauvegardés et restaurez-les dans votre cluster de gestion de destination.
Conditions préalables
Vous avez sauvegardé les données de votre cluster de gestion des sources.
Assurez-vous que le fichier kubeconfig du cluster de gestion de destination est placé tel qu'il est défini dans la variable KUBECONFIG ou, si vous utilisez le script, dans la variable MGMT2_KUBECONFIG. Utilisez export KUBECONFIG=<Kubeconfig FilePath> ou, si vous utilisez le script, export KUBECONFIG=${MGMT2_KUBECONFIG}.
Procédure
Vérifiez que le nouveau cluster de gestion ne contient aucun espace de noms du cluster que vous restaurez en entrant ces commandes :
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Recréez les espaces de noms supprimés en entrant ces commandes :
# Namespace creation oc new-project ${HC_CLUSTER_NS} oc new-project ${HC_CLUSTER_NS}-${HC_CLUSTER_NAME}# Namespace creation $ oc new-project ${HC_CLUSTER_NS} $ oc new-project ${HC_CLUSTER_NS}-${HC_CLUSTER_NAME}Copy to Clipboard Copied! Toggle word wrap Toggle overflow Rétablissez les secrets dans l'espace de noms HC en entrant cette commande :
oc apply -f ${BACKUP_DIR}/namespaces/${HC_CLUSTER_NS}/secret-*$ oc apply -f ${BACKUP_DIR}/namespaces/${HC_CLUSTER_NS}/secret-*Copy to Clipboard Copied! Toggle word wrap Toggle overflow Restaurez les objets dans l'espace de noms du plan de contrôle
HostedClusteren entrant ces commandes :Copy to Clipboard Copied! Toggle word wrap Toggle overflow Si vous récupérez les nœuds et le pool de nœuds pour réutiliser les instances AWS, restaurez les objets dans l'espace de noms du plan de contrôle HC en entrant ces commandes :
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Restaurez les données etcd et le cluster hébergé en exécutant ce script bash :
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Si vous récupérez les nœuds et le pool de nœuds pour réutiliser les instances AWS, restaurez le pool de nœuds en entrant cette commande :
oc apply -f ${BACKUP_DIR}/namespaces/${HC_CLUSTER_NS}/np-*oc apply -f ${BACKUP_DIR}/namespaces/${HC_CLUSTER_NS}/np-*Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Vérification
Pour vérifier que les nœuds sont entièrement restaurés, utilisez cette fonction :
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Prochaines étapes
Arrêtez et supprimez votre cluster.
5.4.4.5. Suppression d'un cluster hébergé de votre cluster de gestion des sources Copier lienLien copié sur presse-papiers!
Après avoir sauvegardé votre cluster hébergé et l'avoir restauré sur votre cluster de gestion de destination, vous arrêtez et supprimez le cluster hébergé sur votre cluster de gestion source.
Conditions préalables
Vous avez sauvegardé vos données et les avez restaurées dans votre cluster de gestion des sources.
Assurez-vous que le fichier kubeconfig du cluster de gestion de destination est placé tel qu'il est défini dans la variable KUBECONFIG ou, si vous utilisez le script, dans la variable MGMT_KUBECONFIG. Utilisez export KUBECONFIG=<Kubeconfig FilePath> ou, si vous utilisez le script, export KUBECONFIG=${MGMT_KUBECONFIG}.
Procédure
Mettez à l'échelle les objets
deploymentetstatefulseten entrant ces commandes :Copy to Clipboard Copied! Toggle word wrap Toggle overflow Supprimez les objets
NodePoolen entrant les commandes suivantes :NODEPOOLS=$(oc get nodepools -n ${HC_CLUSTER_NS} -o=jsonpath='{.items[?(@.spec.clusterName=="'${HC_CLUSTER_NAME}'")].metadata.name}') if [[ ! -z "${NODEPOOLS}" ]];then oc patch -n "${HC_CLUSTER_NS}" nodepool ${NODEPOOLS} --type=json --patch='[ { "op":"remove", "path": "/metadata/finalizers" }]' oc delete np -n ${HC_CLUSTER_NS} ${NODEPOOLS} fiNODEPOOLS=$(oc get nodepools -n ${HC_CLUSTER_NS} -o=jsonpath='{.items[?(@.spec.clusterName=="'${HC_CLUSTER_NAME}'")].metadata.name}') if [[ ! -z "${NODEPOOLS}" ]];then oc patch -n "${HC_CLUSTER_NS}" nodepool ${NODEPOOLS} --type=json --patch='[ { "op":"remove", "path": "/metadata/finalizers" }]' oc delete np -n ${HC_CLUSTER_NS} ${NODEPOOLS} fiCopy to Clipboard Copied! Toggle word wrap Toggle overflow Supprimez les objets
machineetmachineseten entrant ces commandes :Copy to Clipboard Copied! Toggle word wrap Toggle overflow Supprimez l'objet cluster en entrant ces commandes :
# Cluster C_NAME=$(oc get cluster -n ${HC_CLUSTER_NS}-${HC_CLUSTER_NAME} -o name) oc patch -n ${HC_CLUSTER_NS}-${HC_CLUSTER_NAME} ${C_NAME} --type=json --patch='[ { "op":"remove", "path": "/metadata/finalizers" }]' oc delete cluster.cluster.x-k8s.io -n ${HC_CLUSTER_NS}-${HC_CLUSTER_NAME} --all# Cluster C_NAME=$(oc get cluster -n ${HC_CLUSTER_NS}-${HC_CLUSTER_NAME} -o name) oc patch -n ${HC_CLUSTER_NS}-${HC_CLUSTER_NAME} ${C_NAME} --type=json --patch='[ { "op":"remove", "path": "/metadata/finalizers" }]' oc delete cluster.cluster.x-k8s.io -n ${HC_CLUSTER_NS}-${HC_CLUSTER_NAME} --allCopy to Clipboard Copied! Toggle word wrap Toggle overflow Supprimez les machines AWS (objets Kubernetes) en entrant ces commandes. Ne vous préoccupez pas de la suppression des machines AWS réelles. Les instances cloud ne seront pas affectées.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Supprimez les objets de l'espace de noms
HostedControlPlaneetControlPlaneHC en entrant ces commandes :# Delete HCP and ControlPlane HC NS oc patch -n ${HC_CLUSTER_NS}-${HC_CLUSTER_NAME} hostedcontrolplane.hypershift.openshift.io ${HC_CLUSTER_NAME} --type=json --patch='[ { "op":"remove", "path": "/metadata/finalizers" }]' oc delete hostedcontrolplane.hypershift.openshift.io -n ${HC_CLUSTER_NS}-${HC_CLUSTER_NAME} --all oc delete ns ${HC_CLUSTER_NS}-${HC_CLUSTER_NAME} || true# Delete HCP and ControlPlane HC NS oc patch -n ${HC_CLUSTER_NS}-${HC_CLUSTER_NAME} hostedcontrolplane.hypershift.openshift.io ${HC_CLUSTER_NAME} --type=json --patch='[ { "op":"remove", "path": "/metadata/finalizers" }]' oc delete hostedcontrolplane.hypershift.openshift.io -n ${HC_CLUSTER_NS}-${HC_CLUSTER_NAME} --all oc delete ns ${HC_CLUSTER_NS}-${HC_CLUSTER_NAME} || trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow Supprimez les objets de l'espace de noms
HostedClusteret HC en entrant ces commandes :# Delete HC and HC Namespace oc -n ${HC_CLUSTER_NS} patch hostedclusters ${HC_CLUSTER_NAME} -p '{"metadata":{"finalizers":null}}' --type merge || true oc delete hc -n ${HC_CLUSTER_NS} ${HC_CLUSTER_NAME} || true oc delete ns ${HC_CLUSTER_NS} || true# Delete HC and HC Namespace oc -n ${HC_CLUSTER_NS} patch hostedclusters ${HC_CLUSTER_NAME} -p '{"metadata":{"finalizers":null}}' --type merge || true oc delete hc -n ${HC_CLUSTER_NS} ${HC_CLUSTER_NAME} || true oc delete ns ${HC_CLUSTER_NS} || trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow
Vérification
Pour vérifier que tout fonctionne, entrez les commandes suivantes :
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Prochaines étapes
Supprimez les pods OVN dans le cluster hébergé afin de pouvoir vous connecter au nouveau plan de contrôle OVN qui s'exécute dans le nouveau cluster de gestion :
-
Chargez la variable d'environnement
KUBECONFIGavec le chemin kubeconfig du cluster hébergé. Entrez cette commande :
oc delete pod -n openshift-ovn-kubernetes --all
$ oc delete pod -n openshift-ovn-kubernetes --allCopy to Clipboard Copied! Toggle word wrap Toggle overflow
5.4.4.6. Exécution d'un script pour sauvegarder et restaurer un cluster hébergé Copier lienLien copié sur presse-papiers!
Pour accélérer le processus de sauvegarde d'un cluster hébergé et sa restauration dans la même région sur AWS, vous pouvez modifier et exécuter un script.
Procédure
Remplacez les variables du script suivant par vos propres informations :
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Enregistrez le script dans votre système de fichiers local.
Exécutez le script en entrant la commande suivante :
source <env_file>
source <env_file>Copy to Clipboard Copied! Toggle word wrap Toggle overflow où :
env_fileest le nom du fichier dans lequel vous avez enregistré le script.
Legal Notice
Copier lienLien copié sur presse-papiers!
Copyright © 2025 Red Hat
OpenShift documentation is licensed under the Apache License 2.0 (https://www.apache.org/licenses/LICENSE-2.0).
Modified versions must remove all Red Hat trademarks.
Portions adapted from https://github.com/kubernetes-incubator/service-catalog/ with modifications by Red Hat.
Red Hat, Red Hat Enterprise Linux, the Red Hat logo, the Shadowman logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat Software Collections is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation’s permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.