Entender o endereçamento IP no GKE

Para criar clusters escalonáveis e seguros do Google Kubernetes Engine (GKE), é necessário gerenciar o endereçamento IP de maneira eficaz. Este documento oferece uma visão geral abrangente de como o GKE usa endereços IP para comunicação de clusters, os modelos de rede compatíveis e as práticas recomendadas para o gerenciamento eficaz de endereços IP.

Este documento é destinado a arquitetos de nuvem e especialistas em redes que projetam e arquitetam a rede para a organização. Para mais informações sobre papéis comuns e tarefas de exemplo, consulte Funções e tarefas de usuário comuns do GKE Enterprise. Google Cloud

Antes de continuar, confira se você conhece os seguintes conceitos:

Como os endereços IP conectam componentes do GKE

O GKE é baseado no modelo de rede do Kubernetes, que exige que cada componente tenha um endereço IP distinto para comunicação. As seções a seguir descrevem como o GKE atribui e usa endereços IP para componentes principais do cluster:

  • Nós: o GKE atribui a cada nó, que é uma instância de VM do Compute Engine, um endereço IP interno do intervalo de endereços IP principal da sub-rede associada ao pool de nós. Esse endereço IP permite a comunicação entre o nó e o plano de controle do Kubernetes. Os nós também podem ter um endereço IP externo para acesso à Internet de saída.

  • Pods: seguindo o modelo "IP por pod" do Kubernetes, o GKE atribui a cada pod um endereço IP exclusivo de um intervalo CIDR de pod alocado ao nó. No GKE, a rede VPC roteia nativamente os endereços IP do pod. Essa capacidade de roteamento integrada permite a comunicação direta entre pods, mesmo em nós diferentes, sem exigir a conversão de endereços de rede (NAT). Todos os contêineres em um único pod compartilham o mesmo endereço IP e podem se comunicar pelo localhost.

  • Serviços: o GKE atribui a cada serviço do Kubernetes um endereço IP virtual estável, (o ClusterIP) de um intervalo de endereços IP secundário dedicado. Esse ClusterIP fornece um endpoint único e confiável para um grupo de pods. Quando você envia tráfego para o ClusterIP, o GKE o balanceia automaticamente para um pod íntegro dentro desse serviço.

  • Plano de controle: em clusters particulares, o plano de controle reside em um projeto de locatário gerenciado pelo Google e usa o próprio intervalo de endereços IP interno. Esse projeto de locatário se conecta à sua rede VPC, permitindo a comunicação segura entre o plano de controle e os nós na rede VPC do cluster. Essa conexão normalmente usa o Private Service Connect.

  • Balanceadores de carga: para expor aplicativos à Internet ou na rede VPC, é possível configurar o GKE para usar Google Cloud balanceadores de carga. Os balanceadores de carga externos usam endereços IP públicos. Os balanceadores de carga internos usam endereços IP internos do intervalo de sub-rede principal da rede VPC.

A tabela a seguir resume como o GKE atribui endereços IP aos componentes do cluster:

Componente Como os endereços IP são atribuídos
O GKE atribui um endereço IP interno a cada nó. O GKE aloca esse endereço IP do intervalo de endereços IP principal da sub-rede associada ao pool de nós do nó. Essa sub-rede pode ser a sub-rede padrão do cluster ou uma sub-rede adicional.
Pod O GKE atribui a cada pod um endereço IP exclusivo do intervalo CIDR de pod alocado ao nó.
Serviço (ClusterIP) O GKE atribui a cada serviço um endereço IP virtual estável (ClusterIP) de um intervalo de endereços IP secundário dedicado na rede VPC do cluster.
Plano de controle Em clusters particulares, o plano de controle do GKE tem o próprio intervalo de endereços IP interno em um projeto de locatário gerenciado pelo Google. Esse projeto de locatário se conecta à sua rede VPC, normalmente usando o Private Service Connect.
Balanceador de carga Os balanceadores de carga externos usam endereços IP públicos. Os balanceadores de carga internos usam endereços IP internos do intervalo de endereços IP principal da sub-rede do cluster.

Endereçamento IP do Kubernetes e implementação do GKE

Para usar o GKE de maneira eficaz, é necessário entender as diferenças entre o modelo de rede abstrato do Kubernetes e como o GKE implementa este modelo em Google Cloud.

  • Modelo de endereçamento IP do Kubernetes: o projeto de código aberto do Kubernetes especifica que cada pod recebe um endereço IP exclusivo. Todos os endereços IP do pod podem se comunicar diretamente sem a conversão de endereços de rede (NAT). Essa abordagem ajuda a garantir um espaço de rede plano em que os pods podem se alcançar usando os endereços IP atribuídos.

  • Implementação de endereçamento IP do GKE: o GKE implementa o modelo de endereçamento IP do Kubernetes ao se integrar à rede nativa de VPC. Google Cloud Ao criar um pod, o GKE aloca o endereço IP dele de um intervalo de endereços IP de alias da VPC. Isso torna o endereço IP de cada pod nativamente roteável em toda a rede VPC. Isso permite a comunicação direta não apenas entre pods, mas também com outros Google Cloud recursos, como instâncias do Compute Engine e bancos de dados do Cloud SQL. Da mesma forma, o GKE gerencia endereços IP de Service do Kubernetes (como ClusterIPs) na rede VPC. Ao criar LoadBalancer serviços para exposição externa, o GKE provisiona Google Cloud balanceadores de carga. Esses balanceadores de carga usam endereços IP públicos ou internos da rede VPC. O GKE usa Google Cloud's a infraestrutura robusta de endereçamento IP e rede para implementar conceitos de rede baseados em IP do Kubernetes de maneira escalonável e segura

Modelo de rede do GKE: clusters nativos de VPC

O GKE implementa o modelo de rede do Kubernetes usando a rede nativa de VPC, que é um recurso principal Google Cloud .

Esse modelo usa intervalos de endereços IP de alias. Em um cluster nativo de VPC, o Kubernetes configura endereços IP de pod como intervalos de endereços IP de alias na interface de rede virtual do nó.

Essa implementação oferece várias vantagens importantes:

  • Capacidade de roteamento nativa de VPC:os endereços IP do pod são diretamente roteáveis na rede VPC. Isso simplifica o design da rede e permite a comunicação direta e de baixa latência entre os pods e outros Google Cloud recursos, como instâncias do Compute Engine e instâncias do Cloud SQL.
  • Conservar a cota de rotas:ao usar endereços IP de alias para pods, o GKE não cria rotas estáticas personalizadas para cada nó. Isso conserva a cota de rotas da VPC, uma melhoria significativa em relação aos clusters legados baseados em rotas, e é importante para implantações em grande escala.
  • Aumentar a segurança:a capacidade de roteamento nativa de VPC permite aplicar regras de firewall nativas de VPC diretamente ao tráfego de pods, aprimorando a segurança no nível da rede.

Nativo de VPC é o modo de rede padrão e recomendado para todos os clusters do GKE.

Por que o gerenciamento eficaz de endereços IP é fundamental

Para garantir que o cluster possa ser escalonado e manter a integridade do aplicativo, é necessário planejar o espaço de endereço IP de maneira eficaz:

  • Garantir a escalonabilidade: planeje os intervalos de endereços IP de nós, pods e serviços de maneira eficaz para evitar o esgotamento de endereços IP e permitir que o cluster seja escalonado sem exigir uma rearquitetura de rede disruptiva.
  • Garantir a confiabilidade: evite intervalos de endereços IP sobrepostos entre o cluster do GKE e outras redes, como ambientes locais conectados pelo Cloud VPN. Intervalos sobrepostos podem levar a conflitos de roteamento, comportamento imprevisível e interrupções de serviço.
  • Fortalecer a segurança: gerencie endereços IP de maneira eficaz para fortalecer a segurança da rede. Defina políticas de rede do Kubernetes para controlar o fluxo de tráfego entre pods e configurar regras de firewall para isolamento de cargas de trabalho no nível da rede.

Escolher um modelo de endereçamento IP para o cluster

O GKE oferece suporte a várias configurações de pilha de rede para atender aos requisitos de rede, incluindo IPv4, pilha dupla (IPv4 e IPv6) e opções futuras somente IPv6.

Somente IPv4 (pilha única)

Essa é a configuração padrão e mais comum, em que todos os componentes do cluster usam endereços IPv4. Mesmo em um modelo somente IPv4, o GKE oferece flexibilidade:

  • Endereços IP privados RFC 1918: use intervalos de endereços IP privados RFC 1918 (por exemplo, 10.0.0.0/8) para o cluster.
  • Endereços IP públicos usados de maneira particular (PUPIs): se a organização não tiver espaço de endereço IP privado suficiente, é possível usar intervalos de endereços IP públicos para uso interno na rede VPC. Ao usar PUPIs, é necessário configurar o agente de mascaramento de IP . Esse agente realiza a conversão de endereços de rede de origem (SNAT) no tráfego de saída de pods. Sem SNAT, o tráfego de retorno para um pod que usa um PUPI é roteado pela Internet pública e falha. O agente de mascaramento de IP impede isso mudando o endereço IP de origem de pacotes de saída do PUPI do pod para o endereço IP interno do nó. Essa abordagem ajuda a garantir que o tráfego de retorno seja roteado corretamente de volta para o nó e encaminhado para o pod original.

Pilha dupla (IPv4 e IPv6)

Um cluster de pilha dupla usa protocolos IPv4 e IPv6. O GKE atribui um endereço IPv4 e um IPv6 a nós, pods e serviços em um cluster de pilha dupla. Esse modelo é ideal para:

  • Facilitar uma transição gradual para o IPv6.
  • Garantir a compatibilidade com cargas de trabalho preparadas para IPv6 e clientes e serviços somente IPv4.

É possível ativar a rede de pilha dupla ao criar um cluster ou atualizar um cluster de pilha única para pilha dupla.

A seguir