Compartilhar via


Solucionar problemas de conexões com pontos de extremidade fora da rede virtual

Este artigo discute como solucionar problemas de conexões com pontos de extremidade fora da rede virtual (ou seja, por meio da Internet pública) de um cluster do AKS (Serviço de Kubernetes do Microsoft Azure).

Pré-requisitos

Lista de verificação de solução de problemas

O problema é persistente?

Etapa 1: Fazer a solução de problemas básica

Verifique se você pode se conectar a pontos de extremidade públicos na Internet. Para obter instruções, consulte Solução de problemas básicos de conexões de cluster do AKS de saída.

Etapa 2: Determinar o tipo de saída para o cluster do AKS

Para identificar o tipo de saída do cluster do AKS, execute o comando az aks show :

az aks show --resource-group <resource_group> --name <cluster_name> --query "networkProfile.outboundType"

Se o tipo de saída for loadBalancer, não haverá tabela de rotas, a menos que você use a rede kubenet . Se você usar kubenet, certifique-se de que a tabela de rotas padrão não tenha nenhuma configuração adicional que bloqueie a conexão de saída com a Internet. Se você usar outra rede, como CNI do Azure, Alocação Dinâmica ou Sobreposição de CNI do Azure, nenhuma tabela de rotas será criada por padrão. Nesse caso, verifique se o NSG (grupo de segurança de rede) não tem nenhuma configuração personalizada que bloqueie a conexão de saída com a Internet.

Se o tipo de saída for userDefinedRouting, verifique se as seguintes condições foram atendidas:

  • O dispositivo de saída (firewall ou proxy) está acessível.

  • O dispositivo de saída permite o tráfego de saída necessário do cluster.

    Para obter a lista de FQDNs permitidos para o cluster do AKS, execute o comando az aks egress-endpoints list :

    az aks egress-endpoints list --resource-group <resource_group> --name <cluster_name>
    

Se o tipo de saída for managedNATGateway, verifique se a sub-rede do AKS está associada ao gateway NAT executando o comando az network nat gateway show :

az network nat gateway show --resource-group <resource_group> --name <nat_gateway_name> --query "subnets[].id"

Para obter mais informações sobre como usar um gateway NAT junto com o AKS, consulte Gateway NAT gerenciado.

Etapa 3: Examine a saída curl ao se conectar ao pod do aplicativo

Os códigos de resposta de curl podem ajudá-lo a identificar o tipo de problema. Depois que o código de resposta estiver disponível, tente entender melhor como o problema se comporta. Para obter mais informações sobre os códigos de status HTTP e o comportamento subjacente do problema, consulte a tabela a seguir.

Fonte de informação Link
Autoridade para Atribuição de Números da Internet (IANA) Registro de código de status do Hypertext Transfer Protocol (HTTP)
Mozilla Códigos de status de resposta HTTP
Wikipédia Lista de códigos de status de HTTP

Os códigos de status HTTP a seguir podem indicar os problemas listados.

Código de status de HTTP Problema Exemplo
4xx
  1. Um problema afeta a solicitação do cliente.
  2. Existe um bloqueador de rede entre o cliente e o servidor.
  1. A página solicitada não existe ou o cliente não tem permissão para acessar a página.
  2. O tráfego está sendo bloqueado por um grupo de segurança de rede ou um firewall.
5xx Um problema afeta o servidor. O aplicativo está inativo ou um gateway não está funcionando.

Você pode tentar se conectar ao ponto de extremidade do aplicativo usando curl. Aqui está um exemplo de comando e saída:

# 404 error code example
$ curl -vv <host IP address>/test.index

*   Trying <host IP address>:80...
* TCP_NODELAY set
* Connected to <host IP address> (<host IP address>) port 80 (#0)
> GET /test.index HTTP/1.1
> Host: <host IP address>
> User-Agent: curl/7.68.0
> Accept: */*
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 404 Not Found
...
* Connection #0 to host <host IP address> left intact

Etapa 4: verificar o que acontece se o tráfego de saída ignorar temporariamente o dispositivo virtual

Para testes rápidos para determinar se o dispositivo de saída (dispositivo virtual) causa o problema, você pode permitir temporariamente que todo o tráfego passe pela Internet. Para definir essa configuração, você pode alterar o endereço IP padrão e a rota de porta por meio do 0.0.0.0/0 dispositivo virtual para passar pela Internet.

Se o dispositivo de saída funcionar bem ao ignorar o dispositivo virtual, verifique os logs do dispositivo virtual para ver quais pacotes são negados e adicione regras de permissão no dispositivo virtual de acordo.

O problema é intermitente?

Você pode ter problemas intermitentes de saída por vários motivos. Para solucionar problemas de conexão de saída intermitente, tente as seguintes etapas:

Etapa 1: Verificar se os recursos do pod ou do nó estão esgotados

Execute os seguintes comandos para verificar o quanto os recursos são usados:

kubectl top pods
kubectl top nodes

Etapa 2: verifique se o disco do sistema operacional é muito usado

Para verificar se o disco do sistema operacional é muito usado, siga estas etapas:

  1. No portal do Azure, pesquise e selecione Conjuntos de dimensionamento de máquinas virtuais.

  2. Na lista de conjuntos de dimensionamento, selecione o conjunto de dimensionamento usado para o cluster do AKS.

  3. No painel de navegação do conjunto de dimensionamento, vá para a seção Monitoramento e selecione Métricas.

  4. Exiba as métricas de disco para o conjunto de dimensionamento na seção Métricas procurando os campos a seguir.

    Campo Valor
    Escopo Nome da VMSS
    Namespace de métricas Host de Máquina Virtual
    Métricas Métrica do sistema operacional e do disco de dados

Para obter mais informações sobre métricas, consulte Métricas de disco do sistema operacional e disco de dados.

Para exibir as recomendações do AKS sobre a utilização do disco, siga estas etapas:

  1. No portal do Azure, pesquise e selecione Serviços do Kubernetes.

  2. Na lista de serviços do Kubernetes, selecione o nome do cluster do AKS.

  3. No painel de navegação do cluster do AKS, vá para a seção Monitoramento e selecione Recomendações do Assistente.

  4. Revise as recomendações listadas sobre o uso do disco.

Se o disco do sistema operacional for muito usado, considere usar as seguintes soluções:

Se essas soluções não resolverem o problema, analise o processo que executa operações pesadas de leitura/gravação no disco. Em seguida, verifique se você pode mover as ações para um disco de dados em vez do disco do sistema operacional.

Etapa 3: verifique se a porta de conversão do endereço de rede de origem está esgotada

Se os aplicativos estiverem fazendo muitas conexões de saída, eles poderão esgotar o número de portas disponíveis no endereço IP do dispositivo de saída. Siga o diagnóstico do balanceador de carga padrão com métricas, alertas e integridade de recursos para monitorar o uso e a alocação da porta SNAT (conversão de endereços de rede) de origem do balanceador de carga existente. Monitore para verificar ou determinar o risco de esgotamento da porta SNAT.

Você está atingindo ou excedendo o número máximo de portas SNAT alocadas? Nesse caso, você pode verificar seu aplicativo para determinar se ele está reutilizando conexões existentes. Para obter mais informações, consulte Projetar seus aplicativos para usar conexões com eficiência.

Se você achar que o aplicativo está configurado corretamente e precisar de mais portas SNAT do que o número padrão de portas alocadas, siga estas etapas:

  1. Aumente o número de IPs públicos no dispositivo de saída. Se o dispositivo de saída for o balanceador de carga, você poderá Aumentar o número de endereços IP públicos no balanceador de carga.

  2. Aumente as portas por nó nos nós de trabalho do AKS.

Aviso de isenção de responsabilidade para contatos de terceiros

A Microsoft fornece informações de contato de terceiros para ajudá-lo a encontrar informações adicionais sobre esse tópico. Essas informações de contato podem ser alteradas sem aviso prévio. A Microsoft não garante a precisão das informações de contato de terceiros.

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.