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 em contêineres, criada na VPC global do Google. Ela traduz o modelo de rede abstrato do Kubernetes em recursos concretos de alto desempenho, como balanceadores de carga globais e rede de VMs de alta capacidade.

Este documento e o restante do conjunto de documentação são destinados a arquitetos de nuvem e especialistas em rede 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 a rede 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, entenda o seguinte:

Rede principal e Cloud de Confiance princípios fundamentais

O GKE é baseado em princípios de rede padrão. Para entender como o GKE gerencia e roteia o tráfego dentro e entre clusters, conheça 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 conceitos das camadas de transporte, Internet e aplicativo da pilha de rede. Conheça 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 (protocolo de controle de transmissão) ou protocolo de datagramas do usuário (UDP): processa a comunicação de ponta a ponta entre aplicativos. O protocolo 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 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 pods e serviços.

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

  • Camada de aplicativo: protocolo de transferência de hipertexto (HTTP) e sistema de nomes de domínio (DNS): essa camada é onde os aplicativos interagem com a rede. O HTTP e o HTTPS são fundamentais para a comunicação da 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ço legíveis por humanos em endereços IP.

Endereçamento IP e notação CIDR

É necessário entender o 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 é essencial para planejar a alocação de endereços IP do cluster na Cloud de Confiance rede VPC. 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. Conheça os conceitos e utilitários básicos de gerenciamento de rede do Linux, como tabelas de roteamento e iptables. Tradicionalmente, o kube-proxy, um componente essencial 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 observabilidade.

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, abstraindo a não confiabilidade dos endereços IP dinâmicos de pods. 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 endereços IP de 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.

Principais princípios do modelo de rede do Kubernetes

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

  • Comunicação simples entre pods sem NAT: todos os pods podem se comunicar diretamente uns com os outros usando os endereços IP, independentemente do nó em que estão em execução. No GKE, essa comunicação direta é feita usando clusters nativos de VPC, em que os endereços IP de pods são endereços IP de alias na 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 pods não é confiável. Os serviços do Kubernetes resolvem esse problema agrupando um conjunto de pods e expondo um endereço IP estável (ClusterIP) e um nome DNS. Essa abstração de problemas permite o 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 de maneira confiável com outros serviços.

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

Em resumo, o modelo de rede do Kubernetes abstrai muitas complexidades de rede convencionais em um conjunto mais simples e poderoso de primitivos para aplicativos em contêineres. Ao ativar a comunicação direta de 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 Cloud de Confiance

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

  • 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 entre pods sem a necessidade de NAT.

  • Cloud de Confiance Rede: essa é 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 Cloud de Confiance.

  • Interface de rede do 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 Cloud de Confiance para configurar automaticamente rotas 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 Cloud de Confiance componentes como VPC, Cloud Load Balancing, e Cloud Firewall para fornecer um ambiente seguro e escalonável.

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

O GKE é baseado na Cloud de Confiance infraestrutura de rede. O GKE não cria uma camada de rede separada. Em vez disso, ele usa componentes de rede existentes. Cloud de Confiance Como resultado, entender a rede é essencial para projetar Cloud de Confiance e proteger os clusters do GKE.

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

  • O cluster é executado em uma VPC: cada cluster do GKE opera 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 do design de VPC e sub-rede. Para mais informações, consulte a documentação da VPC.

  • A exposição de aplicativos usa Cloud de Confiance Balanceadores de carga: quando você expõe aplicativos fora do cluster usando um serviço LoadBalancer ou Entrada, o GKE provisiona um Cloud de Confiance balanceador de carga 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 Cloud de Confiance regras de firewall: o GKE cria automaticamente algumas regras de firewall para permitir o tráfego essencial do cluster. No entanto, proteger as cargas de trabalho exige a definição de regras de firewall da VPC personalizadas. 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