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
- Herramienta kubectl de Kubernetes. Para instalar kubectl mediante la CLI de Azure, ejecute el comando az aks install-cli .
- Un clúster de AKS. Si no tiene un clúster de AKS, cree uno mediante la CLI de Azure o mediante el Azure Portal.
- La herramienta de línea de comandos tcpdump instalada en el nodo Linux.
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.
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de