Sobre balanceadores de carga baseados em utilização para serviços do GKE


Esta página apresenta o balanceamento de carga baseado em utilização para serviços do Google Kubernetes Engine (GKE), que avalia a utilização de recursos dos pods de back-end e usa a capacidade real da carga de trabalho para rebalancear o tráfego de maneira inteligente, aumentando a disponibilidade do aplicativo e o roteamento flexível.

Esta página é destinada a arquitetos de nuvem e especialistas em Rede que gerenciam serviços no GKE e querem otimizar a distribuição de tráfego com base na utilização de recursos em tempo real.

Antes de ler esta página, confira se você conhece os seguintes conceitos:

Visão geral

A infraestrutura do Cloud Load Balancing encaminha o tráfego para os serviços do GKE com base em métricas de capacidade de acesso padrão, incluindo HTTP, HTTPS, HTTP/2 e gRPC, que determinam a integridade e a qualificação do pod. Por padrão, ele encaminha o tráfego para todos os pods de back-end íntegros considerando a disponibilidade do pod e as políticas de distribuição de tráfego definidas opcionalmente, como GCPTrafficDistributionPolicy.

Os aplicativos modernos rastreiam o uso da CPU para que você possa entender os custos, monitorar o desempenho e gerenciar a capacidade de maneira eficaz. Para atender a essa necessidade, os balanceadores de carga usam dados de utilização de recursos em tempo real como uma métrica, o que permite determinar o volume de tráfego ideal que cada pod de back-end pode processar para uma distribuição inteligente de tráfego.

O balanceamento de carga baseado em utilização para serviços do GKE avalia a utilização de recursos como uma métrica para determinar a capacidade dos pods de back-end de processar o tráfego de aplicativos. Em seguida, ele reequilibra o tráfego para outros back-ends se um ou mais pods estiverem sendo usados em excesso.

Recursos e benefícios

O balanceamento de carga baseado em utilização oferece os seguintes benefícios:

  • Aumenta a disponibilidade do aplicativo: prioriza o tráfego para pods com menor utilização de recursos quando os back-ends estão sob pressão, o que ajuda a manter o desempenho do aplicativo, evita lentidão e interrupções e ajuda a garantir uma experiência confiável para os usuários.

  • Oferece roteamento flexível: fornece um conjunto adicional de métricas que permitem definir políticas de distribuição de tráfego que se alinham precisamente aos seus casos de uso comerciais.

Como funciona o balanceamento de carga baseado em utilização

O balanceamento de carga baseado em utilização para serviços do GKE melhora a forma como o tráfego é gerenciado para seus aplicativos em execução no GKE, tornando o processo mais responsivo à carga de recursos. O aplicativo é executado no GKE usando muitas instâncias (pods) em máquinas diferentes. Ele recebe tráfego de duas maneiras principais:

  • De fora do cluster (tráfego norte-sul): o cluster recebe tráfego da Internet ou de outras fontes externas, conhecido como tráfego norte-sul. Um balanceador de carga (gateway) gerenciado pelo GKE direciona esse tráfego de fora do cluster.

  • De dentro do cluster (tráfego leste-oeste): seu cluster recebe fluxos de tráfego entre diferentes partes do aplicativo, de outros serviços no cluster do GKE ou em vários clusters. Esse fluxo de tráfego interno é conhecido como tráfego leste-oeste.

O balanceamento de carga baseado em utilização para serviços do GKE envolve um processo contínuo em que os agentes do GKE coletam métricas de utilização de pods que permitem que a infraestrutura do Cloud Load Balancing distribua o tráfego de maneira inteligente. As etapas a seguir resumem como o balanceamento de carga baseado na utilização para serviços do GKE gerencia o tráfego de aplicativos com base no uso de recursos em tempo real:

  1. Quando você configura o serviço do GKE com um balanceador de carga de aplicativo (gateway), o GKE cria automaticamente NEGs para cada zona e atribui os pods do aplicativo a esses NEGs. Inicialmente, a distribuição de tráfego depende de verificações de integridade básicas e das configurações padrão.

  2. Você configura o serviço do GKE para usar a utilização de recursos, como CPU, como uma métrica principal para o balanceamento de carga.

  3. Um agente especial do GKE monitora continuamente o uso de recursos dos seus pods (por exemplo, CPU) e envia esses dados regularmente para a infraestrutura do Cloud Load Balancing. Se um pod tiver vários contêineres, o agente vai calcular a utilização combinada deles.

  4. A infraestrutura do Cloud Load Balancing analisa dados de utilização em tempo real para ajustar dinamicamente a distribuição de tráfego. Ele determina quanto tráfego enviar para cada grupo de pods (cada NEG zonal) avaliando a utilização média de recursos (como carga da CPU) e outros fatores, como latência de rede. Esse processo muda automaticamente o tráfego de pods com carga mais alta para aqueles com carga mais baixa, garantindo o uso eficiente de recursos na região mais próxima.

O exemplo a seguir demonstra como o balanceamento de carga baseado em utilização funciona.

Exemplo: como lidar com pods superutilizados

Quando o serviço executa vários contêineres no mesmo pod, o agente de métricas do GKE informa o uso de recursos de cada contêiner separadamente. A infraestrutura do Cloud Load Balancing calcula uma média ponderada da utilização para obter a capacidade total do pod.

Balanceamento de carga baseado na utilização para serviços do GKE.
Figura 1 : distribuição inteligente de tráfego com base na utilização da CPU de back-end em uma configuração de balanceador de carga gerenciado pelo GKE.

A Figura 1 mostra como o Cloud Load Balancing usa métricas de utilização da CPU em tempo real do GKE para otimizar a distribuição de tráfego entre pods implantados em várias zonas. A solicitação do cliente é encaminhada pelo gateway do GKE para pods de back-end agrupados em NEGs em três zonas.

  • Na zona 1, o pod informa 90% de uso da CPU. O balanceador de carga reduz o tráfego para esse pod e evita a sobrecarga.

  • Na zona 2, o pod é moderadamente utilizado com 60% de CPU e continua a receber tráfego.

  • Na zona 3, o pod informa um uso baixo da CPU, de 40%, e pode receber mais tráfego. O GKE envia continuamente metadados e métricas de utilização para a infraestrutura do Cloud Load Balancing, que ajusta de maneira inteligente o roteamento de tráfego para manter o desempenho e a disponibilidade do aplicativo.

Imagine um cenário em que seu serviço está configurado para um uso máximo de CPU de 80%. Se os pods na Zona 1 relatarem 90% de uso da CPU, o que excede o limite, o seguinte vai acontecer:

  1. A infraestrutura do Cloud Load Balancing detecta esse uso excessivo.
  2. Em seguida, ele reequilibra o tráfego de maneira inteligente e reduz a quantidade de tráfego enviada para pods na Zona 1. Esse rebalanceamento continua até que a utilização média da CPU para pods nessa zona fique abaixo do limite de 80%.
  3. Como os pods na zona 1 informam uma utilização menor da CPU (abaixo do limite de 80%), a infraestrutura do Cloud Load Balancing reavalia a distribuição de tráfego. Em seguida, ele rebalanceia gradualmente o tráfego em todos os pods que dão suporte ao serviço e continua distribuindo o tráfego de maneira eficiente com base na utilização.

A seguir