DevOps · 13/10/2026
Automatizando a remoção de PVCs órfãos com a condição Unused no Kubernetes 1.37
A nova condição Unused traz visibilidade nativa sobre volumes não utilizados, permitindo que equipes de DevOps criem rotinas de limpeza automática e reduzam custos de armazenamento em clusters grandes.
O que está acontecendo
Kubernetes 1.37 introduz a condição Unused nos objetos PersistentVolumeClaim. O controlador de proteção de PVC monitora pods e, sempre que nenhum pod em estado não‑terminal referencia o volume, define a condição como True. A informação inclui lastTransitionTime, permitindo consultas sobre o tempo de inatividade. A feature já vem habilitada por padrão, eliminando a necessidade de ativar feature gates.
Insights e Riscos
- Redução de custos operacionais: Identificar e excluir PVCs inativos evita consumo de armazenamento que pode representar milhares de dólares em ambientes cloud.
- Simplificação de monitoramento: Não é mais preciso correlacionar pods, PVs e PVCs via scripts externos; a condição está disponível via API padrão.
- Risco de exclusão precoce: Pods em estado Pending ainda contam como uso. Se um deployment falhar ao agendar, o PVC permanecerá marcado como usado, atrasando a limpeza.
- Impacto em workloads batch: Jobs com
restartPolicy: Neverliberam o PVC assim que terminam, mas falhas inesperadas podem deixar o PVC em estado Failed e ainda ser considerado usado até que o pod seja removido. - Escalabilidade do controlador: Em clusters com dezenas de milhares de PVCs, o controlador de proteção adiciona carga extra de watch sobre pods; é preciso dimensionar adequadamente o
kube-controller-manager.
O que muda na prática
Engenheiro de Segurança
- Pode auditar o uso de armazenamento sem expor dados sensíveis, já que a condição é pública no objeto PVC.
- Implementa políticas de retenção baseadas em
lastTransitionTime, garantindo que volumes contendo dados críticos passem por revisão antes da exclusão.
Arquiteto
- Redefine o design de provisionamento de storage, adotando políticas de garbage collection automáticas ao invés de processos manuais.
- Avalia a necessidade de ajustar limites de
watchno API server para suportar o volume de eventos gerado pelo controlador.
DevOps / MLOps
- Cria pipelines de limpeza periódica usando
kubectlou client‑go:kubectl get pvc -A -o json | jq '...select(.status.conditions[] | select(.type=="Unused" and .status=="True" and (.lastTransitionTime | fromdateiso8601) < (now - 2592000)))'. - Integra a condição Unused em dashboards de observabilidade (Prometheus exporters) para alertas de volume ocioso.
- Automatiza a remoção segura com jobs que verificam backups antes de chamar
kubectl delete pvc.
Conclusão direta
A condição Unused transforma a gestão de armazenamento em Kubernetes de um processo manual e propenso a erros para uma operação observável e automatizável. Ao alinhar políticas de retenção, controle de custos e compliance, equipes de DevOps podem liberar recursos de forma segura e escalar clusters sem acumular lixo digital. Você já incorporou a verificação de PVCs órfãos nos seus pipelines de limpeza?
Fontes
[Fonte: Kubernetes Blog] Kubernetes v1.37 PVC Last Used Time