Aprenda os princípios básicos das redes do GKE

O trabalho em rede do Google Kubernetes Engine (GKE) oferece uma base poderosa, escalável e segura para as suas aplicações em contentores, criada na VPC global da Google. Traduz o modelo de rede abstrato do Kubernetes em recursos concretos de alto desempenho, como balanceadores de carga globais e redes de VMs de elevado débito.

Este documento e o resto deste conjunto de documentação destinam-se a arquitetos da nuvem e especialistas em redes que concebem a arquitetura de rede da respetiva organização.

Por que motivo a rede do Kubernetes é diferente

Quando usa o Kubernetes para orquestrar as suas aplicações, pensa de forma diferente sobre a conceção de redes. Com o Kubernetes, foca-se na forma como os pods, os serviços e os clientes externos comunicam, em vez de gerir a rede de anfitriões individuais ou máquinas virtuais (VMs). Esta abstração simplifica a implementação e o escalamento de aplicações, eliminando complexidades como o mapeamento manual de portas.

Pré-requisitos

Antes de saber mais sobre as redes no GKE, deve compreender o seguinte:

Redes essenciais e Cloud de Confiance fundamentos

O GKE baseia-se em princípios de rede padrão. Para compreender como o GKE gere e encaminha o tráfego dentro e entre clusters, deve conhecer os seguintes conceitos de rede essenciais.

Camadas e protocolos de rede

Para compreender como os dados circulam numa rede, comece pelas camadas de rede. O GKE usa extensivamente conceitos das camadas de transporte, Internet e de aplicação da pilha de rede. Deve conhecer as suas funções básicas e protocolos comuns, como HTTP, DNS e o conjunto TCP/IP. Para mais informações, consulte o modelo OSI.

  • Camada de transporte: Protocolo de controlo de transmissão (TCP) ou Protocolo de datagrama do utilizador (UDP): processa a comunicação ponto a ponto entre aplicações. O Protocolo de controlo de transmissão (TCP) oferece uma entrega fiável, ordenada e com verificação de erros, o que é essencial para a maioria do tráfego de aplicações. O Protocolo UDP (User Datagram Protocol) oferece uma comunicação mais rápida e sem ligação, sendo usado frequentemente para streaming ou jogos. O GKE usa ambos os protocolos para a comunicação de pods e serviços.

  • 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 encaminhamento de endereços IP determina como o tráfego encontra o seu caminho através do cluster e da rede VPC.

  • Camada de aplicação: Protocolo de transferência de hipertexto (HTTP) e Sistema de nomes de domínio (DNS): esta camada é onde as aplicações interagem com a rede. O HTTP e o HTTPS são fundamentais para a comunicação Web e são usados frequentemente por controladores de entrada e balanceadores de carga para expor aplicações. O DNS é vital para a deteção 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

Tem de compreender o endereçamento IP e a notação CIDR (Classless Inter-Domain Routing), uma vez que o modelo de rede do Kubernetes usa extensivamente endereços IP para a comunicação entre todos os seus componentes. O CIDR é fundamental para planear a atribuição de endereços IP do cluster na sua Cloud de Confiance rede VPC. Permite-lhe definir blocos de endereços IP para agrupamentos, serviços e nós. Por exemplo, a atribuição de 10.10.0.0/16 para os seus pods reserva 65 536 endereços IP. O planeamento adequado de CIDRs ajuda a evitar situações em que fica sem endereços IP à medida que o cluster é dimensionado.

Utilitários de rede Linux

O GKE usa funcionalidades do kernel Linux subjacente para implementar o encaminhamento de tráfego e o equilíbrio de carga no cluster. Deve estar familiarizado com os conceitos de gestão de rede do Linux fundamentais e utilitários como tabelas de encaminhamento e iptables. Tradicionalmente, o kube-proxy, um componente chave do Kubernetes em cada nó, programa estas utilidades para intercetar o tráfego destinado a um serviço e redirecioná-lo para um dos pods de back-end. Os clusters do GKE modernos que usam o GKE Dataplane V2 substituem o iptables pelo eBPF para melhorar o desempenho e a observabilidade.

Compreenda o modelo de rede do Kubernetes

O modelo de rede do Kubernetes define a forma como as aplicações em contentores comunicam num cluster. Ao contrário dos modelos convencionais que se focam em máquinas virtuais, o Kubernetes enfatiza a comunicação de Pod para Pod e baseada em serviços. Este modelo torna a rede de aplicações mais previsível ao abstrair a não fiabilidade dos endereços IP dinâmicos dos pods. Uma vez que os pods são efémeros e podem ser recriados em qualquer altura com um novo endereço IP, a comunicação direta com os endereços IP dos pods é inerentemente instável. O Kubernetes resolve este problema agrupando os pods num serviço. Um serviço fornece um endereço IP virtual estável (ClusterIP) e um nome DNS consistente, ao qual as aplicações podem estabelecer ligação de forma fiável. Este ponto final estável, combinado com uma rede simples que permite que todos os pods comuniquem diretamente sem precisar de NAT, cria uma base robusta para aplicações modernas em contentores.

Princípios fundamentais do modelo de rede do Kubernetes

  • Cada Pod tem um endereço IP exclusivo: cada Pod num cluster do Kubernetes recebe o seu próprio endereço IP, que é partilhado por todos os contentores nesse Pod. Este endereço IP único permite que os Pods atuem como anfitriões individuais na rede, de forma semelhante às máquinas virtuais.

  • Comunicação simples entre pods sem NAT: todos os pods podem comunicar diretamente entre si através dos respetivos endereços IP, independentemente do nó em que estão a ser executados. No GKE, esta comunicação direta é alcançada através de clusters nativos da VPC, em que os endereços IP dos pods são endereços IP de alias na sua rede VPC. Estes endereços IP de alias tornam os pods diretamente encaminháveis na VPC, o que elimina a necessidade de tradução de endereços de rede (NAT) e simplifica a comunicação entre nós.

  • Os serviços fornecem pontos finais estáveis: uma vez que os pods são efémeros e podem ser recriados em qualquer altura com novos endereços IP, a comunicação direta com os endereços IP dos pods não é fiável. Os serviços do Kubernetes resolvem este problema agrupando um conjunto de pods e expondo um endereço IP estável (ClusterIP) e um nome DNS. Esta abstração de problemas permite o acesso consistente a um conjunto dinâmico de pods.

  • Deteção de serviços incorporada com DNS: o Kubernetes inclui um serviço DNS incorporado que atribui automaticamente nomes DNS aos serviços. As aplicações podem usar estes nomes (por exemplo, my-service.my-namespace.svc.cluster.local) para localizar e comunicar de forma fiável com outros serviços.

  • Equilíbrio 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 por kube-proxy ou GKE Dataplane V2) intercetam o tráfego e equilibram a carga em todos os pods íntegros nesse serviço. Esta distribuição ocorre na origem, o que a torna altamente eficiente e ajuda a garantir uma elevada disponibilidade.

Em resumo, o modelo de rede do Kubernetes abstrai muitas complexidades de rede convencionais num conjunto de primitivas mais simples e mais eficazes para aplicações contentorizadas. Ao permitir a comunicação direta de pods, pontos finais de serviço estáveis e DNS e equilíbrio de carga integrados, oferece uma base robusta e escalável para aplicações modernas em contentores.

A relação entre o GKE e o Cloud de Confiance

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

  • Modelo de rede do Kubernetes: o Kubernetes define regras em que cada Pod recebe o seu próprio endereço IP, o que permite a comunicação direta entre Pods sem necessidade de NAT.

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

  • Rede do GKE: esta camada de ligação implementa o modelo do Kubernetes através da infraestrutura do Cloud de Confiance.

  • Interface de rede de contentores (CNI): o GKE usa um plugin CNI em cada nó para processar a atribuição de endereços IP de pods e ligar pods à rede do nó.

  • Plano de controlo do GKE: estes componentes interagem com o Cloud de Confiance para configurar automaticamente as rotas da VPC para intervalos de IP de pods, gerir regras de firewall e aprovisionar equilibradores de carga com base nas implementações do Kubernetes.

O diagrama seguinte mostra o fluxo de tráfego de entrada e saída para e a partir de clusters do GKE que estão numa VPC e atrás de uma firewall na nuvem. O tráfego de entrada inclui tráfego com balanceamento de carga de componentes como o proxy SSL, o proxy TCP ou o balanceamento de carga HTTP(S). O tráfego de saída inclui destinos como redes externas, utilizadores e balanceamento de carga de proxy TCP.
Figura 1. As redes do GKE integram-se com Cloud de Confiance componentes como a VPC, o Cloud Load Balancing e a Cloud Firewall para oferecer um ambiente seguro e escalável.

Por que motivo Cloud de Confiance o conhecimento de redes é essencial para o GKE

O GKE baseia-se na Cloud de Confiance infraestrutura de rede. O GKE não cria uma camada de rede separada. Em vez disso, usa os Cloud de Confiance componentes de rede existentes. Como tal, a compreensão das Cloud de Confiance redes é essencial para conceber e proteger os seus clusters do GKE.

Veja por que motivo Cloud de Confiance os fundamentos de rede são importantes:

  • O seu cluster é executado numa VPC: todos os clusters do GKE operam numa 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 atribuir corretamente endereços IP e evitar ficarem sem eles, precisa de ter conhecimentos práticos sobre a VPC e o design de sub-redes. Para mais informações, consulte a documentação da VPC.

  • A exposição de aplicações usa Cloud de Confiance balanceadores de carga: quando expõe aplicações fora do cluster através de um serviço LoadBalancer ou Ingress, o GKE aprovisiona um balanceador de carga Cloud de Confiance incorporado. Normalmente, um serviço LoadBalancer é usado para tráfego da camada 4 e uma entrada é usada para tráfego HTTP(S) da camada 7. Compreender como estes balanceadores de carga funcionam ajuda a gerir o tráfego externo, configurar verificações de estado e resolver problemas de conetividade de forma eficaz. Para mais informações, consulte a documentação do Cloud Load Balancing.

  • A segurança é aplicada através de Cloud de Confiance regras de firewall: O GKE cria automaticamente algumas regras de firewall para permitir o tráfego essencial do cluster. No entanto, a proteção das suas cargas de trabalho requer a definição de regras de firewall de VPC personalizadas. As configurações incorretas podem bloquear o tráfego crítico, pelo que é importante compreender como funcionam estas regras. Para mais informações, consulte a documentação da firewall de nova geração do Google Cloud.

O que se segue?