5.10. Collecte d'une trace réseau à partir d'un nœud ou d'un conteneur OpenShift Container Platform
Lors de l'investigation de problèmes potentiels liés au réseau dans OpenShift Container Platform, le support Red Hat peut demander une trace de paquet réseau à partir d'un nœud de cluster OpenShift Container Platform spécifique ou à partir d'un conteneur spécifique. La méthode recommandée pour capturer une trace de réseau dans OpenShift Container Platform est d'utiliser un pod de débogage.
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
). - Vous avez un abonnement standard ou premium Red Hat.
- Vous disposez d'un compte Red Hat Customer Portal.
- Vous avez un numéro d'identification de dossier d'assistance Red Hat existant.
- Vous avez un accès SSH à vos hôtes.
Procédure
Obtenir une liste des nœuds de la grappe :
$ oc get nodes
Entrez dans une session de débogage sur le nœud cible. Cette étape instancie un pod de débogage appelé
<node_name>-debug
:$ oc debug node/my-cluster-node
Définissez
/host
comme répertoire racine dans le shell de débogage. Le pod de débogage monte le système de fichiers racine de l'hôte dans/host
au sein du pod. En changeant le répertoire racine en/host
, vous pouvez exécuter les binaires contenus dans les chemins d'exécution de l'hôte :# chroot /host
NoteLes nœuds de cluster OpenShift Container Platform 4.12 exécutant Red Hat Enterprise Linux CoreOS (RHCOS) sont immuables et s'appuient sur les opérateurs pour appliquer les changements de cluster. L'accès aux nœuds de cluster à l'aide de SSH n'est pas recommandé et les nœuds seront altérés en tant que accessed. Cependant, si l'API OpenShift Container Platform n'est pas disponible, ou si le kubelet ne fonctionne pas correctement sur le nœud cible, les opérations
oc
seront impactées. Dans de telles situations, il est possible d'accéder aux nœuds en utilisantssh core@<node>.<cluster_name>.<base_domain>
à la place.Dans la console de l'environnement
chroot
, obtenez les noms des interfaces du nœud :# ip ad
Démarrer un conteneur
toolbox
, qui contient les binaires et les plugins nécessaires à l'exécution desosreport
:# toolbox
NoteSi un pod
toolbox
est déjà en cours d'exécution, la commandetoolbox
produit'toolbox-' already exists. Trying to start…
. Pour éviter les problèmes liés àtcpdump
, supprimez le conteneur de boîte à outils en cours d'exécution avecpodman rm toolbox-
et créez un nouveau conteneur de boîte à outils.Lancez une session
tcpdump
sur le nœud du cluster et redirigez la sortie vers un fichier de capture. Cet exemple utiliseens5
comme nom d'interface :$ tcpdump -nn -s 0 -i ens5 -w /host/var/tmp/my-cluster-node_$(date +%d_%m_%Y-%H_%M_%S-%Z).pcap 1
- 1
- Le chemin d'accès au fichier de capture
tcpdump
se trouve en dehors de l'environnementchroot
car le conteneur de la boîte à outils monte le répertoire racine de l'hôte à l'adresse/host
.
Si une capture
tcpdump
est requise pour un conteneur spécifique sur le nœud, procédez comme suit.Déterminez l'ID du conteneur cible. La commande
chroot host
précède la commandecrictl
dans cette étape car le conteneur toolbox monte le répertoire racine de l'hôte à l'adresse/host
:# chroot /host crictl ps
Déterminer l'ID du processus du conteneur. Dans cet exemple, l'ID du conteneur est
a7fe32346b120
:# chroot /host crictl inspect --output yaml a7fe32346b120 | grep 'pid' | awk '{print $2}'
Lancez une session
tcpdump
sur le conteneur et redirigez la sortie vers un fichier de capture. Cet exemple utilise49628
comme ID de processus du conteneur etens5
comme nom d'interface. La commandensenter
entre dans l'espace de noms d'un processus cible et exécute une commande dans son espace de noms. Comme le processus cible dans cet exemple est l'ID de processus d'un conteneur, la commandetcpdump
est exécutée dans l'espace de noms du conteneur à partir de l'hôte :# nsenter -n -t 49628 -- tcpdump -nn -i ens5 -w /host/var/tmp/my-cluster-node-my-container_$(date +%d_%m_%Y-%H_%M_%S-%Z).pcap.pcap 1
- 1
- Le chemin d'accès au fichier de capture
tcpdump
se trouve en dehors de l'environnementchroot
car le conteneur de la boîte à outils monte le répertoire racine de l'hôte à l'adresse/host
.
Fournissez le fichier de capture
tcpdump
à l'assistance technique de Red Hat pour analyse, en utilisant l'une des méthodes suivantes.Téléchargez le fichier vers un cas d'assistance Red Hat existant directement à partir d'un cluster OpenShift Container Platform.
Depuis le conteneur de la boîte à outils, exécutez
redhat-support-tool
pour joindre le fichier directement à un cas d'assistance Red Hat existant. Cet exemple utilise l'ID de cas d'assistance01234567
:# redhat-support-tool addattachment -c 01234567 /host/var/tmp/my-tcpdump-capture-file.pcap 1
- 1
- Le conteneur Toolbox monte le répertoire racine de l'hôte à l'adresse
/host
. Faites référence au chemin absolu du répertoire racine du conteneur Toolbox, y compris/host/
, lorsque vous spécifiez les fichiers à télécharger par le biais de la commanderedhat-support-tool
.
Téléchargez le fichier vers un dossier d'assistance Red Hat existant.
Concaténer l'archive
sosreport
en exécutant la commandeoc debug node/<node_name>
et rediriger la sortie vers un fichier. Cette commande suppose que vous avez quitté la sessionoc debug
précédente :$ oc debug node/my-cluster-node -- bash -c 'cat /host/var/tmp/my-tcpdump-capture-file.pcap' > /tmp/my-tcpdump-capture-file.pcap 1
- 1
- Le conteneur de débogage monte le répertoire racine de l'hôte à l'adresse
/host
. Faites référence au chemin absolu du répertoire racine du conteneur de débogage, y compris/host
, lorsque vous spécifiez les fichiers cibles pour la concaténation.
NoteLes nœuds de cluster OpenShift Container Platform 4.12 exécutant Red Hat Enterprise Linux CoreOS (RHCOS) sont immuables et s'appuient sur les opérateurs pour appliquer les changements de cluster. Le transfert d'un fichier de capture
tcpdump
à partir d'un nœud de cluster en utilisantscp
n'est pas recommandé et les nœuds seront altérés en tant que accessed. Cependant, si l'API OpenShift Container Platform n'est pas disponible, ou si le kubelet ne fonctionne pas correctement sur le nœud cible, les opérationsoc
seront impactées. Dans de telles situations, il est possible de copier un fichier de capturetcpdump
à partir d'un nœud en exécutantscp core@<node>.<cluster_name>.<base_domain>:<file_path> <local_path>
.- Accédez à un dossier d'assistance existant sur https://access.redhat.com/support/cases/.
- Sélectionnez Attach files et suivez les instructions pour télécharger le fichier.