Ícone do site Tiago Temporin

Como configurar Vertical Pod Autoscaler no Kubernetes

No mundo dos contêineres e orquestração, o Kubernetes se destaca como uma das plataformas mais poderosas para gerenciar aplicações em escala.

Uma das funcionalidades essenciais oferecidas pelo Kubernetes é a capacidade de escalar aplicações automaticamente. Quando comparado com o Horizontal Pod Autoscaler (HPA), que é bastante conhecido e utilizado, o Vertical Pod Autoscaler (VPA), mesmo desempenhando um papel crucial no ajuste de recursos alocados a um pod, é muito menos conhecido.

Neste post falo um pouco sobre o conceito de VPA, suas diferenças em relação ao HPA e como configurá-lo com exemplos práticos.

Vertical Pod Autoscaler

O Vertical Pod Autoscaler (VPA) permite ajustar automaticamente as solicitações de CPU e memória de um pod em tempo real, com base nas necessidades observadas da aplicação.

Diferente do Horizontal Pod Autoscaler (HPA), que escala o número de réplicas de um pod horizontalmente, o VPA ajusta os recursos verticalmente, aumentando ou diminuindo os recursos disponíveis para os pods existentes.

Diferença entre VPA e HPA:

O VPA é especialmente útil em situações onde a carga de trabalho varia significativamente e de forma imprevisível, permitindo que a aplicação tenha os recursos necessários sem a necessidade de intervenção manual.

Como configurar o Vertical Pod Autoscaler

Antes de configurar o VPA para a sua aplicação, verifique se o seu cluster já tem o CRD (Custom Resource Definition) do Vertical Pod Autoscaler instalado.

kubectl get crd verticalpodautoscalers.autoscaling.k8s.io

Se o CRD estiver instalado, o comando acima deverá retornar algo como:

NAME                                         CREATED AT
verticalpodautoscalers.autoscaling.k8s.io    2023-07-01T12:34:56Z

Caso ele não esteja instalado, por existir uma correlação entre a versão do Kubernetes e a versão do VPA, verifique no documento oficial do CRD como e qual versão instalar.

Com o CRD instalado, agora é só criar um manifesto para definir o VPA. Neste exemplo, ajustaremos as solicitações de CPU e memória de um Deployment existente chamado nginx-deployment.

apiVersion: autoscaling.k8s.io/v1
kind: VerticalPodAutoscaler
metadata:
  name: nginx-vpa
spec:
  targetRef:
    apiVersion: "apps/v1"
    kind:       Deployment
    name:       nginx-deployment
  updatePolicy:
    updateMode: "Auto"

Por fim, aplique o manifesto no seu cluster:

kubectl apply -f nginx-vpa.yaml

Após aplicar, você pode verificar o status do VPA e ver como ele ajustou os recursos dos pods:

kubectl get vpa
kubectl describe vpa nginx-vpa

Conclusão

O Vertical Pod Autoscaler é uma ferramenta poderosa no Kubernetes para gerenciar eficientemente os recursos de uma aplicação. Ao ajustar automaticamente as solicitações de CPU e memória de um pod, o VPA garante que sua aplicação tenha os recursos necessários para lidar com variações de carga sem a necessidade de intervenção manual constante.

Juntamente com o Horizontal Pod Autoscaler, o VPA oferece uma solução completa para escalar aplicações de forma inteligente e eficiente no Kubernetes, mas isso é assunto para um próximo post.

Se inscreva na newsletter para receber esses posts semanais na sua caixa de e-mail. Não esquece de dar um confere no nosso curso completo de Containers e Kubernetes.

Até a próxima!


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