Saiba mais sobre os princípios básicos da rede do GKE

A rede do Google Kubernetes Engine (GKE) oferece uma base poderosa, escalonável e segura para seus aplicativos conteinerizados, criada na VPC global do Google. Ele traduz o modelo abstrato de rede do Kubernetes em recursos concretos de alto desempenho, como balanceadores de carga globais e rede de VM de alta capacidade.

Este documento e o restante da documentação são destinados a arquitetos de nuvem e especialistas em redes que projetam a arquitetura de rede da organização.

Por que a rede do Kubernetes é diferente

Ao usar o Kubernetes para orquestrar seus aplicativos, você pensa de maneira diferente sobre o design de rede. Com o Kubernetes, você se concentra em como pods, serviços e clientes externos se comunicam, em vez de gerenciar redes de hosts ou máquinas virtuais (VMs) individuais. Essa abstração simplifica a implantação e o escalonamento de aplicativos, eliminando complexidades como o mapeamento manual de portas.

Pré-requisitos

Antes de aprender sobre a rede no GKE, é preciso entender o seguinte:

Princípios básicos de rede e Google Cloud

O GKE se baseia em princípios de rede padrão. Para entender como o GKE gerencia e roteia o tráfego dentro e entre clusters, é preciso conhecer os seguintes conceitos básicos de rede.

Camadas e protocolos de rede

Para entender como os dados viajam por uma rede, comece com as camadas de rede. O GKE usa extensivamente conceitos das camadas de transporte, Internet e aplicação da pilha de rede. Você precisa conhecer as funções básicas e os protocolos comuns, como HTTP, DNS e o conjunto TCP/IP. Para mais informações, consulte o modelo OSI.

  • Camada de transporte: protocolo TCP (TCP) ou protocolo de datagramas do usuário (UDP): processa a comunicação de ponta a ponta entre aplicativos. O protocolo TCP (TCP) oferece entrega confiável, ordenada e com verificação de erros, o que é essencial para a maioria do tráfego de aplicativos. O protocolo de datagramas do usuário (UDP) oferece uma comunicação mais rápida e sem conexão, geralmente usada para streaming ou jogos. O GKE usa os dois protocolos para comunicação de pod e serviço.

  • Camada de Internet: Protocolo de Internet (IP): endereça e encaminha pacotes em diferentes redes. Cada pod e nó no GKE recebe um endereço IP, e o roteamento de endereços IP determina como o tráfego passa pelo cluster e pela rede VPC.

  • Camada de aplicativo: protocolo de transferência de hipertexto (HTTP) e sistema de nomes de domínio (DNS): é nessa camada que os aplicativos interagem com a rede. HTTP e HTTPS são fundamentais para a comunicação na Web e são usados com frequência por controladores de entrada e balanceadores de carga para expor aplicativos. O DNS é essencial para a descoberta de serviços no Kubernetes, traduzindo nomes de serviços legíveis por humanos em endereços IP.

Endereçamento IP e notação CIDR

É preciso entender a endereçamento IP e a notação CIDR (roteamento entre domínios sem classe) porque o modelo de rede do Kubernetes usa endereços IP extensivamente para comunicação entre todos os componentes. O CIDR é fundamental para planejar a alocação de endereços IP do cluster na rede VPC Google Cloud. Ele permite definir blocos de endereços IP para pods, serviços e nós. Por exemplo, alocar 10.10.0.0/16 para seus pods reserva 65.536 endereços IP. O planejamento adequado do CIDR ajuda a evitar situações em que você fica sem endereços IP à medida que o cluster é escalonado.

Utilitários de rede do Linux

O GKE usa recursos do kernel do Linux para implementar o roteamento de tráfego e o balanceamento de carga no cluster. Você precisa conhecer os conceitos e utilitários fundamentais de gerenciamento de rede do Linux, como tabelas de roteamento e iptables. Tradicionalmente, o kube-proxy, um componente principal do Kubernetes em cada nó, programa esses utilitários para interceptar o tráfego destinado a um serviço e redirecioná-lo para um dos pods de back-end. Os clusters modernos do GKE que usam o GKE Dataplane V2 substituem iptables por eBPF para melhorar o desempenho e a capacidade de observação.

Entender o modelo de rede do Kubernetes

O modelo de rede do Kubernetes define como os aplicativos em contêineres se comunicam em um cluster. Ao contrário dos modelos convencionais que se concentram em máquinas virtuais, o Kubernetes enfatiza a comunicação entre pods e baseada em serviços. Esse modelo torna a rede de aplicativos mais previsível ao abstrair a falta de confiabilidade dos endereços IP dinâmicos do pod. Como os pods são efêmeros e podem ser recriados a qualquer momento com um novo endereço IP, a comunicação direta com os endereços IP dos pods é inerentemente instável. O Kubernetes resolve esse problema agrupando pods em um serviço. Um serviço fornece um endereço IP virtual estável (ClusterIP) e um nome DNS consistente, ao qual os aplicativos podem se conectar de maneira confiável. Esse endpoint estável, combinado com uma rede simples que permite que todos os pods se comuniquem diretamente sem precisar de NAT, cria uma base robusta para aplicativos modernos em contêineres.

Princípios principais do modelo de rede do Kubernetes

  • Cada pod tem um endereço IP exclusivo: cada pod em um cluster do Kubernetes recebe o próprio endereço IP, que é compartilhado por todos os contêineres dentro desse pod. Esse endereço IP exclusivo permite que os pods atuem como hosts individuais na rede, semelhante a máquinas virtuais.

  • Comunicação direta entre pods sem NAT: todos os pods podem se comunicar diretamente entre si usando os endereços IP, independente do nó em que estão sendo executados. No GKE, essa comunicação direta é realizada usando clusters nativos da VPC, em que os endereços IP do pod são endereços IP de alias na sua rede VPC. Esses endereços IP de alias tornam os pods diretamente roteáveis na VPC, o que elimina a necessidade de conversão de endereços de rede (NAT) e simplifica a comunicação entre nós.

  • Os serviços fornecem endpoints estáveis: como os pods são efêmeros e podem ser recriados a qualquer momento com novos endereços IP, a comunicação direta com endereços IP de pod não é confiável. Os serviços do Kubernetes resolvem isso agrupando um conjunto de pods e expondo um endereço IP estável (ClusterIP) e um nome DNS. Essa abstração de problema permite acesso consistente a um conjunto dinâmico de pods.

  • Descoberta de serviço integrada com DNS: o Kubernetes inclui um serviço DNS integrado que atribui automaticamente nomes DNS aos serviços. Os aplicativos podem usar esses nomes (por exemplo, my-service.my-namespace.svc.cluster.local) para localizar e se comunicar com outros serviços de maneira confiável.

  • Balanceamento de carga integrado: quando os clientes enviam tráfego para um endereço ClusterIP de um serviço, as regras de rede no nó (programadas por kube-proxy ou GKE Dataplane V2) interceptam o tráfego e o balanceiam em todos os pods íntegros desse serviço. Essa distribuição acontece na origem, o que a torna altamente eficiente e ajuda a garantir alta disponibilidade.

Em resumo, o modelo de rede do Kubernetes abstrai muitas complexidades convencionais da rede em um conjunto mais simples e eficiente de primitivos para aplicativos em contêineres. Ao permitir a comunicação direta entre pods, endpoints de serviço estáveis e DNS e balanceamento de carga integrados, ele oferece uma base robusta e escalonável para aplicativos modernos em contêineres.

A relação entre o GKE e o Google Cloud

A rede do GKE atua como a ponte entre o modelo conceitual da rede do Kubernetes e a infraestrutura física do Google Cloud:

  • Modelo de rede do Kubernetes: o Kubernetes define regras em que cada pod recebe um endereço IP próprio, permitindo a comunicação direta de pod para pod sem a necessidade de NAT.

  • Google Cloud Rede: é a infraestrutura subjacente, incluindo VPC, sub-redes, firewalls e balanceadores de carga.

  • Rede do GKE: essa camada de conexão implementa o modelo do Kubernetes usando a infraestrutura do Google Cloud.

  • Interface de rede de contêiner (CNI): o GKE usa um plug-in CNI em cada nó para processar a alocação de endereços IP de pods e conectar pods à rede do nó.

  • Plano de controle do GKE: esses componentes interagem com Google Cloud para configurar automaticamente rotas da VPC para intervalos de IP de pods, gerenciar regras de firewall e provisionar balanceadores de carga com base nas implantações do Kubernetes.

O diagrama a seguir mostra o fluxo de tráfego de entrada e saída para e de clusters do GKE que estão em uma VPC e atrás de um firewall de nuvem. O tráfego de entrada inclui o tráfego balanceado por carga de componentes como proxy SSL, proxy TCP ou balanceamento de carga HTTP(S). O tráfego de saída inclui destinos como redes externas, usuários e balanceamento de carga de proxy TCP.
Figura 1. A rede do GKE se integra a Google Cloud componentes como VPC, Cloud Load Balancing e Cloud Firewall para oferecer um ambiente seguro e escalonável.

Por que o conhecimento de rede Google Cloud é essencial para o GKE

O GKE é criado com base na infraestrutura de rede. Google CloudO GKE não cria uma camada de rede separada. Em vez disso, ele usa componentes de rede Google Cloud existentes. Como resultado, entender a rede Google Cloud é essencial para projetar e proteger seus clusters do GKE.

Confira por que os princípios básicos de rede são importantes: Google Cloud

  • O cluster é executado em uma VPC: todos os clusters do GKE operam em uma VPC. Todos os endereços IP (para nós, pods e serviços) são extraídos dos intervalos de endereços IP definidos nas sub-redes da VPC. Para alocar endereços IP corretamente e evitar que eles acabem, é necessário ter conhecimento prático de VPC e design de sub-rede. Para mais informações, consulte a documentação da VPC.

  • A exposição de aplicativos usa Google Cloud balanceadores de carga: quando você expõe aplicativos fora do cluster usando um serviço LoadBalancer ou Entrada, o GKE provisiona um balanceador de carga Google Cloud integrado. Um serviço LoadBalancer é usado normalmente para tráfego da camada 4, e um Entrada é usado para tráfego HTTP(S) da camada 7. Entender como esses balanceadores de carga operam ajuda a gerenciar o tráfego externo, configurar verificações de integridade e solucionar problemas de conectividade de maneira eficaz. Para mais informações, consulte a documentação do Cloud Load Balancing.

  • A segurança é aplicada por Google Cloud regras de firewall: o GKE cria automaticamente algumas regras de firewall para permitir o tráfego essencial do cluster. No entanto, para proteger suas cargas de trabalho, é necessário definir regras de firewall VPC personalizadas. As configurações incorretas podem bloquear o tráfego crítico. Por isso, é importante entender como essas regras funcionam. Para mais informações, consulte a documentação do Cloud Next Generation Firewall.

A seguir