Notícias
Feliz Dia do Administrador de Sistemas - os verdadeiros heróis da TI!
DF
abril 29, 2025
Atualizado abril 29, 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:

  • Ter o Kubernetes 1.6 ou superior instalado
  • Ativar a coleta de métricas:
    • Instalar o metrics-server:
  • Verificar se as métricas estão sendo coletadas corretamente:
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:

  • apiVersion: apps/v1 — versão da API do Kubernetes para Deployment.
  • kind: Deployment — tipo de recurso criado.
  • metadata.name — nome do Deployment.
  • labels — rótulos usados para organização e filtragem.
  • spec.replicas — número de réplicas desejadas.
  • selector.matchLabels — seletor para identificar quais pods este deployment gerencia.
  • template — modelo para os pods criados.
  • containers— especificações do contêiner (nome, imagem, portas expostas, limites e requisições de CPU).

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

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

  • Sempre defina requests e limits de recursos nos contêineres — o HPA depende dessas configurações.
  • Verifique os logs do metrics-server se o HPA não estiver funcionando corretamente.
  • Use ferramentas como Grafana para monitorar o comportamento do escalonamento.
  • Combine o HPA com o Cluster Autoscaler para escalonar também os nós do cluster, além dos pods.

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:

  • Risco mínimo: atualizações automáticas de todos os componentes reduzem falhas humanas.
  • Arquitetura flexível: suporte para desde testes locais até soluções corporativas em grande escala.
  • Alta disponibilidade: os pods são distribuídos entre vários nós, garantindo continuidade mesmo em falhas.
  • Escalabilidade real: execute milhares de contêineres por segundo sem aumentar a equipe.
Avaliação:
5 fora de 5
Аverage rating : 5
Avaliado por: 1
CEP 01311-930 São Paulo Avenida Paulista, nº 1765, 7º andar, Cj. 72, CV 10172, Bela Vista
+ 55 11 5118-1047
ITGLOBAL.COM BR LTDA
Usamos cookies para melhorar sua experiência no Serverspace. Ao continuar a navegar em nosso site, você concorda com o Uso de Cookies e com a Política de Privacidade.