Ícone do site Tiago Temporin

Como escalar horizontalmente uma aplicação no Kubernetes

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:

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:

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.

Validando seu HPA

Para garantir que seu HPA esteja funcionando como um relógio, existem algumas dicas valiosas:

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.

* indicates required