5.9. Collecte d'une trace du réseau de l'hôte


Parfois, le dépannage d'un problème lié au réseau est simplifié par le traçage des communications réseau et la capture des paquets sur plusieurs nœuds en même temps.

Vous pouvez utiliser une combinaison de la commande oc adm must-gather et de l'image conteneur registry.redhat.io/openshift4/network-tools-rhel8 pour collecter des captures de paquets à partir des nœuds. L'analyse des captures de paquets peut vous aider à résoudre les problèmes de communication du réseau.

La commande oc adm must-gather est utilisée pour exécuter la commande tcpdump dans des modules sur des nœuds spécifiques. La commande tcpdump enregistre les captures de paquets dans les modules. Lorsque la commande tcpdump se termine, la commande oc adm must-gather transfère les fichiers contenant les captures de paquets des modules vers votre ordinateur client.

Astuce

L'exemple de commande de la procédure suivante montre comment réaliser une capture de paquets à l'aide de la commande tcpdump. Cependant, vous pouvez exécuter n'importe quelle commande dans l'image de conteneur spécifiée dans l'argument --image pour recueillir des informations de dépannage à partir de plusieurs nœuds en même temps.

Conditions préalables

  • Vous avez accès au cluster en tant qu'utilisateur ayant le rôle cluster-admin.
  • Vous avez installé l'OpenShift CLI (oc).

Procédure

  1. Effectuez une capture de paquets à partir du réseau hôte sur certains nœuds en exécutant la commande suivante :

    $ oc adm must-gather \
        --dest-dir /tmp/captures \  <.>
        --source-dir '/tmp/tcpdump/' \  <.>
        --image registry.redhat.io/openshift4/network-tools-rhel8:latest \  <.>
        --node-selector 'node-role.kubernetes.io/worker' \  <.>
        --host-network=true \  <.>
        --timeout 30s \  <.>
        -- \
        tcpdump -i any \  <.>
        -w /tmp/tcpdump/%Y-%m-%dT%H:%M:%S.pcap -W 1 -G 300

    <.> L'argument --dest-dir spécifie que oc adm must-gather stocke les captures de paquets dans des répertoires relatifs à /tmp/captures sur la machine cliente. Vous pouvez spécifier n'importe quel répertoire accessible en écriture. <.> Lorsque tcpdump est exécuté dans le pod de débogage que oc adm must-gather démarre, l'argument --source-dir spécifie que les captures de paquets sont temporairement stockées dans le répertoire /tmp/tcpdump sur le pod. <.> L'argument --image spécifie une image de conteneur qui inclut la commande tcpdump. <.> L'argument --node-selector et la valeur de l'exemple spécifient d'effectuer les captures de paquets sur les nœuds de travail. Vous pouvez également spécifier l'argument --node-name pour exécuter la capture de paquets sur un seul noeud. Si vous omettez les arguments --node-selector et --node-name, les captures de paquets sont effectuées sur tous les nœuds. <.> L'argument --host-network=true est nécessaire pour que les captures de paquets soient effectuées sur les interfaces réseau du noeud. <.> L'argument --timeout et la valeur spécifient l'exécution du pod de débogage pendant 30 secondes. Si vous ne spécifiez pas l'argument --timeout et une durée, le module de débogage s'exécute pendant 10 minutes. <.> L'argument -i any de la commande tcpdump spécifie la capture des paquets sur toutes les interfaces réseau. Vous pouvez également spécifier un nom d'interface réseau.

  2. Effectuez l'action, telle que l'accès à une application web, qui déclenche le problème de communication réseau pendant que la trace réseau capture les paquets.
  3. Examinez les fichiers de capture de paquets que oc adm must-gather a transférés des pods à votre ordinateur client :

    tmp/captures
    ├── event-filter.html
    ├── ip-10-0-192-217-ec2-internal  1
    │   └── registry-redhat-io-openshift4-network-tools-rhel8-sha256-bca...
    │       └── 2022-01-13T19:31:31.pcap
    ├── ip-10-0-201-178-ec2-internal  2
    │   └── registry-redhat-io-openshift4-network-tools-rhel8-sha256-bca...
    │       └── 2022-01-13T19:31:30.pcap
    ├── ip-...
    └── timestamp
    1 2
    Les captures de paquets sont stockées dans des répertoires qui identifient le nom d'hôte, le conteneur et le nom de fichier. Si vous n'avez pas spécifié l'argument --node-selector, le niveau de répertoire correspondant au nom d'hôte n'est pas présent.
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.