29.04.2025

Configuração do HPA (Horizontal Pod Autoscaler) no Kubernetes

Uma das características fundamentais da infraestrutura moderna em nuvem é sua capacidade de se adaptar dinamicamente a mudanças em tempo real. O escalonamento automático horizontal de cargas de trabalho garante resiliência, alta disponibilidade e uso eficiente dos recursos. No ecossistema do Kubernetes, esse papel é desempenhado pelo Horizontal Pod Autoscaler (HPA) — um controlador nativo que ajusta automaticamente o número de pods com base em métricas como uso de CPU, consumo de memória ou até métricas personalizadas de desempenho. Isso permite que os aplicativos respondam a picos de carga sem intervenção manual, garantindo o equilíbrio entre desempenho e custo.

O Horizontal Pod Autoscaler (HPA) é um controlador do Kubernetes que altera automaticamente a quantidade de pods em um Deployment, ReplicaSet ou StatefulSet com base em métricas (como uso de CPU, memória ou métricas personalizadas).

Pré-requisitos

Antes de configurar o HPA, você precisa:

kubectl top pods

Exemplo de configuração do HPA

Suponha que você já tenha um deployment chamado my-app, com uma imagem de contêiner escalável.

1. Criar o Deployment:

apiVersion: apps/v1
kind: Deployment
metadata:
name: web-service
labels:
environment: production
spec:
replicas: 1
selector:
matchLabels:
app: web-service
template:
metadata:
labels:
app: web-service
spec:
containers:
- name: web-container
image: your-image:latest
ports:
- name: http
containerPort: 80
resources:
requests:
cpu: "100m"
limits:
cpu: "500m"

Aplicar a configuração:

kubectl apply -f deployment.yaml

Explicação:

Um diagrama que ilustra a relação entre Deployment, ReplicaSet e Pod no Kubernetes:

2. Criar o HPA:

kubectl autoscale deployment my-app
--cpu-percent=50
--min=1
--max=5

Esse comando cria um HPA que visa manter o uso da CPU em torno de 50%, ajustando a quantidade de pods entre 1 e 5.

Verificando o status do HPA

kubectl get hpa

Exemplo de saída:

NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE my-app Deployment/my-app 30%/50% 1 5 1 3m

Testando o escalonamento

Você pode gerar carga nos pods para testar o escalonamento. Por exemplo, usando o stress dentro do contêiner:

kubectl exec -it -- apt update && apt install -y stress kubectl exec -it -- stress --cpu 1

Após alguns minutos, o HPA deverá aumentar a quantidade de réplicas automaticamente.

Uso de métricas personalizadas (opcional)

Para cenários avançados, é possível configurar o HPA com métricas personalizadas utilizando o Prometheus Adapter ou a External Metrics API.

Recomendações

Conclusão

O Horizontal Pod Autoscaler é uma ferramenta poderosa e flexível que permite ao Kubernetes adaptar automaticamente o número de réplicas dos pods com base na carga real do sistema. Sua adoção é essencial para construir aplicações resilientes, escaláveis e economicamente eficientes em ambientes de nuvem. O HPA reduz a necessidade de ajustes manuais durante picos de carga, otimizando o uso dos recursos computacionais e garantindo desempenho estável.

Para quem deseja começar rapidamente com Kubernetes e HPA, plataformas em nuvem com infraestrutura pronta são ideais. Por exemplo, na Serverspace, você pode alugar um cluster Kubernetes com pré-instalação, permitindo que você se concentre em suas aplicações imediatamente.

Vantagens do Kubernetes na Serverspace: