5 pontos por mrchypark 2025-11-18 | Ainda não há comentários. | Compartilhar no WhatsApp

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 Evict em vez de Delete, 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-system sã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) e DashMap (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.

Ainda não há comentários.