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 cluster, os modelos de rede compatíveis e as práticas recomendadas para um 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 exemplos de tarefas no Google Cloud, consulte Funções e tarefas de usuário comuns do GKE Enterprise.
Antes de continuar, confira se você conhece os seguintes conceitos:
- Redes básicas:incluindo endereços IP, CIDR, firewalls e conversão de endereços de rede (NAT).
- Componentes principais do Kubernetes, como clusters, nós, pods e serviços.
Como os endereços IP conectam componentes do GKE
O GKE se baseia 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 de saída à Internet.
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 por
localhost.Serviços: o GKE atribui a cada serviço do Kubernetes um endereço IP virtual (o
ClusterIP) estável de um intervalo de endereços IP secundário dedicado. EsseClusterIPfornece um endpoint único e confiável para um grupo de pods. Quando você envia tráfego para oClusterIP, o GKE faz o balanceamento de carga automático 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 internos. 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 geralmente usa o Private Service Connect.
Balanceadores de carga: para expor aplicativos à Internet ou na rede VPC, configure o GKE para usar balanceadores de cargaGoogle Cloud . 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 sua 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 |
|---|---|
| Nó | 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ó. Ela 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 respectivo 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ários dedicado na rede VPC do cluster. |
| Plano de controle | Em clusters particulares, o plano de controle do GKE tem seu próprio intervalo de endereços IP internos em um projeto de locatário gerenciado pelo Google. Esse projeto de locatário se conecta à sua rede VPC, geralmente 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 primário da sub-rede do cluster. |
Endereçamento IP do Kubernetes e implementação do GKE
Para usar o GKE de maneira eficaz, é preciso entender as diferenças entre o modelo de rede abstrato do Kubernetes e como o GKE implementa esse modelo no 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). Isso garante um espaço de rede simples 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 no Google Cloud ao se integrar à rede nativa da VPC. Quando você cria 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 recursos do Google Cloud , como instâncias do Compute Engine e bancos de dados do Cloud SQL. Da mesma forma, o GKE gerencia endereços IP
Servicedo Kubernetes (comoClusterIPs) na rede VPC. Quando você cria serviçosLoadBalancerpara exposição externa, o GKE provisiona balanceadores de cargaGoogle Cloud . Esses balanceadores de carga usam endereços IP públicos ou internos da sua rede VPC. O GKE usa a infraestrutura robusta de rede e endereçamento IP do Google Cloudpara 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 da VPC, que é um recurso principal do Google Cloud .
Esse modelo usa intervalos de endereços IP de alias. Em um cluster nativo de VPC, o Kubernetes configura os endereços IP do 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 da VPC:os endereços IP do pod podem ser roteados diretamente na rede VPC. Isso simplifica o design da rede e permite a comunicação direta e de baixa latência entre seus pods e outros recursos do Google Cloud , como instâncias do Compute Engine e do Cloud SQL.
- Conserve 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 sua 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.
- Melhorar a segurança:o roteamento nativo da VPC permite aplicar regras de firewall nativas da VPC diretamente ao tráfego de pods, melhorando 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 uma gestão eficaz de endereços IP é fundamental
Para garantir que o cluster possa ser escalonado e manter a integridade do aplicativo, planeje seu 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 reestruturação disruptiva da rede.
- 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 causar conflitos de roteamento, comportamento imprevisível e interrupções de serviço.
- Aumente a segurança: gerencie endereços IP com eficiência para fortalecer a segurança da rede. Defina políticas de rede do Kubernetes para controlar o fluxo de tráfego entre pods e configure regras de firewall para isolamento de carga de trabalho no nível da rede.
Escolher um modelo de endereçamento IP para o cluster
O GKE é compatível com várias configurações de pilha de rede para atender aos seus requisitos de rede, incluindo opções somente IPv4, de pilha dupla (IPv4 e IPv6) e 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 seu cluster. - Endereços IP públicos de uso privado (PUPIs): se sua organização não tiver espaço suficiente de endereços IP privados, use 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 dos pods. Sem o 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 evita isso mudando o endereço IP de origem dos pacotes de saída do PUPI do pod para o endereço IP interno do nó. Isso garante que o tráfego de retorno seja encaminhado corretamente de volta ao nó e, em seguida, ao pod original.
Pilha dupla (IPv4 e IPv6)
Um cluster de pilha dupla usa os 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 prontas 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
- Para saber mais sobre os benefícios do modo de rede padrão do GKE, consulte Sobre clusters nativos de VPC.
- Para começar, saiba como criar um cluster nativo de VPC.
- Para orientações sobre o dimensionamento dos intervalos de endereços IP do cluster, consulte Planejamento de intervalo de endereços IP para clusters nativos de VPC.
- Para resolver problemas comuns, consulte Solução de problemas do agente de mascaramento de IP.