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
$ oc get nodesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 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
$ oc debug node/my-cluster-nodeCopy to Clipboard Copied! Toggle word wrap Toggle overflow Définissez
/hostcomme 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/hostau 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
# chroot /hostCopy to Clipboard Copied! Toggle word wrap Toggle overflow 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
ocseront 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
# ip adCopy to Clipboard Copied! Toggle word wrap Toggle overflow Démarrer un conteneur
toolbox, qui contient les binaires et les plugins nécessaires à l'exécution desosreport:toolbox
# toolboxCopy to Clipboard Copied! Toggle word wrap Toggle overflow NoteSi un pod
toolboxest déjà en cours d'exécution, la commandetoolboxproduit'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
tcpdumpsur le nœud du cluster et redirigez la sortie vers un fichier de capture. Cet exemple utiliseens5comme 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
$ tcpdump -nn -s 0 -i ens5 -w /host/var/tmp/my-cluster-node_$(date +%d_%m_%Y-%H_%M_%S-%Z).pcap1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Le chemin d'accès au fichier de capture
tcpdumpse trouve en dehors de l'environnementchrootcar le conteneur de la boîte à outils monte le répertoire racine de l'hôte à l'adresse/host.
Si une capture
tcpdumpest requise pour un conteneur spécifique sur le nœud, procédez comme suit.Déterminez l'ID du conteneur cible. La commande
chroot hostprécède la commandecrictldans cette étape car le conteneur toolbox monte le répertoire racine de l'hôte à l'adresse/host:chroot /host crictl ps
# chroot /host crictl psCopy to Clipboard Copied! Toggle word wrap Toggle overflow 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}'# chroot /host crictl inspect --output yaml a7fe32346b120 | grep 'pid' | awk '{print $2}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow Lancez une session
tcpdumpsur le conteneur et redirigez la sortie vers un fichier de capture. Cet exemple utilise49628comme ID de processus du conteneur etens5comme nom d'interface. La commandensenterentre 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 commandetcpdumpest 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
# 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.pcap1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Le chemin d'accès au fichier de capture
tcpdumpse trouve en dehors de l'environnementchrootcar 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-toolpour 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
# redhat-support-tool addattachment -c 01234567 /host/var/tmp/my-tcpdump-capture-file.pcap1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 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
sosreporten exécutant la commandeoc debug node/<node_name>et rediriger la sortie vers un fichier. Cette commande suppose que vous avez quitté la sessionoc debugpré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
$ oc debug node/my-cluster-node -- bash -c 'cat /host/var/tmp/my-tcpdump-capture-file.pcap' > /tmp/my-tcpdump-capture-file.pcap1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 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 utilisantscpn'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érationsocseront 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.