यह मेरा बनाया हुआ K8s Pod auto-cleaner 'kube-depod' है। (CEL-आधारित, PDB सपोर्ट)
(github.com/mrchypark)नमस्ते, K8s क्लस्टर चलाते समय अक्सर CrashLoopBackOff में फँसे Pods, ImagePullBackOff स्टेट वाले Pods, या बैच पूरा होने के बाद Succeeded या Failed स्थिति में छोड़ दिए गए Pods की वजह से अव्यवस्था हो जाती है.
ऐसे Pods संसाधनों की बर्बादी करते हैं और monitoring में बाधा डालते हैं. इस समस्या को हल करने के लिए, मैंने Rust-आधारित K8s operator 'kube-depod' विकसित किया है.
kube-depod कोई साधारण TTL cleaner नहीं है. इसका फोकस लचीलापन और सुरक्षा पर है.
🚀 मुख्य फीचर्स
1. शक्तिशाली CEL policy engine
यह सिर्फ "10 मिनट पुराने" Pods को हटाने वाला टूल नहीं है; CEL(Common Expression Language) के जरिए आप कहीं अधिक सूक्ष्म policies बना सकते हैं.
# उदाहरण: केवल 5 या उससे अधिक restart वाले CrashLoopBackOff Pods हटाएँ
when:
type: "CEL"
expression: |
status.containerStatuses.exists(c,
has(c.state.waiting) &&
c.state.waiting.reason == 'CrashLoopBackOff' &&
c.restartCount >= 5
)
(age, status.phase आदि जैसे कई variables समर्थित हैं.)
2. दुर्घटनाओं को रोकने वाला 'Opt-In' तरीका
kube-depod क्लस्टर के सभी Pods की निगरानी नहीं करता. यह केवल उन्हीं Pods को cleanup target मानता है जिनमें उपयोगकर्ता ने स्पष्ट रूप से kube-depod/policy: "my-policy" जैसी annotation जोड़ी हो (Opt-In). इससे गलती से महत्वपूर्ण Pods हट जाने की दुर्घटनाओं को मूल रूप से रोका जा सकता है.
3. production के लिए सुरक्षा उपाय
- PDB सपोर्ट:
Deleteकी जगहEvictaction का समर्थन करता है, जिससे Pod Disruption Budget(PDB) का सम्मान करते हुए Pods को सुरक्षित रूप से हटाया जा सके. - DryRun:
dryRun: trueके साथ policy कैसे काम करेगी, इसे सुरक्षित रूप से टेस्ट किया जा सकता है. - Rate Limiting: प्रति मिनट deletion count सीमित करके API server पर ओवरलोड या क्लस्टर अस्थिरता को रोका जाता है.
- system namespace protection:
kube-systemजैसे महत्वपूर्ण namespaces डिफ़ॉल्ट रूप से सुरक्षित रहते हैं.
4. उच्च प्रदर्शन और बेहतरीन observability
- Rust में लिखा गया है और Distroless image का उपयोग करता है, इसलिए हल्का और तेज़ है.
ArcSwap(lock-free policy cache),DashMap(CEL compile cache) आदि का उपयोग करके उच्च प्रदर्शन हासिल करने की कोशिश की गई है.- Prometheus metrics और CRD Status feedback (जैसे
InvalidCEL) के जरिए ऑपरेशन की स्थिति को आसानी से debug किया जा सकता है.
इस तरह के कई टूल मौजूद हैं, लेकिन CEL की लचीलेपन, PDB सपोर्ट, और Opt-In डिज़ाइन जैसी operational safety पर केंद्रित टूल कम ही थे.
Helm chart भी तैयार है, इसलिए इसे आसानी से install किया जा सकता है.
जो लोग अपने K8s क्लस्टर को अधिक साफ़ और कुशल तरीके से मैनेज करना चाहते हैं, उनके लिए यह उपयोगी साबित हो सके, यही आशा है.
GitHub रिपॉज़िटरी: https://github.com/mrchypark/kube-depod
रुचि और फ़ीडबैक हमेशा स्वागत योग्य हैं! धन्यवाद.
अभी कोई टिप्पणी नहीं है.