Configurar a conectividade do pod do GKE com endpoints externos

Este documento explica como configurar a conectividade de pods no GKE a endpoints externos, incluindo recursos em redes locais e serviços de Internet pública. Para controlar o endereço IP de origem do tráfego de pods do GKE, você pode usar o ip-masq-agent (conversão no nível do nó) e o Cloud NAT (saída no nível da VPC).

Visão geral

Quando um pod em um cluster do GKE nativo da VPC envia um pacote para um destino fora do cluster, o endereço IP de origem do pacote muda dependendo de como o agente de mascaramento de IP no nível do nó (ip-masq-agent) e o Cloud NAT estão configurados.

  1. Conversão no nível do nó (ip-masq-agent) : converte o endereço IP de origem do pacote do endereço IP do pod (intervalo de sub-rede secundário) para o endereço IP do nó interno (intervalo de sub-rede principal) com base em uma lista nonMasqueradeCIDRs configurada.
  2. Gateway no nível da VPC (Cloud NAT) : converte endereços IP internos da VPC (endereços IP de nó ou endereços IP de pod) em endereços IP públicos estáticos para permitir o acesso à Internet de saída.

Dependendo se um destino é mascarado pelo nó, o pacote sai do nó com o endereço IP do nó ou o endereço IP do pod. Esse endereço IP de origem determina como você configura seus Cloud Routers ou roteadores locais.


Como o mascaramento de IP e o Cloud NAT funcionam juntos

Para o tráfego voltado para a Internet, os pacotes de um pod atravessam a pilha de rede do nó e o gateway do Cloud NAT.

Se o endereço IP de destino não corresponder a nenhum intervalo na lista nonMasqueradeCIDRs:

  • O ip-masq-agent executa a NAT de origem (SNAT) no nó do GKE. O endereço IP de origem é reescrito do endereço IP do pod para o endereço IP do nó.
  • O pacote entra na rede VPC com o endereço IP do nó como origem.
  • O gateway do Cloud NAT intercepta o pacote.
  • O Cloud NAT converte o endereço IP do nó em um endereço IP público e o encaminha para a Internet.

Cenário B: preservação do endereço IP do pod (sem mascaramento)

Se o endereço IP de destino corresponder a um intervalo na lista nonMasqueradeCIDRs (ou se a SNAT padrão estiver desativada):

  • O ip-masq-agent deixa o pacote inalterado. O endereço IP de origem permanece o endereço IP do pod.
  • O pacote entra na rede VPC com o endereço IP do pod como origem.
  • O gateway do Cloud NAT intercepta o pacote.
  • O Cloud NAT converte o endereço IP do pod em um endereço IP público somente se o Cloud NAT estiver configurado explicitamente para converter o intervalo de endereços IP secundário da sub-rede usado para pods do GKE.

Verificador de mascaramento de IP

Use esse verificador para conferir se um endereço IP de destino será mascarado com base na configuração do ip-masq-agent.


Exemplo de fluxo de tráfego

Para entender o caminho de conversão, considere o exemplo de configuração a seguir:

  • Intervalo de endereços IP do pod:10.4.0.0/14 (endereço IP do pod: 10.4.0.5)
  • Intervalo de endereços IP do nó:10.128.0.0/20 (endereço IP do nó: 10.128.0.10)
  • Endereço IP de destino:8.8.8.8 (servidor DNS público, não na lista nonMasqueradeCIDRs)

Quando o pod envia um pacote, ocorre o seguinte:

  1. O pacote começa no pod:o pacote tem origem na interface de rede do pod (endereço IP: 10.4.0.5) com um endereço IP de destino de 8.8.8.8.
  2. Mascaramento no nível do nó:como o endereço IP de destino 8.8.8.8 não está na lista nonMasqueradeCIDRs, o ip-masq-agent no nó do host intercepta o pacote quando ele sai e executa a SNAT. O endereço IP de origem é reescrito do endereço IP do pod 10.4.0.5 para o endereço IP do nó do host, que é 10.128.0.10.
  3. Saída da VPC:o pacote chega à rede VPC usando o endereço IP do nó do host 10.128.0.10 como endereço IP de origem.
  4. Gateway do Cloud NAT:como o destino é a Internet pública, o Cloud NAT processa o pacote, converte o endereço IP de origem de 10.128.0.10 para um endereço IP NAT público (por exemplo, 203.0.113.1) e o encaminha para a Internet.
  5. Processamento de respostas:a resposta retorna ao endereço IP público do Cloud NAT, que o Cloud NAT converte novamente para o endereço IP do nó do host 10.128.0.10. Em seguida, o nó converte o endereço IP do nó do host de volta para o endereço IP do pod, que é 10.4.0.5, e o entrega ao contêiner do pod.

Fluxo de tráfego com o Cloud Service Mesh (CSM)

Se as cargas de trabalho usarem Cloud Service Mesh, o roteamento de tráfego vai se comportar da seguinte maneira:

  • Proxy sidecar ou redirecionamento CNI sem sidecar:os pacotes de saída do contêiner do aplicativo são interceptados pela malha (usando um proxy sidecar, como o Envoy, ou por redirecionamento baseado em ebpf ou CNI) antes de chegar ao namespace de rede do nó.
  • Aplicação de políticas:a malha determina se a conexão é permitida com base nas políticas de autorização e saída.
  • **Roteamento de saída**
    • Se o tráfego for direcionado usando um gateway de saída do Cloud Service Mesh, o endereço IP de origem do pacote que sai do nó vai corresponder ao endereço IP do nó ou do pod do gateway de saída, em vez do pod de origem.
    • Se o tráfego for roteado diretamente para o endpoint externo, o pacote vai sair do proxy e será roteado pela pilha de rede do nó do host padrão. Nesse caso, as políticas ip-masq-agent e as configurações do Cloud NAT descritas anteriormente neste documento ainda se aplicam ao tráfego de saída.
  • Para mais informações sobre como configurar o roteamento, os gateways e gerenciar o tráfego externo no Cloud Service Mesh, consulte a documentação do Cloud Service Mesh.

Solução de problemas e isolamento de problemas de conectividade

Se um pod não conseguir se conectar a um endpoint externo e você estiver usando uma malha de serviço, será necessário isolar se o problema está na configuração da malha de serviço ou no roteamento do GKE subjacente. Para isolar o problema, use o método a seguir:

  1. Ignorar a malha de serviço: implante um pod de cliente temporário em um namespace em que a injeção de sidecar esteja desativada ou use a anotação sidecar.istio.io/inject: "false" na especificação do pod para evitar a injeção na carga de trabalho de teste.
  2. Testar a conectividade:tente se conectar ao destino externo (por exemplo, usando curl, ping ou nc) do pod não mesh.
  3. Analisar os resultados:
    • Se a conexão for bem-sucedida:o roteamento de rede do GKE subjacente, as regras ip-masq-agent e o gateway do Cloud NAT estão configurados corretamente. O bloco de conectividade é causado por políticas do Cloud Service Mesh, regras de saída ausentes ou regras mTLS. Para mais informações sobre a solução de problemas, consulte Solução de problemas em implantações que usam o Envoy na documentação do Cloud Service Mesh.
    • Se a conexão falhar:o problema pertence à infraestrutura de rede subjacente (como mascaramento de IP, Cloud Router, Cloud NAT, regras de firewall da VPC ou firewalls locais). Use as etapas nesta página para verificar a configuração de roteamento.

Determinar o intervalo de endereços IP de origem usando o verificador

Antes de configurar roteadores ou firewalls, use o verificador de mascaramento de IP neste documento e faça o seguinte:

  1. Cole o conteúdo YAML do ConfigMap ip-masq-agent no campo de configuração.
  2. Insira o endereço IP de destino do endpoint de destino (como seu banco de dados local ou um serviço de Internet externo).
  3. Clique em Verificar mascaramento.
  4. Observe a saída:
    • Mascarado: o pacote usa o intervalo de endereços IP do nó como origem.
    • Não mascarado: o pacote usa o intervalo de endereços IP do pod como origem.

Configurar a conectividade com endpoints

Com base nos resultados do verificador de mascaramento de IP, configure os caminhos e gateways de rede de acordo com o tipo de destino.

Endpoints locais (VPN ou Interconnect)

O Cloud NAT não é usado para conectividade local, mas é necessário configurar os roteadores e firewalls com base no intervalo de endereços IP de origem determinado com o verificador de mascaramento de IP.

Se o tráfego for mascarado (a origem é o endereço IP do nó):

  1. Cloud Router:verifique se os anúncios do Cloud Router incluem o intervalo de endereços IP principal da sub-rede do cluster do GKE.
  2. Roteador ou firewall local:configure os roteadores e firewalls locais para permitir e processar o tráfego de entrada do intervalo de endereços IP do nó do GKE.

Se o tráfego não for mascarado (a origem é o endereço IP do pod):

  1. Cloud Router:configure anúncios de rota personalizados no Cloud Router para anunciar o intervalo de endereços IP secundário do pod do GKE para sua rede local.
  2. Roteador ou firewall local:configure tabelas de roteamento e firewalls locais para permitir o tráfego originado do intervalo de endereços IP do pod do GKE e verifique se as rotas de retorno são anunciadas de volta para a VPC.

Endpoints da Internet (Cloud NAT)

Ao rotear o tráfego para endpoints da Internet pública, é necessário configurar um gateway do Cloud NAT dentro da VPC.

  1. No Cloud de Confiance console do, acesse a página Cloud NAT.
  2. Selecione ou crie seu gateway do Cloud NAT.
  3. Em Origem do Cloud NAT, escolha como o gateway processa os intervalos de sub-rede do GKE:
    • Se o tráfego for mascarado (a origem é o endereço IP do nó) : selecione Intervalos de endereços IP principais da sub-rede. As implantações comerciais do GKE geralmente são definidas como padrão.
    • Se o tráfego não for mascarado (a origem é o endereço IP do pod) : selecione Intervalos de endereços IP principal e secundário (ou especifique o intervalo secundário do pod do GKE explicitamente). Se você selecionar apenas intervalos principais, o tráfego da Internet do pod do GKE será bloqueado.