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.
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
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 queoc 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. <.> Lorsquetcpdump
est exécuté dans le pod de débogage queoc 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 commandetcpdump
. <.> 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 commandetcpdump
spécifie la capture des paquets sur toutes les interfaces réseau. Vous pouvez également spécifier un nom d'interface réseau.- 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.
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