Ícone do site Tiago Temporin

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:

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:

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:

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?


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