O tráfego entre pools de nós é bloqueado por um grupo de segurança de rede personalizado
Este artigo discute como resolver um cenário no qual um NSG (grupo de segurança de rede) personalizado bloqueia o tráfego entre pools de nós em um cluster do AKS (Serviço de Kubernetes do Microsoft Azure).
Sintomas
A resolução do Sistema de Nomes de Domínio (DNS) dos pods do pool de nós do usuário falha.
Tela de fundo
Em cenários que envolvem vários pools de nós, os pods no kube-system
namespace podem ser colocados em um pool de nós (o pool de nós do sistema) enquanto os pods do aplicativo são colocados em um pool de nós diferente (o pool de nós do usuário). Em alguns cenários, os pods que se comunicam entre si podem estar em pools de nós diferentes.
O AKS permite que os clientes tenham pools de nós em sub-redes diferentes. Esse recurso significa que os clientes também podem associar NSGs diferentes à sub-rede de cada pool de nós.
Causa 1: O NSG de um pool de nós bloqueia o tráfego de entrada
O acesso de entrada no NSG de um pool de nós bloqueia o tráfego. Por exemplo, um NSG personalizado no pool de nós do sistema (que hospeda os pods DNS principais) bloqueia o tráfego de entrada na porta UDP (User Datagram Protocol) 53 da sub-rede do pool de nós do usuário.
Solução 1: Configurar o NSG personalizado para permitir o tráfego entre os pools de nós
Verifique se o NSG personalizado permite o tráfego necessário entre os pools de nós, especificamente na porta UDP 53. O AKS não atualizará o NSG personalizado associado a sub-redes.
Causa 2: o acesso de saída no NSG de um pool de nós bloqueia o tráfego
O NSG em outro pool de nós bloqueia o acesso de saída ao pod. Por exemplo, um NSG personalizado no pool de nós do usuário bloqueia o tráfego de saída na porta UDP 53 para o pool de nós do sistema.
Solução 2: configurar o NSG personalizado para permitir o tráfego entre os pools de nós
Consulte Solução 1: Configurar o NSG personalizado para permitir o tráfego entre os pools de nós.
Causa 3: a porta TCP 10250 está bloqueada
Outro cenário comum é que a porta TCP (Transmission Control Protocol) 10250 está bloqueada entre os pools de nós.
Nessa situação, um usuário pode receber uma mensagem de erro semelhante ao seguinte texto:
$ kubectl logs nginx-57cdfd6dd9-xb7hk
Error from server: Get https://<node>:10250/containerLogs/default/nginx-57cdfd6dd9-xb7hk/nginx: net/http: TLS handshake timeout
Se a comunicação na porta TCP 10250 for bloqueada, a conexão com o Kubelet será afetada e os logs não serão buscados.
Solução 3: Verificar se há regras de NSG que bloqueiam a porta TCP 10250
Verifique se alguma regra de NSG bloqueia a comunicação de nó para nó na porta TCP 10250.
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.