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.
- 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 listanonMasqueradeCIDRsconfigurada. - 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.
Cenário A: mascaramento para o endereço IP do nó (recomendado para saída da Internet)
Se o endereço IP de destino não corresponder a nenhum intervalo na lista nonMasqueradeCIDRs:
- O
ip-masq-agentexecuta 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-agentdeixa 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 listanonMasqueradeCIDRs)
Quando o pod envia um pacote, ocorre o seguinte:
- 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 de8.8.8.8. - Mascaramento no nível do nó:como o endereço IP de destino
8.8.8.8não está na listanonMasqueradeCIDRs, oip-masq-agentno 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 pod10.4.0.5para o endereço IP do nó do host, que é10.128.0.10. - Saída da VPC:o pacote chega à rede VPC usando o endereço IP do nó do host
10.128.0.10como endereço IP de origem. - 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.10para um endereço IP NAT público (por exemplo,203.0.113.1) e o encaminha para a Internet. - 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-agente 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:
- 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. - Testar a conectividade:tente se conectar ao destino externo (por exemplo, usando
curl,pingounc) do pod não mesh. - Analisar os resultados:
- Se a conexão for bem-sucedida:o roteamento de rede do GKE subjacente, as regras
ip-masq-agente 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.
- Se a conexão for bem-sucedida:o roteamento de rede do GKE subjacente, as regras
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:
- Cole o conteúdo YAML do ConfigMap
ip-masq-agentno campo de configuração. - Insira o endereço IP de destino do endpoint de destino (como seu banco de dados local ou um serviço de Internet externo).
- Clique em Verificar mascaramento.
- 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ó):
- 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.
- 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):
- 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.
- 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.
- No Cloud de Confiance console do, acesse a página Cloud NAT.
- Selecione ou crie seu gateway do Cloud NAT.
- 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.