In-Place Pod Resize — redimensionando sem restart

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

  1. Monitore primeiro: use Prometheus ou similar para entender o padrão de uso real.
  2. Teste em dev: antes de alterar em produção, valide que a aplicação funciona com os novos limites.
  3. Aumente gradualmente: não saia de 256Mi para 2Gi de uma vez.
  4. 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.

* indicates required

Deixe uma resposta