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
- CLI do Azure, versão 2.0.59 ou posterior. Você pode abrir o Azure Cloud Shell no navegador da Web para inserir comandos da CLI do Azure. Ou instale ou atualize a CLI do Azure em seu computador local. Para localizar a versão instalada no computador, execute
az --version
. - Um cluster AKS. Se você não tiver um cluster do AKS, crie um usando a CLI do Azure ou por meio do portal do Azure.
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.