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

  1. 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.

  2. 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 pod ovnkube-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.

  3. 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
  4. Afficher les événements pour ce seul pod :

    $ oc describe pod ovnkube-master-tp2z8 -n openshift-ovn-kubernetes
  5. Affiche les messages et les statuts de l'opérateur du réseau de clusters :

    $ oc get co/network -o json | jq '.status.conditions[]'
  6. Affichez le statut ready de chaque conteneur dans les pods ovnkube-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
    Note

    On 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

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)

  1. 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.
  2. 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

  1. Pour visualiser les alertes actives ou en cours de déclenchement, exécutez les commandes suivantes.

    1. 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}')
    2. 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)"'
  2. 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

  1. 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é.

  2. 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
  3. 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

  1. 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.
  2. Sélectionnez le projet openshift-ovn-kubernetes dans le menu déroulant.
  3. Cliquez sur le nom du module que vous souhaitez examiner.
  4. Cliquez Logs. Par défaut, pour le site ovnkube-master, les journaux associés au conteneur northd sont affichés.
  5. 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

  1. 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>

  2. Créez un fichier ConfigMap similaire à l'exemple suivant et utilisez un nom de fichier tel que env-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

    1
    Indiquez le nom du nœud pour lequel vous souhaitez définir le niveau de journalisation du débogage.
    2
    Spécifiez _master pour définir les niveaux de journalisation des composants ovnkube-master.
  3. 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

  4. 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

  1. Pour dresser la liste des objets PodNetworkConnectivityCheck en cours, entrez la commande suivante :

    $ oc get podnetworkconnectivitychecks -n openshift-network-diagnostics
  2. 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]'
  3. 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]'
  4. 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.

  5. 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"}'
  6. 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"}'

24.3.7. Ressources supplémentaires

Red Hat logoGithubRedditYoutubeTwitter

Apprendre

Essayez, achetez et vendez

Communautés

À propos de la documentation Red Hat

Nous aidons les utilisateurs de Red Hat à innover et à atteindre leurs objectifs grâce à nos produits et services avec un contenu auquel ils peuvent faire confiance.

Rendre l’open source plus inclusif

Red Hat s'engage à remplacer le langage problématique dans notre code, notre documentation et nos propriétés Web. Pour plus de détails, consultez leBlog Red Hat.

À propos de Red Hat

Nous proposons des solutions renforcées qui facilitent le travail des entreprises sur plusieurs plates-formes et environnements, du centre de données central à la périphérie du réseau.

© 2024 Red Hat, Inc.