1001Ferramentas
📊Dev

K8s HPA YAML

Gere um Kubernetes HorizontalPodAutoscaler (HPA) em YAML com mínimo, máximo de réplicas e alvo de CPU. Escale seus pods automaticamente conforme a carga.

YAML

Escalar pods automaticamente pelo uso de CPU

O HorizontalPodAutoscaler é o objeto do Kubernetes que aumenta e diminui o número de réplicas de um Deployment conforme a carga. Ele observa uma métrica, compara com o alvo que você definiu e ajusta a contagem para trazer a média de volta ao alvo. Sem ele, dimensionar é escolher entre pagar por capacidade ociosa ou ficar sem margem no pico.

Preencha o nome do recurso, o Deployment alvo, os limites mínimo e máximo de réplicas e o percentual de CPU desejado. A página devolve o manifesto na versão autoscaling/v2, que é a atual e a que aceita múltiplas métricas. Salve em um arquivo e aplique com kubectl apply -f. O alvo de 70% é um ponto de partida razoável: deixa folga para o tempo que um pod novo leva para subir e ficar pronto.

Um requisito que derruba muita configuração: o percentual de CPU é calculado sobre o requests.cpu de cada contêiner, não sobre o limite nem sobre a capacidade do nó. Se o Deployment não declara requests de CPU, o HPA não consegue calcular a proporção e fica sem métrica, mostrando unknown no kubectl get hpa. O metrics-server também precisa estar instalado no cluster — sem ele, não há de onde ler o consumo.

Perguntas frequentes

Por que meu HPA mostra unknown na coluna de métrica?
As duas causas comuns são a ausência de requests.cpu nos contêineres do Deployment e a falta do metrics-server no cluster. Confira com kubectl top pods: se esse comando não responde, o problema é o metrics-server, não o HPA.
Dá para escalar por outra coisa além de CPU?
Sim. A versão autoscaling/v2 aceita memória, métricas customizadas vindas do Prometheus via adapter e métricas externas, como o tamanho de uma fila. O manifesto gerado aqui traz só o bloco de CPU, que é o caso mais comum e o mais simples de acertar; os demais entram como itens adicionais na lista de metrics.
O HPA convive com réplicas fixas no Deployment?
Convive mal. Se o Deployment declara replicas e o HPA também gerencia o mesmo objeto, cada apply do manifesto reverte a contagem que o autoscaler tinha ajustado. A prática recomendada é remover o campo replicas do Deployment quando um HPA cuida dele.

Ferramentas Relacionadas