Acerca dos balanceadores de carga baseados na utilização para serviços do GKE


Esta página apresenta o equilíbrio de carga baseado na utilização para os serviços do Google Kubernetes Engine (GKE), que avalia a utilização de recursos dos seus pods de back-end e usa a capacidade de carga de trabalho real para reequilibrar de forma inteligente o tráfego para aumentar a disponibilidade da aplicação e o encaminhamento flexível.

Esta página destina-se a arquitetos da nuvem e especialistas em redes que gerem 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, certifique-se de que conhece o seguinte:

Vista geral

A infraestrutura do Cloud Load Balancing encaminha o tráfego para os serviços do GKE com base em métricas de acessibilidade padrão, incluindo HTTP, HTTPS, HTTP/2 e gRPC, que determinam o estado e a elegibilidade dos pods. Por predefinição, encaminha o tráfego para todos os pods de back-end em bom estado, tendo em conta a disponibilidade dos pods e, opcionalmente, as políticas de distribuição de tráfego definidas, como GCPTrafficDistributionPolicy.

As aplicações modernas acompanham a utilização da CPU para que possa compreender os custos, monitorizar o desempenho e gerir a capacidade de forma eficaz. Para satisfazer esta necessidade, os equilibradores de carga usam dados de utilização de recursos em tempo real como uma métrica, o que lhes permite determinar o volume de tráfego ideal que cada pod de back-end pode processar para uma distribuição de tráfego inteligente.

O balanceamento de carga baseado na 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 da aplicação. Em seguida, volta a equilibrar o tráfego para outros back-ends se um ou mais pods estiverem sobreutilizados.

Funcionalidades e vantagens

O balanceamento de carga baseado na utilização oferece as seguintes vantagens:

  • Aumenta a disponibilidade da aplicação: prioriza o tráfego para os pods com uma utilização de recursos inferior quando os back-ends estão sob pressão, o que ajuda a manter o desempenho da aplicação, evita abrandamentos e interrupções, e ajuda a garantir uma experiência fiável para os utilizadores.

  • Oferece encaminhamento flexível: fornece um conjunto adicional de métricas que lhe permitem definir políticas de distribuição de tráfego que se alinham precisamente com os seus exemplos de utilização empresarial.

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

O equilíbrio de carga baseado na utilização para serviços do GKE melhora a forma como o tráfego é gerido para as suas aplicações que são executadas no GKE, tornando o processo mais reativo à carga de recursos. A sua aplicação é executada no GKE através da utilização de muitas instâncias (pods) em máquinas diferentes. Recebe tráfego de duas formas principais:

  • Fora do cluster (tráfego norte-sul): o cluster recebe tráfego da Internet ou de outras fontes externas, o que é conhecido como tráfego norte-sul. Um equilibrador de carga (gateway) gerido pelo GKE direciona este tráfego de fora do cluster.

  • A partir do interior do cluster (tráfego leste-oeste): o cluster recebe fluxos de tráfego entre diferentes partes da sua aplicação, de outros serviços no cluster do GKE ou em vários clusters. Este fluxo de tráfego interno é conhecido como tráfego leste-oeste.

O balanceamento de carga baseado na utilização para serviços GKE envolve um processo contínuo, em que os agentes do GKE recolhem métricas de utilização de pods que permitem à infraestrutura do Cloud Load Balancing distribuir o tráfego de forma inteligente. Os passos seguintes resumem como o equilíbrio de carga baseado na utilização para os serviços do GKE gere o tráfego da sua aplicação com base na utilização de recursos em tempo real:

  1. Quando configura o seu serviço GKE com um Application Load Balancer (gateway), o GKE cria automaticamente NEGs para cada zona e atribui os pods da sua aplicação a estes NEGs. Inicialmente, a distribuição de tráfego baseia-se em verificações de estado básicas e nas suas predefinições.

  2. Configura o seu serviço do GKE para usar a utilização de recursos, como a CPU, como uma métrica fundamental para o equilíbrio de carga.

  3. Um agente especial do GKE monitoriza continuamente a utilização de recursos dos seus pods (por exemplo, CPU) e envia estes dados para a infraestrutura do Cloud Load Balancing regularmente. Se um Pod tiver vários contentores, o agente calcula a respetiva utilização combinada.

  4. A infraestrutura do Cloud Load Balancing analisa os dados de utilização em tempo real para ajustar dinamicamente a distribuição do tráfego. Determina a quantidade de tráfego a enviar a cada grupo de pods (cada NEG zonal) avaliando a respetiva utilização média de recursos (como a carga da CPU) e outros fatores, como a latência da rede. Este processo transfere automaticamente o tráfego de pods com uma carga mais elevada para aqueles com uma carga mais baixa, garantindo uma utilização eficiente dos recursos na sua região mais próxima.

O exemplo seguinte demonstra como funciona o equilíbrio de carga baseado na utilização.

Exemplo: processar pods sobreutilizados

Quando o seu serviço executa vários contentores no mesmo pod, o agente de métricas do GKE comunica a utilização de recursos de cada contentor separadamente. Em seguida, a infraestrutura do Cloud Load Balancing calcula uma média ponderada da respetiva 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 do tráfego com base na utilização da CPU do back-end numa configuração do equilibrador de carga gerido 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 os pods implementados em várias zonas. O pedido do cliente é encaminhado através do gateway do GKE para pods de back-end agrupados em NEGs em três zonas.

  • Na zona 1, o Pod comunica uma utilização da CPU de 90%. O balanceador de carga reduz o tráfego para este pod para evitar a sobrecarga.

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

  • Na Zona 3, o Pod comunica uma utilização baixa da CPU de 40% e pode receber mais tráfego. O GKE envia continuamente metadados e métricas de utilização para a infraestrutura de balanceamento de carga na nuvem, que ajusta de forma inteligente o encaminhamento de tráfego para manter o desempenho e a disponibilidade da aplicação.

Considere um cenário em que o seu serviço está configurado para uma utilização máxima da CPU de 80%. Se os pods na zona 1 comunicarem uma utilização da CPU de 90%, o que excede o limite, ocorre o seguinte:

  1. A infraestrutura do Cloud Load Balancing deteta esta utilização excessiva.
  2. Em seguida, reequilibra o tráfego de forma inteligente e reduz a quantidade de tráfego que envia para os agrupamentos na zona 1. Este reequilíbrio continua até que a utilização média da CPU para os pods nessa zona volte a ficar abaixo do limite de utilização de 80%.
  3. À medida que os pods na zona 1 comunicam uma utilização da CPU inferior (abaixo do limite de 80%), a infraestrutura do Cloud Load Balancing reavalia a distribuição do tráfego. Em seguida, volta a equilibrar gradualmente o tráfego em todos os pods que suportam o serviço e continua a distribuir o tráfego de forma eficiente com base na utilização.

O que se segue?