24.3. Dépannage d'OVN-Kubernetes
OVN-Kubernetes dispose de nombreuses sources de contrôles de santé et de journaux intégrés.
24.3.1. Surveillance de l'état de santé d'OVN-Kubernetes à l'aide de sondes d'état de préparation Copier lienLien copié sur presse-papiers!
Les pods ovnkube-master
et ovnkube-node
ont des conteneurs configurés avec des sondes de préparation.
Conditions préalables
-
Accès à la CLI OpenShift (
oc
). -
Vous avez accès au cluster avec les privilèges
cluster-admin
. -
Vous avez installé
jq
.
Procédure
Examinez les détails de la sonde de préparation
ovnkube-master
en exécutant la commande suivante :oc get pods -n openshift-ovn-kubernetes -l app=ovnkube-master \ -o json | jq '.items[0].spec.containers[] | .name,.readinessProbe'
$ oc get pods -n openshift-ovn-kubernetes -l app=ovnkube-master \ -o json | jq '.items[0].spec.containers[] | .name,.readinessProbe'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow La sonde de préparation des conteneurs de base de données nord et sud du pod
ovnkube-master
vérifie l'état de santé du cluster Raft qui héberge les bases de données.Examinez les détails de la sonde de préparation
ovnkube-node
en exécutant la commande suivante :oc get pods -n openshift-ovn-kubernetes -l app=ovnkube-master \ -o json | jq '.items[0].spec.containers[] | .name,.readinessProbe'
$ oc get pods -n openshift-ovn-kubernetes -l app=ovnkube-master \ -o json | jq '.items[0].spec.containers[] | .name,.readinessProbe'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Le conteneur
ovnkube-node
dans le podovnkube-node
dispose d'une sonde de préparation pour vérifier la présence du fichier de configuration CNI ovn-kubernetes, dont l'absence indiquerait que le pod ne fonctionne pas ou n'est pas prêt à accepter des demandes de configuration de pods.Affichez tous les événements, y compris les échecs des sondes, pour l'espace de noms à l'aide de la commande suivante :
oc get events -n openshift-ovn-kubernetes
$ oc get events -n openshift-ovn-kubernetes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Afficher les événements pour ce seul pod :
oc describe pod ovnkube-master-tp2z8 -n openshift-ovn-kubernetes
$ oc describe pod ovnkube-master-tp2z8 -n openshift-ovn-kubernetes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Affiche les messages et les statuts de l'opérateur du réseau de clusters :
oc get co/network -o json | jq '.status.conditions[]'
$ oc get co/network -o json | jq '.status.conditions[]'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Affichez le statut
ready
de chaque conteneur dans les podsovnkube-master
en exécutant le script suivant :for p in $(oc get pods --selector app=ovnkube-master -n openshift-ovn-kubernetes \ -o jsonpath='{range.items[*]}{" "}{.metadata.name}'); do echo === $p ===; \ oc get pods -n openshift-ovn-kubernetes $p -o json | jq '.status.containerStatuses[] | .name, .ready'; \ done
$ for p in $(oc get pods --selector app=ovnkube-master -n openshift-ovn-kubernetes \ -o jsonpath='{range.items[*]}{" "}{.metadata.name}'); do echo === $p ===; \ oc get pods -n openshift-ovn-kubernetes $p -o json | jq '.status.containerStatuses[] | .name, .ready'; \ done
Copy to Clipboard Copied! Toggle word wrap Toggle overflow NoteOn s'attend à ce que tous les états des conteneurs soient signalés comme étant
true
. L'échec d'une enquête sur l'état de préparation fait passer le statut àfalse
.
24.3.2. Visualisation des alertes OVN-Kubernetes dans la console Copier lienLien copié sur presse-papiers!
L'interface utilisateur des alertes fournit des informations détaillées sur les alertes ainsi que sur les règles d'alerte et les silences qui les régissent.
Conditions préalables
- Vous avez accès au cluster en tant que développeur ou en tant qu'utilisateur disposant d'autorisations de visualisation pour le projet dont vous consultez les métriques.
Procédure (UI)
-
Dans la Administrator sélectionnez Observe
Alerting. Les trois pages principales de l'interface utilisateur d'alerte dans cette perspective sont les suivantes Alerts, Silences, et Alerting Rules sont les trois pages principales de l'interface utilisateur des alertes dans cette perspective. -
Consultez les règles pour les alertes OVN-Kubernetes en sélectionnant Observe
Alerting Alerting Rules.
24.3.3. Visualisation des alertes OVN-Kubernetes dans le CLI Copier lienLien copié sur presse-papiers!
Vous pouvez obtenir des informations sur les alertes et les règles d'alerte et de silence qui les régissent à partir de la ligne de commande.
Conditions préalables
-
Accès au cluster en tant qu'utilisateur ayant le rôle
cluster-admin
. -
L'OpenShift CLI (
oc
) est installé. -
Vous avez installé
jq
.
Procédure
Pour visualiser les alertes actives ou en cours de déclenchement, exécutez les commandes suivantes.
Définissez la variable d'environnement alert manager route en exécutant la commande suivante :
ALERT_MANAGER=$(oc get route alertmanager-main -n openshift-monitoring \ -o jsonpath='{@.spec.host}')
$ ALERT_MANAGER=$(oc get route alertmanager-main -n openshift-monitoring \ -o jsonpath='{@.spec.host}')
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Emettez une requête
curl
à l'API de route du gestionnaire d'alertes avec les détails d'autorisation corrects demandant des champs spécifiques en exécutant la commande suivante :curl -s -k -H "Authorization: Bearer \ $(oc create token prometheus-k8s -n openshift-monitoring)" \ https://$ALERT_MANAGER/api/v1/alerts \ | jq '.data[] | "\(.labels.severity) \(.labels.alertname) \(.labels.pod) \(.labels.container) \(.labels.endpoint) \(.labels.instance)"'
$ curl -s -k -H "Authorization: Bearer \ $(oc create token prometheus-k8s -n openshift-monitoring)" \ https://$ALERT_MANAGER/api/v1/alerts \ | jq '.data[] | "\(.labels.severity) \(.labels.alertname) \(.labels.pod) \(.labels.container) \(.labels.endpoint) \(.labels.instance)"'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Affichez les règles d'alerte en exécutant la commande suivante :
oc -n openshift-monitoring exec -c prometheus prometheus-k8s-0 -- curl -s 'http://localhost:9090/api/v1/rules' | jq '.data.groups[].rules[] | select(((.name|contains("ovn")) or (.name|contains("OVN")) or (.name|contains("Ovn")) or (.name|contains("North")) or (.name|contains("South"))) and .type=="alerting")'
$ oc -n openshift-monitoring exec -c prometheus prometheus-k8s-0 -- curl -s 'http://localhost:9090/api/v1/rules' | jq '.data.groups[].rules[] | select(((.name|contains("ovn")) or (.name|contains("OVN")) or (.name|contains("Ovn")) or (.name|contains("North")) or (.name|contains("South"))) and .type=="alerting")'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
24.3.4. Visualisation des journaux OVN-Kubernetes à l'aide de la CLI Copier lienLien copié sur presse-papiers!
Vous pouvez consulter les journaux de chaque pod dans les pods ovnkube-master
et ovnkube-node
à l'aide de la CLI OpenShift (oc
).
Conditions préalables
-
Accès au cluster en tant qu'utilisateur ayant le rôle
cluster-admin
. -
Accès à la CLI OpenShift (
oc
). -
Vous avez installé
jq
.
Procédure
Visualiser le journal d'un pod spécifique :
oc logs -f <nom_du_pod> -c <nom_du_conteneur> -n <espace_de_noms>
$ oc logs -f <nom_du_pod> -c <nom_du_conteneur> -n <espace_de_noms>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow où :
-f
- Facultatif : Spécifie que la sortie suit ce qui est écrit dans les journaux.
<pod_name>
- Spécifie le nom du module.
<container_name>
- Facultatif : Spécifie le nom d'un conteneur. Lorsqu'un module a plus d'un conteneur, vous devez spécifier le nom du conteneur.
<namespace>
- Spécifie l'espace de noms dans lequel le module est exécuté.
Par exemple :
oc logs ovnkube-master-7h4q7 -n openshift-ovn-kubernetes
$ oc logs ovnkube-master-7h4q7 -n openshift-ovn-kubernetes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc logs -f ovnkube-master-7h4q7 -n openshift-ovn-kubernetes -c ovn-dbchecker
$ oc logs -f ovnkube-master-7h4q7 -n openshift-ovn-kubernetes -c ovn-dbchecker
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Le contenu des fichiers journaux est imprimé.
Examinez les entrées les plus récentes dans tous les conteneurs des modules
ovnkube-master
:for p in $(oc get pods --selector app=ovnkube-master -n openshift-ovn-kubernetes \ -o jsonpath='{range.items[*]}{" "}{.metadata.name}'); \ do echo === $p ===; for container in $(oc get pods -n openshift-ovn-kubernetes $p \ -o json | jq -r '.status.containerStatuses[] | .name');do echo ---$container---; \ oc logs -c $container $p -n openshift-ovn-kubernetes --tail=5; done; done
$ for p in $(oc get pods --selector app=ovnkube-master -n openshift-ovn-kubernetes \ -o jsonpath='{range.items[*]}{" "}{.metadata.name}'); \ do echo === $p ===; for container in $(oc get pods -n openshift-ovn-kubernetes $p \ -o json | jq -r '.status.containerStatuses[] | .name');do echo ---$container---; \ oc logs -c $container $p -n openshift-ovn-kubernetes --tail=5; done; done
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Affichez les 5 dernières lignes de chaque journal dans chaque conteneur d'un pod
ovnkube-master
à l'aide de la commande suivante :oc logs -l app=ovnkube-master -n openshift-ovn-kubernetes --all-containers --tail 5
$ oc logs -l app=ovnkube-master -n openshift-ovn-kubernetes --all-containers --tail 5
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
24.3.5. Visualisation des journaux OVN-Kubernetes à l'aide de la console web Copier lienLien copié sur presse-papiers!
Vous pouvez consulter les journaux de chaque pod dans les pods ovnkube-master
et ovnkube-node
dans la console web.
Conditions préalables
-
Accès à la CLI OpenShift (
oc
).
Procédure
-
Dans la console OpenShift Container Platform, naviguez vers Workloads
Pods ou naviguez vers le pod par le biais de la ressource que vous souhaitez étudier. -
Sélectionnez le projet
openshift-ovn-kubernetes
dans le menu déroulant. - Cliquez sur le nom du module que vous souhaitez examiner.
-
Cliquez Logs. Par défaut, pour le site
ovnkube-master
, les journaux associés au conteneurnorthd
sont affichés. - Utilisez le menu déroulant pour sélectionner les journaux pour chaque conteneur à tour de rôle.
24.3.5.1. Modifier les niveaux de journalisation d'OVN-Kubernetes Copier lienLien copié sur presse-papiers!
Le niveau de log par défaut d'OVN-Kubernetes est 2. Pour déboguer OVN-Kubernetes, réglez le niveau de log à 5. Suivez cette procédure pour augmenter le niveau de journalisation d'OVN-Kubernetes afin de vous aider à déboguer un problème.
Conditions préalables
-
Vous avez accès au cluster avec les privilèges
cluster-admin
. - Vous avez accès à la console web de OpenShift Container Platform.
Procédure
Exécutez la commande suivante pour obtenir des informations détaillées sur tous les pods du projet OVN-Kubernetes :
oc get po -o wide -n openshift-ovn-kubernetes
$ oc get po -o wide -n openshift-ovn-kubernetes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Créez un fichier
ConfigMap
similaire à l'exemple suivant et utilisez un nom de fichier tel queenv-overrides.yaml
:Exemple de fichier
ConfigMap
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Appliquez le fichier
ConfigMap
à l'aide de la commande suivante :oc create configmap env-overrides.yaml -n openshift-ovn-kubernetes
$ oc create configmap env-overrides.yaml -n openshift-ovn-kubernetes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
configmap/env-overrides.yaml created
configmap/env-overrides.yaml created
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Redémarrez les pods
ovnkube
pour appliquer le nouveau niveau de journalisation à l'aide des commandes suivantes :oc delete pod -n openshift-ovn-kubernetes \ --field-selector spec.nodeName=ip-10-0-217-114.ec2.internal -l app=ovnkube-node
$ oc delete pod -n openshift-ovn-kubernetes \ --field-selector spec.nodeName=ip-10-0-217-114.ec2.internal -l app=ovnkube-node
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc delete pod -n openshift-ovn-kubernetes \ --field-selector spec.nodeName=ip-10-0-209-180.ec2.internal -l app=ovnkube-node
$ oc delete pod -n openshift-ovn-kubernetes \ --field-selector spec.nodeName=ip-10-0-209-180.ec2.internal -l app=ovnkube-node
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc delete pod -n openshift-ovn-kubernetes -l app=ovnkube-master
$ oc delete pod -n openshift-ovn-kubernetes -l app=ovnkube-master
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
24.3.6. Vérification de la connectivité réseau du pod OVN-Kubernetes Copier lienLien copié sur presse-papiers!
Le contrôleur de vérification de la connectivité, dans OpenShift Container Platform 4.10 et plus, orchestre les vérifications de connexion dans votre cluster. Celles-ci incluent l'API Kubernetes, l'API OpenShift et les nœuds individuels. Les résultats des tests de connexion sont stockés dans les objets PodNetworkConnectivity
de l'espace de noms openshift-network-diagnostics
. Les tests de connexion sont effectués toutes les minutes en parallèle.
Conditions préalables
-
Accès à la CLI OpenShift (
oc
). -
Accès au cluster en tant qu'utilisateur ayant le rôle
cluster-admin
. -
Vous avez installé
jq
.
Procédure
Pour dresser la liste des objets
PodNetworkConnectivityCheck
en cours, entrez la commande suivante :oc get podnetworkconnectivitychecks -n openshift-network-diagnostics
$ oc get podnetworkconnectivitychecks -n openshift-network-diagnostics
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Affichez le succès le plus récent pour chaque objet de connexion à l'aide de la commande suivante :
oc get podnetworkconnectivitychecks -n openshift-network-diagnostics \ -o json | jq '.items[]| .spec.targetEndpoint,.status.successes[0]'
$ oc get podnetworkconnectivitychecks -n openshift-network-diagnostics \ -o json | jq '.items[]| .spec.targetEndpoint,.status.successes[0]'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Affichez les échecs les plus récents pour chaque objet de connexion à l'aide de la commande suivante :
oc get podnetworkconnectivitychecks -n openshift-network-diagnostics \ -o json | jq '.items[]| .spec.targetEndpoint,.status.failures[0]'
$ oc get podnetworkconnectivitychecks -n openshift-network-diagnostics \ -o json | jq '.items[]| .spec.targetEndpoint,.status.failures[0]'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Affichez les pannes les plus récentes pour chaque objet de connexion à l'aide de la commande suivante :
oc get podnetworkconnectivitychecks -n openshift-network-diagnostics \ -o json | jq '.items[]| .spec.targetEndpoint,.status.outages[0]'
$ oc get podnetworkconnectivitychecks -n openshift-network-diagnostics \ -o json | jq '.items[]| .spec.targetEndpoint,.status.outages[0]'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Le contrôleur de vérification de la connectivité enregistre également les mesures de ces vérifications dans Prometheus.
Affichez toutes les mesures en exécutant la commande suivante :
oc exec prometheus-k8s-0 -n openshift-monitoring -- \ promtool query instant http://localhost:9090 \ '{component="openshift-network-diagnostics"}'
$ oc exec prometheus-k8s-0 -n openshift-monitoring -- \ promtool query instant http://localhost:9090 \ '{component="openshift-network-diagnostics"}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Voir la latence entre le pod source et le service openshift api pour les 5 dernières minutes :
oc exec prometheus-k8s-0 -n openshift-monitoring -- \ promtool query instant http://localhost:9090 \ '{component="openshift-network-diagnostics"}'
$ oc exec prometheus-k8s-0 -n openshift-monitoring -- \ promtool query instant http://localhost:9090 \ '{component="openshift-network-diagnostics"}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow