← BlogAutoscaling no Kubernetes sem susto: HPA, VPA e Cluster Autoscaler na medida certa
Kubernetes

Autoscaling no Kubernetes sem susto: HPA, VPA e Cluster Autoscaler na medida certa

Por Kubmix Admin · 21/06/2026

Introdução: Por que o Autoscaling no Kubernetes é essencial?

Gerenciar cargas de trabalho variáveis é um dos maiores desafios em ambientes de produção modernos. O Kubernetes oferece três mecanismos complementares de autoscaling que, quando bem configurados, garantem que sua aplicação responda à demanda sem desperdiçar recursos computacionais ou gerar custos desnecessários.

Neste tutorial, você vai entender como funcionam o Horizontal Pod Autoscaler (HPA), o Vertical Pod Autoscaler (VPA) e o Cluster Autoscaler, quando usar cada um deles e como configurá-los de forma prática no seu cluster Kubernetes.

Pré-requisitos

  • Cluster Kubernetes funcional (versão 1.23+)
  • kubectl configurado e com acesso ao cluster
  • Metrics Server instalado no cluster
  • Conhecimento básico de manifests YAML

Passo 1: Entendendo as diferenças entre HPA, VPA e Cluster Autoscaler

Antes de sair aplicando configurações, é fundamental entender o papel de cada componente:

  • HPA (Horizontal Pod Autoscaler): Escala o número de réplicas de um Pod com base em métricas como uso de CPU ou memória.
  • VPA (Vertical Pod Autoscaler): Ajusta os recursos (requests e limits) de CPU e memória de um Pod individualmente, sem adicionar réplicas.
  • Cluster Autoscaler: Adiciona ou remove nós do cluster conforme a demanda de agendamento de Pods.

Os três se complementam: o HPA e o VPA atuam dentro do cluster existente, enquanto o Cluster Autoscaler garante que haja infraestrutura suficiente para suportar o crescimento.

Passo 2: Configurando o Horizontal Pod Autoscaler (HPA)

O HPA é o mecanismo mais utilizado no dia a dia. Ele monitora métricas e ajusta o número de réplicas automaticamente.

2.1 Verifique se o Metrics Server está instalado

Execute o comando abaixo para confirmar:

kubectl get deployment metrics-server -n kube-system

Se não estiver instalado, aplique o manifesto oficial disponível no repositório do Kubernetes Metrics Server no GitHub.

2.2 Criando o HPA via manifesto YAML

Crie um arquivo chamado hpa.yaml com o seguinte conteúdo:

  • apiVersion: autoscaling/v2
  • kind: HorizontalPodAutoscaler
  • metadata.name: minha-aplicacao-hpa
  • spec.scaleTargetRef: aponte para o seu Deployment
  • spec.minReplicas: 2
  • spec.maxReplicas: 10
  • spec.metrics: tipo Resource, CPU, com utilização média alvo de 60%

Aplique com: kubectl apply -f hpa.yaml

Para monitorar o estado do HPA em tempo real, utilize: kubectl get hpa -w

2.3 Boas práticas com HPA

  • Defina sempre minReplicas acima de 1 para garantir alta disponibilidade.
  • Evite targets de CPU muito baixos (abaixo de 50%), pois podem causar oscilações constantes de escala.
  • Combine métricas de CPU e memória para decisões mais precisas.

Passo 3: Configurando o Vertical Pod Autoscaler (VPA)

O VPA é ideal para workloads onde o número de réplicas não precisa variar, mas os recursos alocados precisam ser ajustados dinamicamente.

3.1 Instalando o VPA

O VPA não vem instalado por padrão. Clone o repositório oficial do Kubernetes autoscaler no GitHub e execute o script de instalação disponível na pasta vertical-pod-autoscaler.

3.2 Criando um manifesto VPA

Crie um arquivo vpa.yaml com as seguintes configurações principais:

  • apiVersion: autoscaling.k8s.io/v1
  • kind: VerticalPodAutoscaler
  • spec.targetRef: aponte para o Deployment desejado
  • spec.updatePolicy.updateMode: use "Off" inicialmente para apenas observar as recomendações sem aplicar automaticamente

Aplique com: kubectl apply -f vpa.yaml

Consulte as recomendações geradas com: kubectl describe vpa minha-aplicacao-vpa

3.3 Atenção ao uso combinado de HPA e VPA

Evite usar HPA baseado em CPU junto com VPA em modo Auto no mesmo workload. O VPA pode alterar os requests de CPU e interferir nas métricas que o HPA utiliza para tomar decisões. A combinação segura é: HPA com métricas customizadas (não CPU/memória) + VPA, ou usar apenas um dos dois para métricas de recursos.

Passo 4: Configurando o Cluster Autoscaler

Quando os Pods não conseguem ser agendados por falta de recursos nos nós existentes, o Cluster Autoscaler entra em ação para provisionar novos nós.

4.1 Pré-requisito: suporte do provedor de nuvem

O Cluster Autoscaler funciona com provedores como AWS (Auto Scaling Groups), GCP (GKE) e Azure (AKS). Certifique-se de que o grupo de nós do seu cluster está configurado com limites mínimos e máximos de escala no painel do provedor.

4.2 Implantando o Cluster Autoscaler

Utilize o manifesto oficial disponível no repositório do Kubernetes Autoscaler, ajustando as seguintes variáveis de ambiente no Deployment:

  • --node-group-auto-discovery: configure com o nome do seu grupo de nós ou tag correspondente
  • --scale-down-delay-after-add: defina um tempo de espera após adição de nós (recomendado: 10 minutos)
  • --scale-down-unneeded-time: tempo que um nó precisa estar ocioso antes de ser removido (recomendado: 10 minutos)

4.3 Verificando o funcionamento

Monitore os logs do Cluster Autoscaler com: kubectl logs -n kube-system deployment/cluster-autoscaler -f

Observe eventos de scale-up e scale-down para confirmar que o componente está atuando corretamente.

Passo 5: Validando o ambiente de autoscaling completo

Com os três componentes configurados, realize um teste de carga na sua aplicação utilizando ferramentas como k6, Locust ou hey. Observe em sequência:

  • O HPA aumentando o número de réplicas conforme o uso de CPU sobe.
  • Novos Pods entrando em estado Pending por falta de recursos nos nós existentes.
  • O Cluster Autoscaler provisionando um novo nó para acomodar os Pods pendentes.
  • Após a carga diminuir, o HPA reduzindo as réplicas e o Cluster Autoscaler removendo nós ociosos.

Conclusão

Configurar autoscaling no Kubernetes não precisa ser um processo intimidador. Com o HPA gerenciando réplicas horizontalmente, o VPA otimizando recursos por Pod e o Cluster Autoscaler garantindo capacidade de infraestrutura, você constrói um ambiente verdadeiramente elástico e eficiente. O segredo está em entender o papel de cada componente e combiná-los de forma estratégica, respeitando suas interações e limitações. Na Kubmix, acreditamos que uma infraestrutura bem dimensionada é a base para aplicações resilientes e custos previsíveis.