Capturar um despejo TCP de um nó do Windows em um cluster do AKS

Problemas de rede podem ocorrer quando você estiver usando um cluster do AKS (Microsoft Serviço de Kubernetes do Azure). Para ajudar a investigar esses problemas, este artigo explica como capturar um despejo TCP de um nó do Windows em um cluster do AKS e, em seguida, baixar a captura no computador local.

Pré-requisitos

Etapa 1: localizar os nós para solucionar problemas

Como você determina de qual nó retirar o despejo TCP? Primeiro, você obtém a lista de nós no cluster do AKS usando o cliente de linha de comando kubernetes, kubectl. Siga as instruções para se conectar ao cluster e executar o kubectl get nodes --output wide comando usando o portal do Azure ou a CLI do Azure. Uma lista de nós semelhante à seguinte saída é exibida:

$ 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

Etapa 2: conectar-se a um nó do Windows

A próxima etapa é estabelecer uma conexão com o nó de cluster do AKS. Você autentica usando uma chave SSH (Secure Shell) ou usando a senha de administrador do Windows em uma conexão RDP (Protocolo de Área de Trabalho Remota). Ambos os métodos exigem a criação de uma conexão intermediária, pois atualmente você não pode se conectar diretamente ao nó do AkS Windows. Se você se conectar a um nó por meio de SSH ou RDP, você precisa especificar o nome de usuário para os nós AKS. Por padrão, esse nome de usuário é azureuser.

Se você tiver uma chave SSH, crie uma conexão SSH com o nó Windows. A chave SSH não persiste nos nós do AKS. A chave SSH reverte para o que foi inicialmente instalado no cluster durante qualquer:

  • Reiniciar
  • Atualização de versão
  • Atualização de imagem de nó

Etapa 3: criar uma captura de pacote

Quando você está conectado ao nó Windows por meio de SSH ou RDP, uma forma do prompt de comando do Windows é exibida:

azureuser@akswin000000 C:\Users\azureuser>

Agora abra um prompt de comando e insira o comando Network Shell (netsh) abaixo para capturar rastreamentos (início do rastreamento netsh). Este comando inicia o processo de captura de pacotes.

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

A saída é semelhante ao seguinte texto:

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

Enquanto o rastreamento estiver em execução, replique o problema muitas vezes. Essa ação garante que o problema tenha sido capturado no despejo TCP. Observe o carimbo de hora enquanto você replica o problema. Para interromper a captura de pacotes quando terminar, insira 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.

Etapa 4: transferir a captura localmente

Depois de concluir a captura do pacote, identifique o pod auxiliar para que você possa copiar o despejo localmente. Abra um segundo console e, em seguida, obtenha uma lista de pods executando kubectl get pods, conforme mostrado abaixo.

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

O pod auxiliar tem um prefixo de node-debugger-aks, conforme mostrado na terceira linha. Substitua o nome do pod e execute os seguintes comandos de cópia segura (scp). Esses comandos recuperam os arquivos log de rastreamento de eventos (.etl) e arquivos (.cab), que são gerados para a captura de pacotes.

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 .

A saída semelhante ao texto a seguir é exibida:

$ 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

Entre em contato conosco para obter ajuda

Se você tiver dúvidas ou precisar de ajuda, crie uma solicitação de suporte ou peça ajuda à comunidade de suporte do Azure. Você também pode enviar comentários sobre o produto para a comunidade de comentários do Azure.