Se você trabalha com Kubernetes em produção, sabe que ajustar recursos de CPU e memória geralmente significa recriar os pods. Neste post, vamos explorar o In-Place Pod Resize, um recurso que permite redimensionar containers sem perder o uptime.
O que é In-Place Pod Resize?
In-Place Pod Resize é uma funcionalidade do Kubernetes que permite alterar os requests e limits de CPU e memória de um container enquanto o pod continua rodando. Não há reinicialização, sem downtime, sem interrupção de conexões.
Antes dessa feature, a única forma era deletar e recriar o pod com novos valores — algo impraticável em ambientes críticos.
Por que isso importa?
Imagine este cenário: você subiu uma aplicação com 256Mi de memória, achando que era suficiente. Alguns dias depois, monitoramento mostra que está usando 400Mi, próximo ao limite. Você precisa aumentar — e rápido.
Com In-Place Pod Resize, você atualiza o YAML, aplica a mudança, e a aplicação fica com mais recursos sem parar.
Isso é especialmente valioso em:
- Aplicações stateful que perdem estado ao reiniciar
- Workloads críticas onde downtime é custoso
- Ambientes dinâmicos onde carga é imprevisível
Como usar?
Primeiro, certifique-se que seu cluster tem a feature ativada. Verifique a versão do seu Kubernetes e consulte a documentação oficial para confirmar suporte completo.
Atualizando requests e limits com resizePolicy
Um detalhe crucial: você precisa especificar o resizePolicy, que controla como o Kubernetes redimensiona os recursos.
Seu Pod atual com resizePolicy:
apiVersion: v1
kind: Pod
metadata:
name: my-app
spec:
containers:
- name: app
image: myapp:1.0
resources:
requests:
memory: "256Mi"
cpu: "250m"
limits:
memory: "512Mi"
cpu: "500m"
resizePolicy:
- resourceName: cpu
restartPolicy: NotRequired
- resourceName: memory
restartPolicy: NotRequired
Entendendo o resizePolicy
O resizePolicy define como o Kubernetes behaves ao redimensionar:
NotRequired: o container não precisa ser reiniciado para aplicar a mudança (padrão para in-place resize)RestartContainer: o container será reiniciado para aplicar o redimensionamento
Para In-Place Pod Resize, use NotRequired — isso é o que permite o redimensionamento sem restart.
Atualizando recursos
Para aumentar para 512Mi de memória:
kubectl patch pod my-app --type='json' -p='[{"op": "replace", "path": "/spec/containers/0/resources/requests/memory", "value":"512Mi"}]'
Ou, mais simples, edite o YAML diretamente:
kubectl edit pod my-app
Altere os valores e salve. Kubernetes aplica a mudança imediatamente.
Com Deployments
Se estiver usando um Deployment (o normal), atualize o template:
kubectl set resources deployment my-app --requests=memory=512Mi --limits=memory=1Gi
Os pods existentes terão seus recursos atualizados sem reiniciar.
Limitações
Nem tudo é perfeito. Algumas restrições:
- CPU: geralmente não pode ser reduzida abaixo do que o container está usando naquele momento. Aumentar é sempre seguro.
- Memória: diminuir pode causar OOM kill se o container estiver próximo do novo limite. Teste em dev antes.
- Alguns runtimes: containerd e CRI-O suportam bem; docker (se ainda usado) pode ter limitações.
Boas práticas
- Monitore primeiro: use Prometheus ou similar para entender o padrão de uso real.
- Teste em dev: antes de alterar em produção, valide que a aplicação funciona com os novos limites.
- Aumente gradualmente: não saia de 256Mi para 2Gi de uma vez.
- Documente: deixe claro no seu IaC (Terraform, Helm) por que aqueles valores foram escolhidos.
Conclusão
In-Place Pod Resize tira a dor de cabeça do redimensionamento de recursos no Kubernetes. Sem restarts, sem downtime, sem surpresas — você simplesmente atualiza e segue.
Se seu cluster suporta In-Place Pod Resize, comece a usar hoje — lembre-se de configurar o resizePolicy adequadamente. É um pequeno detalhe que faz grande diferença em operações de produção.
Gostou do conteúdo?
- ✅ Inscreva-se na newsletter para receber mais dicas práticas sobre Go, Kubernetes e Cloud diretamente no seu e-mail!
- 🚀 Conheça a Imersão Golang e leve seus conhecimentos em Go para o próximo nív
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.