Capturar um despejo TCP de um nó Linux 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ó Linux em um cluster do AKS e, em seguida, baixar a captura no computador local.
Pré-requisitos
- A ferramenta kubernetes kubectl . Para instalar o kubectl usando a CLI do Azure, execute o comando az aks install-cli .
- 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.
- A ferramenta de linha de comando tcpdump instalada no nó Linux.
Observação
Você pode automatizar a captura de TCP por meio de um gráfico helm, que pode ser executado em segundo plano como um DaemonSet. Para obter mais informações, confira esta ferramenta personalizada do GitHub para capturar despejos TCP ou usar as etapas nas seções a seguir.
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
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
Etapa 2: Conectar-se a um nó linux
A próxima etapa é estabelecer uma conexão com o nó de cluster do AKS do qual você deseja capturar o rastreamento de rede. Para obter mais informações, consulte Criar uma conexão de shell interativa com um nó Linux.
Etapa 3: verifique se o tcpdump está instalado
Depois de estabelecer uma conexão com o nó do AKS Linux, verifique se a ferramenta tcpdump foi instalada anteriormente em um nó executando tcpdump --version
. Se o tcpdump não tiver sido instalado, o seguinte texto de erro será exibido:
# tcpdump --version
bash: tcpdump: command not found
Em seguida, instale o tcpdump no pod executando o utilitário de tratamento de pacotes da Ferramenta de Pacote Avançado, apt-get:
apt-get update && apt-get install tcpdump
Se o tcpdump estiver instalado, algo semelhante ao seguinte texto será exibido:
# tcpdump --version
tcpdump version 4.9.3
libpcap version 1.8.1
OpenSSL 1.1.1 11 Sep 2018
Etapa 4: criar uma captura de pacote
Para capturar o despejo, execute o comando tcpdump da seguinte maneira:
# tcpdump --snapshot-length=0 -vvv -w /capture.cap
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
Got 6
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, pressione 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
Etapa 5: 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 0 3m29s
azure-vote-front-85b4df594d-jhpzw 1/1 Running 0 3m29s
node-debugger-aks-nodepool1-38878740-vmss000000-jfsq2 1/1 Running 0 60s
O pod auxiliar tem um prefixo de node-debugger-aks
, conforme mostrado na terceira linha. Substitua o nome do pod e execute o seguinte comando kubectl. Esses comandos recuperam a captura de pacote para seu nó Linux.
kubectl cp node-debugger-aks-nodepool1-38878740-vmss000000-jfsq2:/capture.cap capture.cap
Aviso de isenção de responsabilidade para informações de terceiros
Os produtos de terceiros mencionados neste artigo são produzidos por empresas independentes da Microsoft. A Microsoft não oferece nenhuma garantia, implícita ou não, do desempenho ou da confiabilidade desses produtos.
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.