Este é o 'kube-depod', um limpador automático de Pods para K8s que eu criei. (baseado em CEL, com suporte a PDB)
(github.com/mrchypark)Olá, ao operar um cluster K8s, é comum que ele fique bagunçado por causa de Pods presos em CrashLoopBackOff, Pods no estado ImagePullBackOff ou Pods abandonados em Succeeded ou Failed após o término de um batch.
Para resolver o problema desses Pods desperdiçarem recursos e atrapalharem o monitoramento, desenvolvi o operador de K8s em Rust kube-depod.
O kube-depod não é apenas um limpador de TTL simples. O foco dele está em flexibilidade e segurança.
🚀 Principais recursos
1. Poderoso mecanismo de políticas com CEL
Em vez de simplesmente apagar Pods com "mais de 10 minutos", é possível criar políticas muito mais refinadas com CEL (Common Expression Language).
# Exemplo: remover apenas Pods em CrashLoopBackOff com 5 ou mais reinicializações
when:
type: "CEL"
expression: |
status.containerStatuses.exists(c,
has(c.state.waiting) &&
c.state.waiting.reason == 'CrashLoopBackOff' &&
c.restartCount >= 5
)
(Suporta várias variáveis, como age, status.phase etc.)
2. Modelo "Opt-In" para evitar incidentes
O kube-depod não monitora todos os Pods do cluster. Ele considera como alvo de limpeza apenas os Pods aos quais o usuário adicionou explicitamente uma annotation como kube-depod/policy: "my-policy" (Opt-In). Isso bloqueia na origem acidentes de apagar Pods importantes por engano.
3. Mecanismos de segurança para produção
- Suporte a PDB: oferece a ação
Evictem vez deDelete, removendo Pods com segurança e respeitando o Pod Disruption Budget (PDB). - DryRun: é possível testar com segurança como a política vai funcionar usando
dryRun: true. - Limitação de taxa (Rate Limiting): limita a quantidade de exclusões por minuto para evitar sobrecarga no servidor de API ou instabilidade no cluster.
- Proteção de namespaces do sistema: namespaces críticos como
kube-systemsão protegidos por padrão.
4. Alto desempenho e excelente observabilidade
- Escrito em Rust e usando imagem Distroless, é leve e rápido.
- Busca alto desempenho com recursos como
ArcSwap(cache de políticas sem lock) eDashMap(cache de compilação de CEL). - Facilita o debug do estado operacional por meio de métricas do Prometheus e feedback de status do CRD (ex.:
InvalidCEL).
Existem muitas ferramentas parecidas, mas eram raras as que focavam na segurança operacional com a flexibilidade do CEL, suporte a PDB e design Opt-In.
Também há um chart Helm pronto, então a instalação é fácil.
Espero que seja útil para quem quer gerenciar clusters K8s de forma mais limpa e eficiente.
Repositório no GitHub: https://github.com/mrchypark/kube-depod
Interesse e feedback são sempre bem-vindos! Obrigado.
Ainda não há comentários.