Sobre o balanceamento de carga no GKE

Nesta página, você encontra uma visão geral de como o Google Kubernetes Engine (GKE) cria e gerencia o Cloud Load Balancing. Esta página pressupõe que você saiba sobre o seguinte:

  • Tipos de Google Cloud balanceadores de carga
  • A diferença entre balanceadores de carga da camada 4 (balanceadores de carga de rede) e da camada 7 (balanceadores de carga de aplicativo)

Esta página é destinada a arquitetos de nuvem e especialistas em redes que projetam e arquitetam a rede para a organização. Para saber mais sobre papéis comuns e tarefas de exemplo referenciados no Google Cloud content, consulte Tarefas e funções de usuário comuns do GKE Enterprise.

Como o GKE cria balanceadores de carga

Para tornar seus aplicativos acessíveis de fora do cluster (usuários externos) ou na rede privada (usuários internos), exponha-os provisionando balanceadores de carga usando as APIs Gateway, Entrada e Service. Como alternativa, você pode criar os componentes do balanceador de carga, enquanto o GKE gerencia os grupos de endpoints de rede (NEGs) que conectam o balanceador de carga aos pods no cluster.

Gateway

O GKE Gateway Controller é a implementação do Google da API Kubernetes Gateway para o Cloud Load Balancing. A API Gateway é um projeto de código aberto que visa padronizar como as malhas de serviço e os controladores de entrada expõem aplicativos no Kubernetes. A API Gateway foi projetada para ser um sucessor mais expressivo, flexível e extensível do recurso Entrada.

O GKE Gateway Controller é usado para configurar balanceadores de carga de aplicativo da camada 7 para expor o tráfego HTTP(S) a aplicativos executados no cluster.

Prática recomendada:

Use a API Gateway para implementar o balanceador de carga.

Entrada

O controlador de Ingress do GKE é a implementação do Google da API Ingress. A API Ingress permite gerenciar o acesso externo a serviços executados em um cluster. Quando você cria um recurso de entrada no GKE, o controlador configura automaticamente um balanceador de carga de aplicativo da camada 7 que permite que o tráfego HTTP ou HTTP(S) chegue aos aplicativos executados no cluster.

O gateway do GKE é a opção recomendada para novas implantações e aplicativos que exigem gerenciamento avançado de tráfego, suporte a vários protocolos ou melhor multitenância. No entanto, o Ingress do GKE é uma opção viável para cenários de roteamento HTTP/HTTPS mais simples, especialmente para configurações atuais em que os benefícios da migração para a API Gateway ainda não superam o esforço.

Serviços LoadBalancer

A API Service permite expor aplicativos executados como pods no cluster ao tráfego externo ou interno. Quando você cria um serviço do tipo LoadBalancer, o GKE cria automaticamente um balanceador de carga de rede de passagem da camada 4 (TCP/UDP) com base nos parâmetros do manifesto de serviço.

Nos balanceadores de carga de rede de passagem, quando o tráfego chega às VMs de back-end, os endereços IP de origem e destino originais, o protocolo de comunicação (como TCP ou UDP) e os números de porta (se o protocolo os usar) permanecem os mesmos. Isso significa que o tráfego é transmitido diretamente para as VMs ou pods de back-end, e o balanceador de carga não encerra as conexões. Os serviços de back-end processam o encerramento das conexões e garantem que o tráfego flua perfeitamente do cliente para o serviço.

Balanceamento de carga ponderado

Se você configurou um serviço LoadBalancer externo que pode ser acessado por clientes fora da rede VPC e Google Cloud VMs, ative o balanceamento de carga ponderado. O balanceamento de carga ponderado distribui o tráfego com base no número de pods de serviço em cada nó do GKE. Assim, os nós que têm mais pods de serviço recebem uma proporção maior de tráfego em comparação com os nós que têm menos pods.

NEGs independentes

Outro método para gerenciar os balanceadores de carga no GKE é criar os componentes do balanceador de carga e permitir que o GKE gerencie os NEGs. Esse tipo de balanceador de carga é chamado de balanceador de carga de rede proxy. Os NEGs são uma maneira de representar grupos de endpoints de back-end (por exemplo, pods) para balanceamento de carga.

Esse tipo de balanceador de carga é destinado apenas ao tráfego TCP. Os balanceadores de carga de rede proxy distribuem o tráfego TCP para back-ends na rede VPC ou em outros ambientes de nuvem. O tráfego é encerrado na camada de balanceamento de carga. Em seguida, o balanceador de carga encaminha o tráfego estabelecendo novas conexões TCP com o back-end disponível mais próximo.

O que é balanceamento de carga nativo de contêiner?

O balanceamento de carga nativo de contêiner é a prática de distribuir o tráfego uniformemente diretamente para os endereços IP de pods individuais (em vez de nós) usando os NEGs GCE_VM_IP_PORT. Os NEGs GCE_VM_IP_PORT permitem especificar endpoints de back-end usando o endereço IP interno principal de uma máquina virtual (VM) do Compute Engine ou um endereço IP de um dos intervalos de IP de alias configurados da VM.

O balanceamento de carga nativo de contêiner é usado para todos os balanceadores de carga da camada 7 gerenciados pelo GKE, incluindo o gateway e Entrada, e NEGs independentes. Os serviços LoadBalancer não usam o balanceamento de carga nativo de contêiner. No entanto, é possível alcançar uma capacidade semelhante ativando o balanceamento de carga ponderado.

O balanceamento de carga nativo de contêiner tem várias vantagens, incluindo melhor desempenho da rede e verificações de integridade aprimoradas, porque ele é direcionado diretamente aos pods. Para mais informações, consulte Balanceamento de carga nativo de contêiner.

Tabelas de resumo

Use as tabelas a seguir para planejar a configuração do balanceamento de carga.

Escolher um tipo de balanceador de carga

A tabela a seguir mostra o tipo de balanceador de carga criado para um determinado recurso (gateway, Entrada ou serviço LoadBalancer):

Recurso do Kubernetes Tipo de balanceador de carga criado
Balanceador de carga de aplicativo Balanceador de carga de rede de passagem.
Gateway
Entrada
Serviço LoadBalancer

Escolher um método para criar um balanceador de carga

A tabela a seguir mostra as opções no GKE para criar o balanceador de carga escolhido:

Tipo de balanceador de carga Métodos para criar o balanceador de carga escolhido
Gateway Entrada Serviço LoadBalancer NEGs independentes
Balanceador de carga de aplicativo externo global
Balanceador de carga de aplicativo externo clássico
Balanceador de carga de aplicativo externo regional
Balanceador de carga de aplicativo interno e regional
Balanceador de carga de aplicativo interno entre regiões
Balanceador de carga de rede proxy
(todos os tipos)
Balanceador de carga de rede de passagem
(interno e externo)

A seguir