O Container Service for Kubernetes (ACK) oferece o recurso Network Diagnosis para solucionar problemas comuns de rede, como falhas de conexão entre pods, do cluster para a internet pública ou da internet pública para um Service do tipo LoadBalancer. Este tópico descreve o funcionamento do Network Diagnosis e seu uso na resolução de problemas de conectividade frequentes.
Ao usar o recurso de diagnóstico, o sistema executa um agente de coleta de dados nos nós do cluster para obter os resultados. As informações coletadas incluem versão do sistema, carga, status do docker e do Kubelet, além de mensagens de erro importantes dos logs do sistema. O agente de coleta não acessa informações de negócios nem dados sensíveis.
Pré-requisitos
Um cluster gerenciado ACK criado.
Diagnóstico de rede
O console do ACK disponibiliza o recurso Network Diagnosis, que permite diagnosticar rapidamente problemas comuns de rede ao informar o endereço de source, o endereço de destino, a porta de destino e o protocolo. Use esse recurso sem necessidade de conhecimento avançado em arquiteturas complexas de redes de contêineres, funcionamento interno de plug-ins de rede ou operações no nível do kernel.
O recurso Network Diagnosis baseia-se no projeto open source KubeSkoop. O KubeSkoop oferece diagnósticos com um clique para problemas comuns de rede em clusters Kubernetes, compatível com diversos plug-ins de rede e provedores IaaS, e utiliza eBPF para monitoramento e análise profundos de caminhos críticos do kernel. Este tópico aborda apenas o recurso Network Diagnosis. Para detalhes sobre monitoramento e análise avançados, consulte Usar o KubeSkoop para solucionar problemas de rede.
Como funciona

Construção da topologia: Após o fornecimento das informações de diagnóstico, o Network Diagnosis cria uma topologia de acesso baseada nos detalhes informados e nas informações de recursos coletadas do cluster, como pods, nós, Services e NetworkPolicies.
Coleta de informações: O Network Diagnosis reúne dados de tempo de execução, da pilha de rede e detalhes da infraestrutura de rede. Essas informações servem para solução de problemas e análise de rede.
Simulação de caminho: O Network Diagnosis obtém informações da pilha de rede dos nós ou contêineres relevantes executando comandos em instâncias do Elastic Compute Service (ecs) ou implantando pods coletores no cluster. Esses dados incluem detalhes sobre dispositivos de rede, parâmetros sysctl, iptables e IPVS. A ferramenta também coleta informações da infraestrutura em nuvem, como tabelas de rotas, grupos de segurança e gateways NAT. Em seguida, o sistema compara os dados coletados com as configurações esperadas para identificar configurações incorretas. Esse processo envolve simular regras de iptables e roteamento, verificar o status dos dispositivos e validar tabelas de rotas e regras de grupos de segurança na nuvem.
Resultados do diagnóstico: Após comparar a configuração real com o estado esperado, a ferramenta gera uma topologia de rede e destaca quaisquer nós anômalos e problemas detectados.
Usar o Network Diagnosis
Limitações
O pod a ser diagnosticado deve estar no estado Running.
Conexões da internet pública para um Service do tipo LoadBalancer têm suporte apenas para instâncias de Classic Load Balancer (CLB) de camada 4 com até 10 pods de backend.
Atualmente, não há suporte a diagnóstico para clusters ACK Serverless ou nós virtuais.
Procedimento
Faça login no console do ACK. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, clique no nome do cluster desejado. No painel de navegação à esquerda, escolha .
Na página Diagnostics, clique na aba Network diagnostics e, em seguida, clique em Diagnose no canto superior esquerdo.
-
No painel Access Information, insira o Source IP Address, o Target Address e a Port, e selecione o Protocol. Leia o aviso, marque I understand and agree e clique em Diagnose.
Para obter informações sobre os parâmetros de diagnóstico, consulte Parâmetros de diagnóstico.
-
Na página Diagnosis Result, visualize os resultados. A seção Full access path exibe uma visão ponta a ponta do caminho de conexão diagnosticado.
Nós anômalos aparecem destacados em uma cor diferente. Para informações sobre resultados de diagnóstico comuns, consulte Resultados de diagnóstico comuns e soluções.
Os resultados do diagnóstico são exibidos em uma tabela com três colunas: Level (como FATAL), Node e Diagnosis result. Isso ajuda a localizar rapidamente nós anômalos e erros específicos de roteamento. Caso os resultados não resolvam seu problema, clique no link Submit Ticket ou Feedback na página para obter mais ajuda.
Parâmetros de diagnóstico
Cenário 1: Pod para pod e pod para nó
Se houver problemas de conectividade entre pods ou entre pods e nós, utilize o Network Diagnosis para solucionar a conexão. A tabela a seguir descreve os parâmetros.
|
Parâmetro |
Descrição |
|
Endereço de origem |
Endereço IP de um pod ou nó. |
|
Endereço de destino |
Endereço IP de um pod ou nó. |
|
Porta |
A porta a ser diagnosticada. |
|
Protocolo |
O protocolo a ser diagnosticado. |
Cenário 2: Pod e nó para Service
Diagnostique a conectividade com um Service usando seu IP de cluster como destino. A ferramenta verifica o caminho de rede de um pod ou nó até cada endpoint do Service e valida as configurações de rede relacionadas. A tabela a seguir descreve os parâmetros.
|
Parâmetro |
Descrição |
|
Endereço de origem |
Endereço IP de um pod ou nó. |
|
Endereço de destino |
IP de cluster do Service. |
|
Porta |
A porta a ser diagnosticada. |
|
Protocolo |
O protocolo a ser diagnosticado. |
Cenário 3: Caminho DNS
Quando o destino é um nome de domínio, pode ser necessário verifique se o DNS interno do cluster está funcionando corretamente, além de checar o caminho da origem até o IP de destino. Utilize o Network Diagnosis para testar a conectividade de um pod ao serviço de DNS do cluster (o Service kube-dns no namespace kube-system) e identificar possíveis problemas de resolução de DNS.
Execute o comando a seguir para obter o IP de cluster do Service kube-dns no namespace kube-system:
kubectl get svc -n kube-system kube-dns
Exemplo de saída:
NAME TYPE CLUSTER-IP EXTERNAL-IP <none> 53/UDP,53/TCP,9153/TCP 6d
Na saída, 172,16.XX.XX representa o IP de cluster do Service kube-dns. Utilize esse IP como endereço de destino. A tabela a seguir descreve os parâmetros.
|
Parâmetro |
Descrição |
|
Endereço de origem |
Endereço IP de um pod ou nó. |
|
Endereço de destino |
IP de cluster do Service kube-dns. |
|
Porta |
53 |
|
Protocolo |
udp |
Cenário 4: Pod e nó para a internet
Utilize o Network Diagnosis para verifique a conexão de um pod ou nó com um endereço IP público. Se o destino for um nome de domínio, resolva-o manualmente para o respectivo endereço IP público antes de prosseguir. A tabela a seguir descreve os parâmetros.
|
Parâmetro |
Descrição |
|
Endereço de origem |
Endereço IP de um pod ou nó. |
|
Endereço de destino |
Endereço IP público. |
|
Porta |
A porta a ser diagnosticada. |
|
Protocolo |
O protocolo a ser diagnosticado. |
Cenário 5: Internet para Service LoadBalancer
Caso não consiga acessar um Service do tipo LoadBalancer a partir da internet pública, diagnostique a conexão usando um IP público como origem e o IP externo do Service LoadBalancer como destino. A tabela a seguir descreve os parâmetros.
|
Parâmetro |
Descrição |
|
Endereço de origem |
Endereço IP público. |
|
Endereço de destino |
Endereço IP externo do Service LoadBalancer. |
|
Porta |
A porta a ser diagnosticada. |
|
Protocolo |
O protocolo a ser diagnosticado. |
Resultados de diagnóstico comuns e soluções
|
Resultado do diagnóstico |
Descrição |
Solução |
|
pod container ... is not ready |
O contêiner no pod não está pronto. |
Verifique o status de integridade do pod e corrija o problema. |
|
NetworkPolicy ... deny the packet from ... |
Uma NetworkPolicy está bloqueando o pacote. |
Modifique as regras correspondentes da NetworkPolicy. |
|
no process listening on ... |
Nenhum processo no contêiner ou nó está escutando na porta especificada com o protocolo indicado. |
Verifique se o processo alvo está em execução correta. Confira os parâmetros de diagnóstico, incluindo porta e protocolo. |
|
no route to host .../invalid route ... for packet ... |
Nenhuma rota para o host foi encontrada ou uma rota existente aponta para um destino incorreto. |
Verifique se o plug-in de rede está funcionando corretamente. |
|
... do not have same security group |
Os grupos de segurança das duas instâncias ecs não possuem regras que permitam tráfego entre elas, o que pode causar perda de pacotes. |
Configure as instâncias ecs para usar o mesmo grupo de segurança. |
|
security group ... not allow packet ... |
O grupo de segurança na instância ecs está bloqueando o pacote. |
Revise as regras do grupo de segurança e permita o tráfego do endereço necessário. |
|
A tabela de rotas da nuvem não contém uma rota para o endereço IP de destino. |
Verifique a configuração da tabela de rotas da nuvem. Se o destino for um endereço IP público, verifique também a configuração do gateway NAT público. |
|
A rota na tabela de rotas da nuvem não aponta para o próximo salto esperado. |
Verifique a configuração da tabela de rotas da nuvem. Se o destino for um endereço IP público, verifique também a configuração do gateway NAT público. |
|
no snat entry on nat gateway ... |
A entrada SNAT especificada não foi encontrada no gateway NAT público. |
Verifique a configuração da regra SNAT no gateway NAT público. |
|
backend ... health status for port ..., not "normal" |
Um servidor de backend da instância CLB falhou na verificação de integridade. |
Confirme se os endpoints corretos estão associados à instância CLB e se os serviços de backend nesses endpoints estão íntegros. |
|
cannot find listener port ... for slb ... |
A porta de listener especificada não foi encontrada na instância CLB. |
Verifique a configuração do Service LoadBalancer e confirme se os parâmetros de diagnóstico, incluindo porta e protocolo, estão corretos. |
|
status of loadbalancer for ... port ... not "running" |
O listener na instância CLB não está no estado Running. |
Verifique o status do listener na instância CLB. |
|
Service ... has no valid endpoint |
O Service não possui endpoints válidos. |
Verifique se o seletor de rótulos do Service está configurado conforme esperado e confirme se os endpoints correspondentes existem e estão íntegros. Para problemas relacionados ao acesso a um IP de Service LoadBalancer de dentro do cluster, consulte Falha no acesso a instâncias CLB de dentro de um cluster. |