Captura de un volcado de TCP desde un nodo de Linux en un clúster de AKS

Los problemas de red pueden producirse cuando se usa un clúster de Microsoft Azure Kubernetes Service (AKS). Para ayudar a investigar estos problemas, en este artículo se explica cómo capturar un volcado tcp desde un nodo de Linux en un clúster de AKS y, a continuación, descargar la captura en la máquina local.

Requisitos previos

Nota:

Puede automatizar la captura TCP a través de un gráfico de Helm, que se puede ejecutar en segundo plano como DaemonSet. Para obtener más información, consulte esta herramienta personalizada de GitHub para capturar volcados de TCP o siga los pasos descritos en las secciones siguientes.

Paso 1: Buscar los nodos para solucionar problemas

¿Cómo se determina de qué nodo extraer el volcado tcp? Primero obtendrá la lista de nodos en el clúster de AKS mediante el cliente de línea de comandos de Kubernetes, kubectl. Siga las instrucciones para conectarse al clúster y ejecutar el kubectl get nodes --output wide comando mediante el Azure Portal o la CLI de Azure. Aparece una lista de nodos similar a la siguiente salida:

$ kubectl get nodes --output wide
NAME                                STATUS   ROLES   AGE   VERSION   INTERNAL-IP    EXTERNAL-IP   OS-IMAGE                         KERNEL-VERSION     CONTAINER-RUNTIME
aks-agentpool-34796016-vmss000000   Ready    agent   45h   v1.20.9   10.240.1.81    <none>        Ubuntu 18.04.6 LTS               5.4.0-1062-azure   containerd://1.4.9+azure
aks-agentpool-34796016-vmss000002   Ready    agent   45h   v1.20.9   10.240.2.47    <none>        Ubuntu 18.04.6 LTS               5.4.0-1062-azure   containerd://1.4.9+azure

Paso 2: Conexión a un nodo de Linux

El siguiente paso consiste en establecer una conexión al nodo de clúster de AKS desde el que desea capturar el seguimiento de red. Para obtener más información, consulte Creación de una conexión de shell interactiva a un nodo de Linux.

Paso 3: Asegúrese de que tcpdump está instalado

Después de establecer una conexión al nodo de AKS Linux, compruebe que la herramienta tcpdump se ha instalado anteriormente en un nodo mediante la ejecución de tcpdump --version. Si no se ha instalado tcpdump, aparece el siguiente texto de error:

# tcpdump --version
bash: tcpdump: command not found

A continuación, instale tcpdump en el pod mediante la ejecución de la utilidad de control de paquetes de Advanced Package Tool, apt-get:

apt-get update && apt-get install tcpdump

Si tcpdump está instalado, aparece algo similar al texto siguiente:

# tcpdump --version
tcpdump version 4.9.3
libpcap version 1.8.1
OpenSSL 1.1.1  11 Sep 2018

Paso 4: Crear una captura de paquetes

Para capturar el volcado, ejecute el comando tcpdump de la siguiente manera:

# tcpdump --snapshot-length=0 -vvv -w /capture.cap
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
Got 6

Mientras se ejecuta el seguimiento, replique el problema muchas veces. Esta acción garantiza que el problema se haya capturado en el volcado tcp. Tenga en cuenta la marca de tiempo mientras replica el problema. Para detener la captura de paquetes cuando haya terminado, presione Ctrl+C:

# tcpdump -s 0 -vvv -w /capture.cap
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
^C526 packets captured
526 packets received by filter
0 packets dropped by kernel

Paso 5: Transferencia local de la captura

Después de completar la captura de paquetes, identifique el pod auxiliar para que pueda copiar el volcado localmente. Abra una segunda consola y, a continuación, obtenga una lista de pods ejecutando kubectl get pods, como se muestra a continuación.

$ kubectl get pods
NAME                                                    READY   STATUS    RESTARTS   AGE
azure-vote-back-6c4dd64bdf-m4nk7                        1/1     Running   0          3m29s
azure-vote-front-85b4df594d-jhpzw                       1/1     Running   0          3m29s
node-debugger-aks-nodepool1-38878740-vmss000000-jfsq2   1/1     Running   0          60s

El pod auxiliar tiene un prefijo de node-debugger-aks, como se muestra en la tercera fila. Reemplace el nombre del pod y, a continuación, ejecute el siguiente comando kubectl. Estos comandos recuperan la captura de paquetes para el nodo de Linux.

kubectl cp node-debugger-aks-nodepool1-38878740-vmss000000-jfsq2:/capture.cap capture.cap

Aviso de declinación de responsabilidades sobre la información de terceros

Los productos de otros fabricantes que se mencionan en este artículo han sido creados por compañías independientes de Microsoft. Microsoft no ofrece ninguna garantía, ya sea implícita o de otro tipo, sobre la confiabilidad o el rendimiento de dichos productos.

Ponte en contacto con nosotros para obtener ayuda

Si tiene preguntas o necesita ayuda, cree una solicitud de soporte o busque consejo en la comunidad de Azure. También puede enviar comentarios sobre el producto con los comentarios de la comunidad de Azure.