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
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'
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'
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
Afficher les événements pour ce seul pod :
$ oc describe pod ovnkube-master-tp2z8 -n openshift-ovn-kubernetes
Affiche les messages et les statuts de l'opérateur du réseau de clusters :
$ oc get co/network -o json | jq '.status.conditions[]'
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
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
.
Ressources supplémentaires
24.3.2. Visualisation des alertes OVN-Kubernetes dans la console
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
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}')
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)"'
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")'
24.3.4. Visualisation des journaux OVN-Kubernetes à l'aide de la CLI
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>
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 -f ovnkube-master-7h4q7 -n openshift-ovn-kubernetes -c ovn-dbchecker
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
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
24.3.5. Visualisation des journaux OVN-Kubernetes à l'aide de la console web
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
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
Exemple de sortie
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES ovnkube-master-84nc9 6/6 Running 0 50m 10.0.134.156 ip-10-0-134-156.ec2.internal <none> <none> ovnkube-master-gmlqv 6/6 Running 0 50m 10.0.209.180 ip-10-0-209-180.ec2.internal <none> <none> ovnkube-master-nhts2 6/6 Running 1 (48m ago) 50m 10.0.147.31 ip-10-0-147-31.ec2.internal <none> <none> ovnkube-node-2cbh8 5/5 Running 0 43m 10.0.217.114 ip-10-0-217-114.ec2.internal <none> <none> ovnkube-node-6fvzl 5/5 Running 0 50m 10.0.147.31 ip-10-0-147-31.ec2.internal <none> <none> ovnkube-node-f4lzz 5/5 Running 0 24m 10.0.146.76 ip-10-0-146-76.ec2.internal <none> <none> ovnkube-node-jf67d 5/5 Running 0 50m 10.0.209.180 ip-10-0-209-180.ec2.internal <none> <none> ovnkube-node-np9mf 5/5 Running 0 40m 10.0.165.191 ip-10-0-165-191.ec2.internal <none> <none> ovnkube-node-qjldg 5/5 Running 0 50m 10.0.134.156 ip-10-0-134-156.ec2.internal <none> <none>
Créez un fichier
ConfigMap
similaire à l'exemple suivant et utilisez un nom de fichier tel queenv-overrides.yaml
:Exemple de fichier
ConfigMap
kind: ConfigMap apiVersion: v1 metadata: name: env-overrides namespace: openshift-ovn-kubernetes data: ip-10-0-217-114.ec2.internal: | 1 # This sets the log level for the ovn-kubernetes node process: OVN_KUBE_LOG_LEVEL=5 # You might also/instead want to enable debug logging for ovn-controller: OVN_LOG_LEVEL=dbg ip-10-0-209-180.ec2.internal: | # This sets the log level for the ovn-kubernetes node process: OVN_KUBE_LOG_LEVEL=5 # You might also/instead want to enable debug logging for ovn-controller: OVN_LOG_LEVEL=dbg _master: | 2 # This sets the log level for the ovn-kubernetes master process as well as the ovn-dbchecker: OVN_KUBE_LOG_LEVEL=5 # You might also/instead want to enable debug logging for northd, nbdb and sbdb on all masters: OVN_LOG_LEVEL=dbg
Appliquez le fichier
ConfigMap
à l'aide de la commande suivante :$ oc create configmap env-overrides.yaml -n openshift-ovn-kubernetes
Exemple de sortie
configmap/env-overrides.yaml created
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-209-180.ec2.internal -l app=ovnkube-node
$ oc delete pod -n openshift-ovn-kubernetes -l app=ovnkube-master
24.3.6. Vérification de la connectivité réseau du pod OVN-Kubernetes
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
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]'
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]'
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]'
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"}'
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"}'