Se você já se deparou com gargalos de performance ou custos exorbitantes na sua jornada com Kubernetes, prepare-se para conhecer seu novo melhor amigo: o Horizontal Pod Autoscaler (HPA). Neste post, vamos mergulhar no universo do HPA, desvendando seus segredos e te equipando com o conhecimento necessário para otimizar seus clusters.
O que é o HPA?
A função básica do HPA é monitorar sua aplicação em tempo real, e ajustar automaticamente o número de pods em ação para garantir a melhor experiência possível para seus usuários. Em outras palavras, esse recurso mágico do Kubernetes permite escalar horizontalmente seus workloads de forma inteligente e eficiente.
Benefícios de um HPA bem configurado:
- Desempenho: O HPA garante que sua aplicação esteja sempre pronta, escalando recursos automaticamente sob demanda, evitando gargalos e lentidões.
- Eficiência nos custos: Chega de pagar por recursos ociosos! O HPA te ajuda a otimizar seus gastos, reduzindo o número de pods quando a demanda diminui.
- Alta disponibilidade: O HPA garante que sua aplicação esteja sempre disponível, mesmo em picos de tráfego, evitando indisponibilidades e frustrações para seus usuários.
Criando seu primeiro HPA
Para começar sua jornada com o HPA, vamos criar dois manifestos.
Exemplo 1
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: meu-hpa-simples
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: meu-deployment
minReplicas: 2
maxReplicas: 10
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 60
Neste exemplo, definimos um HPA básico para o deployment “meu-deployment”. As configurações são as seguintes:
- minReplicas: Define o número mínimo de pods que devem estar sempre em execução, mesmo que a demanda seja baixa. Neste caso, o valor é 2, garantindo que no mínimo 2 pods estejam sempre disponíveis.
- maxReplicas: Define o número máximo de pods que o HPA pode criar para atender à demanda. O valor máximo é 10, permitindo que o HPA escale até 10 pods se necessário.
- metrics: Um array com as definições de métricas que devem ser acompanhadas. No nosso exemplo, sempre que a CPU chegar em 60% de consumo, um novo pod será adicionado.
Exemplo 2
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: meu-hpa-avancado
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: meu-deployment
minReplicas: 2
maxReplicas: 10
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 70
- type: Resource
resource:
name: memory
target:
type: Utilization
averageUtilization: 80
behavior:
scaleDown:
stabilizationWindowSeconds: 300
policies:
- type: Pods
value: 2
periodSeconds: 300
scaleUp:
stabilizationWindowSeconds: 0
policies:
- type: Percent
value: 100
periodSeconds: 30
Nesse segundo exemplo, além do monitoramento de memória, adicionamos também o atributo behavior, que nos permite controlar o comportamento de scale-up e scale-down dos pods.
- scaleDown: Configurações específicas para a redução de pods.
- stabilizationWindowSeconds: Tempo de espera antes de reduzir, garantindo estabilidade (300 segundos = 5 minutos).
- policies: Define como a redução de pods será aplicada.
- type: Pods – O tipo diz que a métrica é baseada no número de pods.
- value: 2 – O número de pods é reduzido gradualmente até chegar ao valor mínimo configurado.
- periodSeconds: 300 – Intervalo de tempo entre as reduções (300 segundos = 5 minutos)
- scaleUp: Configurações específicas para scale-up (aumento de pods)
- stabilizationWindowSeconds: 0 – Sem tempo de espera antes de escalar para cima (imediato).
- policies: Define como será o aumento de pods.
- type: Percent – Tipo diz que o aumento será baseado em porcentagem.
- value: 100 – Duplica o número de pods quando as métricas indicam a necessidade.
- periodSeconds: 30 – Intervalo de tempo entre escalonamentos (30 segundos).
Validando seu HPA
Para garantir que seu HPA esteja funcionando como um relógio, existem algumas dicas valiosas:
- Monitore as métricas: Utilize ferramentas como o Prometheus para acompanhar as métricas de CPU, memória e pods da sua aplicação.
- Verifique os logs: Analise os logs do HPA para identificar possíveis erros ou problemas de configuração.
- Simule cenários de carga: Crie testes de carga para verificar como o HPA reage a diferentes picos de demanda.
Conclusão
O HPA é uma ferramenta poderosa, mas exige cuidado na configuração. Ajuste os parâmetros de acordo com as necessidades da sua aplicação e monitore de perto seu funcionamento para garantir o máximo de performance e eficiência.
Se você está começando agora no mundo Kubernetes e quer ver exemplos na prática, não deixe de conferir no curso de “Containers & Kubernetes”.
Inscreva-se na nossa newsletter para não perder nenhum post e ainda ganhar 20% de desconto em todos os cursos e imersão.
Faça parte da comunidade!
Receba os melhores conteúdos sobre Go, Kubernetes, arquitetura de software, Cloud e esteja sempre atualizado com as tendências e práticas do mercado.
Livros Recomendados
Abaixo listei alguns dos melhores livros que já li sobre Kubernetes.




