Como Parar de Pagar Demais pela Nuvem e Começar a Viver com o Kubernetes Autoscaler
Imagine o seguinte: você lançou uma campanha publicitária, o tráfego dispara, e seus pods no Kubernetes começam a "sufocar" com a carga. Ou o contrário: a noite cai, os usuários estão dormindo, mas dezenas de instâncias caras continuam girando na nuvem, consumindo o orçamento da sua empresa. Parece familiar?
Normalmente, nesses momentos, as pessoas lembram do autoscaling. No ecossistema Kubernetes, isso é tratado pelo repositório kubernetes/autoscaler. Não é apenas um único utilitário, mas um conjunto completo de ferramentas que ajudam o cluster a "respirar" com a carga. Decidi descobrir o que tem dentro e por que é indispensável para qualquer ambiente de produção.
O Que Está Por Trás dos Panos
O repositório abriga três componentes principais. Cada um resolve sua própria tarefa específica, e frequentemente são confundidos entre si.
Cluster Autoscaler: Quando Não Há "Ferro" Suficiente
Esta é provavelmente a ferramenta mais popular do conjunto. Seu trabalho é simples: se aparecerem pods no cluster que não conseguem iniciar por falta de recursos (status Pending), o Cluster Autoscaler vai até o provedor de nuvem e pede para adicionar um novo nó.
Também funciona no sentido contrário. Se algum nó ficou meio vazio por muito tempo e seus pods podem ser movidos com segurança para outros nós, o autoscaler removerá o hardware extra. Isso é economia direta de custos, especialmente se você está na AWS, GCP ou Azure.
Vertical Pod Autoscaler (VPA): A Magia do Ajuste de Recursos
Se o Cluster Autoscaler muda o número de nós, então o VPA muda o "tamanho" dos pods em si. Frequentemente, desenvolvedores definem requests e limits no olho. O resultado é ou a aplicação crasha com OutOfMemory, ou reservamos 2 GB de RAM onde só são necessários 200 MB.
O VPA monitora o consumo real de recursos e ajusta automaticamente os limites. O projeto está atualmente em status beta, mas já faz algo muito legal — o modo de recomendação. Você pode simplesmente observar quais recursos ele sugere definir, sem confiar que ele reinicie os pods automaticamente.
Addon Resizer: Microgerenciamento para Serviços do Sistema
Esta é uma versão simplificada do autoscaler vertical. É necessária para serviços cujo consumo de recursos escala linearmente com o tamanho do cluster. Por exemplo, o servidor de métricas precisa de mais memória se você tiver 100 nós em vez de 10. O Addon Resizer monitora o número de nós e dimensiona esses componentes auxiliares de acordo.
Como Funciona na Prática
Digamos que você está usando Go. Para começar a trabalhar com o código do projeto localmente, você precisa seguir a estrutura de caminhos que o Kubernetes utiliza. O código deve ficar em k8s.io, não em github.com.
Ponto interessante: o Cluster Autoscaler suporta dezenas de provedores. Não há apenas gigantes como AWS, mas também soluções específicas para clusters bare-metal ou locais. Se você está construindo seu próprio serviço de nuvem, precisará implementar a interface CloudProvider, e seu cluster também aprenderá a escalar.
Por Que Isso Importa para Desenvolvedores
Muitos acham que autoscaling é trabalho do engenheiro DevOps. Na realidade, entender como vertical-pod-autoscaler funciona facilita muito a vida dos desenvolvedores backend.
- Você pode esquecer as suposições ao configurar recursos.
- Aplicações se tornam mais resilientes a picos repentinos de tráfego.
- Você vê o perfil real de consumo de memória e CPU do seu código.
A propósito, o repositório contém Helm charts oficiais para instalação rápida. Isso é muito mais conveniente do que tentar fazer deploy de manifests manualmente.
Vale a Pena Adotar Agora?
Se você está trabalhando na nuvem e suas contas de infraestrutura estão crescendo, então o Cluster Autoscaler é a base. Ele paga de volta o tempo de configuração dentro do primeiro mês de operação.
A situação com o Vertical Pod Autoscaler é mais complicada. Como ele reinicia os pods para alterar recursos (até que o K8s obtenha atualizações de recursos adequadas in-place), ele precisa ser usado com cuidado. Eu sugiro começar com o modo Recommender. Você obterá uma lista de dicas de otimização de recursos, mas o VPA não mexerá em nada.
O projeto está vivo e bem, apoiado por uma enorme comunidade (quase 9.000 estrelas e milhares de forks). Se você tiver dúvidas, o pessoal é ativo no canal #sig-autoscaling do Kubernetes no Slack.
Então, se seu cluster ainda é estático — dê uma olhada neste repositório. É hora de fazer a nuvem trabalhar para você, não contra você.
Projetos relacionados