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:
- HPA (Horizontal Pod Autoscaler): Adiciona ou remove instâncias de pods com base em métricas como uso de CPU ou memória. Ideal para aplicações que precisam aumentar a capacidade de atendimento aumentando o número de instâncias.
- VPA (Vertical Pod Autoscaler): Ajusta os recursos (CPU/memória) de um pod. Ideal para aplicações que precisam de mais recursos para uma única instância ao invés de várias instâncias menores.
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.