4.5. Dépannage
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
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é
kubectl
localement.
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 :
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
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
DataProtectionApplication
a 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'
4.5.3. Déboguer les ressources Velero avec l'outil OpenShift CLI
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>
Billes de pods Velero
Utilisez la commande oc logs
pour récupérer les journaux du 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.
apiVersion: oadp.openshift.io/v1alpha1 kind: DataProtectionApplication metadata: name: velero-sample spec: configuration: velero: logLevel: warning
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
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>
Exemple
$ 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
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>
Exemple
$ 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>
Exemple
$ 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
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
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
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
4.5.5.1.2. Restauration des ressources IBM AppConnect
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: MutatingWebhookConfiguration
dans le cluster :$ oc get mutatingwebhookconfigurations
-
Examinez le fichier YAML de chaque site
kind: MutatingWebhookConfiguration
pour 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.version
danstype: Configuration.appconnect.ibm.com/v1beta1
utilisé au moment de la sauvegarde est pris en charge par l'opérateur installé.
Ressources complémentaires
4.5.6. Problèmes d'installation
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
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
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] 1 aws_access_key_id=AKIAIOSFODNN7EXAMPLE 2 aws_secret_access_key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
4.5.7. Problèmes de sauvegarde et de restauration de la CR
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
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.region
dans le manifesteDataProtectionApplication
afin 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
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>
Supprimer le CR
Backup
:oc delete backup <backup> -n openshift-adp
Il n'est pas nécessaire de nettoyer l'emplacement de sauvegarde car un CR
Backup
en 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)
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
Solution
Supprimer le CR
Backup
:oc delete backup <backup> -n openshift-adp
-
Si nécessaire, nettoyez les données stockées sur le site
BackupStorageLocation
pour 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
-
Créez un nouveau CR
Backup
.
4.5.8. Questions relatives à l'agriculture
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
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
Restic
sur le volume de données NFS. -
Activez le bit
setgid
sur les répertoires NFS pour que la propriété du groupe soit héritée. Ajoutez le paramètre
spec.configuration.restic.supplementalGroups
et l'identifiant du groupe au manifesteDataProtectionApplication
, comme dans l'exemple suivant :spec: configuration: restic: enable: true supplementalGroups: - <group_id> 1
- 1
- Indiquez l'ID du groupe supplémentaire.
-
Attendez que les pods
Restic
redé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é
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>
Dans le journal d'erreurs suivant,
mysql-persistent
est le dépôt Restic problématique. Le nom du dépôt apparaît en italique pour plus de clarté.time="2021-12-29T18:29:14Z" level=info msg="1 errors encountered backup up item" backup=velero/backup65 logSource="pkg/backup/backup.go:431" name=mysql-7d99fc949-qbkds time="2021-12-29T18:29:14Z" level=error msg="Error backing up item" backup=velero/backup65 error="pod volume backup failed: error running restic backup, stderr=Fatal: unable to open config file: Stat: The specified key does not exist.\nIs there a repository at the following location?\ns3:http://minio-minio.apps.mayap-oadp- veleo-1234.qe.devcluster.openshift.com/mayapvelerooadp2/velero1/ restic/mysql-persistent\n: exit status 1" error.file="/remote-source/ src/github.com/vmware-tanzu/velero/pkg/restic/backupper.go:184" error.function="github.com/vmware-tanzu/velero/ pkg/restic.(*backupper).BackupPodVolumes" logSource="pkg/backup/backup.go:435" name=mysql-7d99fc949-qbkds
4.5.9. Utilisation de l'outil de collecte obligatoire
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-gather
pour l'une des options de collecte de données suivantes :$ oc adm must-gather --image=registry.redhat.io/oadp/oadp-mustgather-rhel8:v1.1
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
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
Créer une instance locale de Prometheus :
$ make prometheus-run
La commande affiche l'URL de Prometheus.
Sortie
Started Prometheus on http://localhost:9090
- 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