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
- CLI de Azure, versión 2.0.59 o posterior. Puede abrir Azure Cloud Shell en el explorador web para escribir comandos de la CLI de Azure. O instale o actualice la CLI de Azure en el equipo local. Para buscar la versión instalada en el equipo, ejecute
az --version
. - 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.
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.