Yaptığım K8s Pod otomatik temizleyicisi: 'kube-depod' (CEL tabanlı, PDB destekli)
(github.com/mrchypark)Merhaba, K8s kümesi işletirken CrashLoopBackOff durumuna düşen pod'lar, ImagePullBackOff durumundaki pod'lar ya da bir batch işi bittikten sonra Succeeded veya Failed olarak ortada kalan pod'lar yüzünden ortamın dağınık hale gelmesi sık görülür.
Bu pod'ların kaynak israfına yol açması ve izlemeyi zorlaştırması sorununu çözmek için, Rust tabanlı K8s operatörü kube-depod geliştirdim.
kube-depod basit bir TTL temizleyicisi değil. Odak noktası esneklik ve güvenlik.
🚀 Temel özellikler
1. Güçlü CEL politika motoru
Yalnızca "10 dakikayı geçmiş" pod'lar değil, CEL(Common Expression Language) ile çok daha ayrıntılı politikalar oluşturabilirsiniz.
# Örnek: yalnızca yeniden başlatma sayısı 5 veya daha fazla olan CrashLoopBackOff pod'larını sil
when:
type: "CEL"
expression: |
status.containerStatuses.exists(c,
has(c.state.waiting) &&
c.state.waiting.reason == 'CrashLoopBackOff' &&
c.restartCount >= 5
)
(age, status.phase gibi çeşitli değişkenleri destekler.)
2. Kazaları önleyen 'Opt-In' yaklaşımı
kube-depod, kümedeki tüm pod'ları izlemez. Yalnızca kullanıcının açıkça kube-depod/policy: "my-policy" gibi bir annotation eklediği pod'ları (Opt-In) temizlik hedefi olarak kabul eder. Böylece önemli pod'ların yanlışlıkla silinmesi en baştan engellenir.
3. Prodüksiyon ortamı için güvenlik önlemleri
- PDB desteği:
DeleteyerineEvictaksiyonunu destekleyerek Pod Disruption Budget(PDB) kurallarına uyar ve pod'ları güvenli şekilde kaldırır. - DryRun: Politikanın nasıl çalışacağını
dryRun: trueile güvenle test edebilirsiniz. - Hız sınırlama (Rate Limiting): Dakika başına silme sayısını sınırlayarak API sunucusunun aşırı yüklenmesini veya kümenin kararsızlaşmasını önler.
- Sistem namespace koruması:
kube-systemgibi kritik namespace'leri varsayılan olarak korur.
4. Yüksek performans ve güçlü gözlemlenebilirlik
- Rust ile yazılmıştır ve Distroless imaj kullandığı için hafif ve hızlıdır.
ArcSwap(kilitsiz politika önbelleği),DashMap(CEL derleme önbelleği) gibi yapılarla yüksek performans hedeflenmiştir.- Prometheus metrikleri ve CRD Status geri bildirimi (ör.
InvalidCEL) sayesinde çalışma durumunu kolayca debug edebilirsiniz.
Benzer araçlar çok olsa da, CEL'in esnekliği, PDB desteği ve Opt-In tasarımı gibi işletim güvenliğine odaklanan araçlar nadirdi.
Helm chart da hazır olduğu için kolayca kurulabilir.
K8s kümesini daha temiz ve verimli yönetmek isteyenler için faydalı olmasını umuyorum.
GitHub deposu: https://github.com/mrchypark/kube-depod
İlgi ve geri bildirim her zaman memnuniyetle karşılanır! Teşekkürler.
Henüz yorum yok.