31 de março de 20264 min de leitura

Aumente a performance de escalabilidade no GKE com o novo Active Buffer

Justyna Betkier, Staff Software Engineer

Google Cloud

Banner - Aumente a performance de escalabilidade no GKE com o novo Active Buffer

Otimização de rede no GKE

Em ambientes de cloud dinâmicos, picos inesperados de tráfego ou janelas de eventos agendados podem colocar uma pressão extrema sobre os workloads. Seja uma aplicação de varejo durante uma promoção ou uma plataforma de games em horários de pico, a necessidade de escalar com rapidez e fluidez é imperativa para manter a estabilidade. Ter capacidade de computação disponível de forma quase imediata não é apenas uma conveniência, mas um requisito para atender aos seus SLOs de latência.

Embora o Cluster Autoscaler (CA) do Kubernetes seja robusto no provisionamento de novas instâncias, a realidade da infraestrutura é que o processo de subir novos nós — que inclui o boot da máquina virtual e o pull de imagens de container — introduz uma latência inevitável. Esse atraso pode gerar degradação de performance, violações de SLA e interrupções no serviço.

Historicamente, os times de SRE e engenharia tem mitigado essa latência com abordagens que, muitas vezes, sacrificam a eficiência de custos ou a simplicidade operacional:

  • Over-provisioning: Ajustar os targets do Horizontal Pod Autoscaler (HPA) para baixo, mantendo uma infraestrutura superdimensionada 24/7. O resultado aqui é um impacto direto na conta mensal de cloud.
  • Balloon Pods: A prática de implantar workloads de baixa prioridade apenas para reservar espaço no cluster. Embora eficaz em alguns cenários, essa técnica exige um gerenciamento manual complexo de priority-classes e não se ajusta dinamicamente à variação real da carga de trabalho.

O novo Active Buffer no Google Kubernetes Engine (GKE) surge para substituir essas soluções de contorno por uma implementação nativa e declarativa, baseada na API CapacityBuffer do Kubernetes OSS. O objetivo é claro: permitir que você defina uma reserva de capacidade no cluster que o Cluster Autoscaler interpreta como demanda pendente, garantindo que os nós sejam provisionados preventivamente.

Quando o tráfego aumenta repentinamente, seu novo workload é alocado imediatamente nessa capacidade ociosa, evitando o tempo de espera do boot de nós. Além disso, a estratégia de desenvolvimento "OSS-first" garante que você esteja utilizando um padrão de mercado, evitando vendor lock-in algorítmico e simplificando a operação via manifests declarativos.

Estratégias de Buffering

A flexibilidade do Active Buffer permite desenhar a estratégia que melhor se adequa ao seu modelo de negócio:

  1. Fixed replicas: Ideal para cargas previsíveis, mantendo sempre o espaço correspondente a um número fixo de pods.
  2. Percentage-based: Uma abordagem elástica onde o buffer cresce proporcionalmente ao seu deployment atual, ideal para aplicações com sazonalidade latente.
  3. Resource limits: Focado totalmente em controle de custos, estabelecendo um teto rígido de vCPUs para o buffer.

Para implementar, o fluxo é simples. Defina um PodTemplate que servirá de referência (o "tamanho" de cada chunk de buffer):

apiVersion: v1
kind: PodTemplate
metadata:
  name: buffer-chunk-template
  namespace: ca-buffer-test # MANDATORY: Deve estar no mesmo namespace do CapacityBuffer
template:
  spec:
    terminationGracePeriodSeconds: 0
    containers:
    - name: buffer-container
      image: registry.k8s.io/pause:3.9
      resources:
        requests:
          cpu: "1"
          memory: "1Gi"
        limits:
          cpu: "1"
          memory: "1Gi"

Em seguida, crie o objeto CapacityBuffer referenciando esse template:

apiVersion: autoscaling.x-k8s.io/v1beta1
kind: CapacityBuffer
metadata:
  name: fixed-replica-buffer
  namespace: ca-buffer-test 
spec:
  # Usa o PodTemplate para definir o tamanho de cada chunk
  podTemplateRef:
    name: buffer-chunk-template
  # Estado desejado: 3 chunks de buffer
  replicas: 3

Ao adotar o Active Buffer, times de engenharia no Brasil podem elevar a maturidade de suas operações, substituindo ajustes manuais por uma gestão de capacidade baseada em política. É um movimento estratégico para empresas que não podem se dar ao luxo de ter latência em momentos críticos de conversão.


Artigo originalmente publicado por Justyna BetkierStaff Software Engineer em Cloud Blog.

Gostou? Compartilhe:
Precisa de ajuda?Fale com nossos especialistas 👋
Avatar Walcew - Headset