Compreenda o endereçamento IP no GKE

Para criar clusters do Google Kubernetes Engine (GKE) escaláveis e seguros, tem de gerir eficazmente o endereçamento IP. Este documento oferece uma vista geral abrangente de como o GKE usa endereços IP para a comunicação do cluster, os modelos de rede suportados e as práticas recomendadas para uma gestão eficaz de endereços IP.

Este documento destina-se a arquitetos da nuvem e especialistas em redes que concebem e arquitetam a rede para a respetiva organização. Para mais informações sobre as funções comuns e exemplos de tarefas no Google Cloud, consulte o artigo Funções de utilizador e tarefas comuns do GKE Enterprise.

Antes de continuar, certifique-se de que conhece os seguintes conceitos:

Como os endereços IP ligam os componentes do GKE

O GKE baseia-se no modelo de rede do Kubernetes, que requer que cada componente tenha um endereço IP distinto para comunicação. As secções seguintes descrevem como o GKE atribui e usa endereços IP para os 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 respetivo conjunto de nós. Este endereço IP permite a comunicação entre o nó e o plano de controlo 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 único a partir de um intervalo CIDR de pods atribuído ao nó. No GKE, a rede VPC encaminha nativamente os endereços IP dos pods. Esta capacidade de encaminhamento integrada permite a comunicação direta entre os pods, mesmo em diferentes nós, sem exigir a tradução de endereços de rede (NAT). Todos os contentores num único agrupamento partilham o mesmo endereço IP e podem comunicar através de localhost.

  • Serviços: o GKE atribui a cada serviço Kubernetes um endereço IP virtual estável (o ClusterIP) a partir de um intervalo de endereços IP secundários dedicado. Este ClusterIP oferece um ponto final único e fiável para um grupo de Pods. Quando envia tráfego para o ClusterIP, o GKE equilibra automaticamente a carga para um pod em bom estado dentro desse serviço.

  • Plano de controlo: em clusters privados, o plano de controlo reside num projeto de inquilino gerido pela Google e usa o seu próprio intervalo de endereços IP interno. Este projeto de inquilino liga-se à sua rede VPC, o que permite a comunicação segura entre o plano de controlo e os nós na rede VPC do seu cluster. Normalmente, esta ligação usa o Private Service Connect.

  • Balanceadores de carga: para expor aplicações à Internet ou na sua rede VPC, pode configurar o GKE para usarGoogle 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 sua rede VPC.

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

Componente Como são atribuídos os endereços IP
Node O GKE atribui um endereço IP interno a cada nó. O GKE atribui este endereço IP a partir do intervalo de endereços IP principal da sub-rede associada ao grupo de nós do nó. Esta sub-rede pode ser a sub-rede predefinida do cluster ou uma sub-rede adicional.
Agrupamento O GKE atribui a cada pod um endereço IP exclusivo do intervalo CIDR do pod atribuído ao respetivo nó.
Service (ClusterIP) O GKE atribui a cada serviço um endereço IP virtual estável (ClusterIP) a partir de um intervalo de endereços IP secundários dedicado na rede VPC do cluster.
Plano de controlo Nos clusters privados, o plano de controlo do GKE tem o seu próprio intervalo de endereços IP interno num projeto de inquilino gerido pela Google. Este projeto de inquilino liga-se à sua rede VPC, normalmente através do Private Service Connect.
Balanceador de carga Os balanceadores de carga externos usam endereços IP públicos. Os equilibradores 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 forma eficaz, tem de compreender as diferenças entre o modelo de rede abstrato do Kubernetes e como o GKE implementa este modelo no Google Cloud.

  • Modelo de endereçamento IP do Kubernetes: o projeto Kubernetes de código aberto especifica que cada pod recebe um endereço IP único. Todos os endereços IP dos pods podem comunicar diretamente sem tradução de endereços de rede (NAT). Isto garante um espaço de rede simples onde os pods podem alcançar-se mutuamente através dos respetivos endereços IP atribuídos.

  • Implementação do endereçamento IP do GKE: o GKE implementa o modelo de endereçamento IP do Kubernetes no Google Cloud integrando-se com a rede nativa da VPC. Quando cria um pod, o GKE atribui o respetivo endereço IP a partir de um intervalo de endereços IP de alias da VPC. Isto torna o endereço IP de cada pod nativamente encaminhável em toda a sua rede VPC. Isto permite a comunicação direta não só entre Pods, mas também com outros recursos do Google Cloud , como instâncias do Compute Engine e bases de dados do Cloud SQL. Da mesma forma, o GKE gere os endereços IP do Kubernetes (como os ServiceClusterIP) na rede VPC. Quando cria LoadBalancer serviços para exposição externa, o GKE aprovisiona Google Cloud balanceadores de carga. Estes equilibradores de carga usam endereços IP públicos ou internos da sua rede VPC. O GKE usa a infraestrutura de rede e endereçamento IP robusta para implementar conceitos de rede baseados em IP do Kubernetes de forma escalável e segura. Google Cloud

Modelo de rede do GKE: clusters nativos de VPC

O GKE implementa o modelo de rede do Kubernetes através da rede nativa da VPC, que é uma capacidade Google Cloud essencial.

Este modelo usa intervalos de endereços IP de alias. Num cluster nativo da VPC, o Kubernetes configura os endereços IP dos pods como intervalos de endereços IP com alias na interface de rede virtual do nó.

Esta implementação oferece várias vantagens principais:

  • Capacidade de encaminhamento nativa da VPC: os endereços IP dos pods são diretamente encaminháveis na sua rede VPC. Isto simplifica a conceção da rede e permite uma comunicação direta e de baixa latência entre os seus pods e outros recursos do Google Cloud , como instâncias do Compute Engine e instâncias do Cloud SQL.
  • Conserve a quota de rotas: ao usar endereços IP de alias para pods, o GKE não cria rotas estáticas personalizadas para cada nó. Isto conserva a sua quota de rotas de VPC, uma melhoria significativa em relação aos clusters baseados em rotas antigos, e é importante para implementações em grande escala.
  • Melhore a segurança: a capacidade de encaminhamento nativa da VPC permite-lhe aplicar regras de firewall nativas da VPC diretamente ao tráfego do pod, o que melhora a segurança ao nível da rede.

O modo nativo de VPC é o modo de rede predefinido e recomendado para todos os clusters do GKE.

Por que motivo a gestão eficaz de endereços IP é fundamental

Para garantir que o cluster pode ser dimensionado e manter o estado de funcionamento da aplicação, tem de planear o espaço de endereços IP de forma eficaz:

  • Garantir a escalabilidade: planeie os intervalos de endereços IP de nós, pods e serviços de forma eficaz para evitar o esgotamento de endereços IP e permitir que o cluster seja dimensionado sem exigir uma reestruturação da rede disruptiva.
  • Garantir a fiabilidade: evite intervalos de endereços IP sobrepostos entre o cluster do GKE e outras redes, como ambientes no local ligados através da Cloud VPN. Os intervalos sobrepostos podem originar conflitos de encaminhamento, um comportamento imprevisível e interrupções do serviço.
  • Reforçar a segurança: faça a gestão dos endereços IP de forma eficaz para reforçar 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 da carga de trabalho ao nível da rede.

Escolha um modelo de endereçamento IP para o seu cluster

O GKE suporta várias configurações de pilha de rede para satisfazer os seus requisitos de rede, incluindo apenas IPv4, pilha dupla (IPv4 e IPv6) e opções futuras apenas IPv6.

Apenas IPv4 (pilha única)

Esta é a configuração padrão e mais comum, em que todos os componentes do cluster usam endereços IPv4. Mesmo num modelo apenas 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 seu cluster.
  • Endereços IP públicos usados de forma privada (PUPIs): se a sua organização não tiver espaço de endereços IP privados suficiente, pode usar intervalos de endereços IP públicos para uso interno na sua rede VPC. Quando usa PUPIs, tem de configurar o agente de ocultação de IP. Este agente executa a traduçã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 é encaminhado através da Internet pública e falha. O agente de mascaramento de IP impede isto alterando o endereço IP de origem dos pacotes de saída do PUPI do pod para o endereço IP interno do nó. Isto garante que o tráfego de retorno é corretamente encaminhado de volta para o nó e, em seguida, 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 endereço IPv6 a nós, pods e serviços num cluster de pilha dupla. Este 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 apenas IPv4 existentes.

Pode ativar a rede de pilha dupla quando cria um cluster ou pode atualizar um cluster de pilha única existente para pilha dupla.

O que se segue?