Captura de un volcado tcp desde un nodo de Windows 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 Windows en un clúster de AKS y, a continuación, descargar la captura en la máquina local.

Requisitos previos

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
akswin000000                        Ready    agent   3m8s    v1.20.9   10.240.0.4     <none>        Windows Server 2019 Datacenter   10.0.17763.2237    docker://20.10.6
akswin000001                        Ready    agent   3m50s   v1.20.9   10.240.0.115   <none>        Windows Server 2019 Datacenter   10.0.17763.2237    docker://20.10.6
akswin000002                        Ready    agent   3m32s   v1.20.9   10.240.0.226   <none>        Windows Server 2019 Datacenter   10.0.17763.2237    docker://20.10.6

Paso 2: Conectarse a un nodo de Windows

El siguiente paso consiste en establecer una conexión con el nodo del clúster de AKS. Puede autenticarse mediante una clave de Secure Shell (SSH) o mediante la contraseña de administrador de Windows en una conexión de Protocolo de Escritorio remoto (RDP). Ambos métodos requieren la creación de una conexión intermedia, ya que actualmente no se puede conectar directamente al nodo de Windows de AKS. Tanto si se conecta a un nodo a través de SSH o RDP, debe especificar el nombre de usuario de los nodos de AKS. De forma predeterminada, este nombre de usuario es azureuser.

Si tiene una clave SSH, cree una conexión SSH al nodo de Windows. La clave SSH no se conserva en los nodos de AKS. La clave SSH se revierte a lo que se instaló inicialmente en el clúster durante cualquier:

  • Reiniciar
  • Actualización de la versión
  • Actualización de la imagen de nodo

Paso 3: Crear una captura de paquetes

Cuando está conectado al nodo de Windows a través de SSH o RDP, aparece un formulario del símbolo del sistema de Windows:

azureuser@akswin000000 C:\Users\azureuser>

Ahora, abra un símbolo del sistema y escriba el siguiente comando de Network Shell (netsh) para capturar seguimientos (inicio de seguimiento de netsh). Este comando inicia el proceso de captura de paquetes.

netsh trace start capture=yes tracefile=C:\Users\azureuser\AKS_node_name.etl 

La salida aparece de forma similar al texto siguiente:

Trace configuration:
-------------------------------------------------------------------
Status:             Running
Trace File:         AKS_node_name.etl
Append:             Off
Circular:           On
Max Size:           250 MB
Report:             Off

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, escriba netsh trace stop:

azureuser@akswin000000 C:\Users\azureuser>netsh trace stop
Merging traces ... done
Generating data collection ... done
The trace file and additional troubleshooting information have been compiled as "C:\Users\azureuser\AKS_node_name.cab".
File location = C:\Users\azureuser\AKS_node_name.etl
Tracing session was successfully stopped.

Paso 4: 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   2          3d21h
azure-vote-front-85b4df594d-jhpzw                       1/1     Running   2          3d21h
node-debugger-aks-nodepool1-38878740-vmss000000-6ztp6   1/1     Running   0          3m58s

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 los siguientes comandos de copia segura (scp). Estos comandos recuperan los archivos de registro de seguimiento de eventos (.etl) y de archivo (.cab), que se generan para la captura de paquetes.

scp -o 'ProxyCommand ssh -p 2022 -W %h:%p azureuser@127.0.0.1' azureuser@10.240.0.97:AKS_node_name.cab .
scp -o 'ProxyCommand ssh -p 2022 -W %h:%p azureuser@127.0.0.1' azureuser@10.240.0.97:AKS_node_name.etl .

Aparece una salida similar al texto siguiente:

$ scp -o 'ProxyCommand ssh -p 2022 -W %h:%p azureuser@127.0.0.1' azureuser@10.240.0.97:AKS_node_name.cab .

Authorized uses only. All activity may be monitored and reported.
AKS_node_name.cab                                                                  100%  571KB 984.0KB/s   00:00

scp -o 'ProxyCommand ssh -p 2022 -W %h:%p azureuser@127.0.0.1' azureuser@10.240.0.97:AKS_node_name.etl .

Authorized uses only. All activity may be monitored and reported.
AKS_node_name.etl                                                                  100% 1536KB   1.3MB/s   00:01

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.