- Kubernetes environment में निष्क्रिय containers की resource बर्बादी को कम करने के लिए विकसित किया गया runtime tool
- एक निश्चित समय तक TCP connection न होने पर container को अपने-आप disk पर checkpoint के रूप में save करता है
- containerd shim के रूप में काम करता है, container की memory state को save करके उसे बंद करता है, और बाद में पहली connection पर कुछ milliseconds के भीतर restore कर देता है
- restore के समय application की पूरी state ज्यों-की-त्यों वापस आ जाती है, इसलिए user के नज़रिए से latency लगभग नहीं के बराबर रहती है
- eBPF-आधारित redirection का उपयोग करके TCP packets को proxy तक पहुंचाता है, और restore पूरा होने के बाद direct connection पर switch कर देता है
- CRIU - Checkpoint and Restore in Userspace का उपयोग checkpoint और restore के लिए करता है
- activation sequence के जरिए पहली request पर अपने-आप restore होने वाला flow प्रदान करता है
- हाल की TCP activity को track करके बार-बार होने वाले suspend-restore को रोकने के लिए intelligent waiting logic शामिल है
- Kubernetes पर container को लगातार चल रहा मान लिया जाता है, इसलिए runtime restart को रोका जाता है
kubectl exec command के समय अपने-आप restore हो जाता है, इसलिए सामान्य container की तरह access किया जा सकता है
- हर shim process metrics collect करती है, और node स्तर का zeropod-manager इन्हें इकट्ठा करके HTTP endpoint के रूप में expose करता है
- अगर cluster support करता हो तो resource requests को dynamically adjust करने वाली in-place scaling सुविधा देता है
- node draining के समय scale down हुए Pod को दूसरे node पर migrate किया जा सकता है
- experimental feature के रूप में live migration भी support करता है
- low-traffic services, development·staging environments, Heroku-जैसे platform के low-cost tier, static sites के backend setup आदि के लिए उपयुक्त
- ज़्यादातर programs बिना अलग modification के काम करते हैं, और containerd logs के जरिए CRIU errors का analysis किया जा सकता है
4 टिप्पणियां
inetd का पुनर्आविष्कार? (मज़ाक)
पिछले साल AWS re:Invent में देखा गया Platform 9 का Elastic Machine Pool उस समय सिर्फ B2B के लिए होने की वजह से बस हल्का-सा आज़माने के लिहाज़ से थोड़ा भारी लग रहा था, लेकिन यह इंस्टॉल करने में भी आसान है और इसका काम करने का तरीका भी सहज है, इसलिए अच्छा लगा। मैं dev environment में user experience को नुकसान पहुँचाए बिना resources को आक्रामक तरीके से allocate करना चाहता था; PoC करके अगर ठीक लगा तो इसे अपनाने लायक लगता है।
सोच रहा था कि यह KNative से कैसे अलग है, तो लगता है नीचे की ये दो पंक्तियाँ ही मुख्य बिंदु हैं।
containerd shimके रूप में काम करता है, कंटेनर की memory state को सेव करके उसे बंद कर देता है, और बाद में पहली connection पर कुछ मिलीसेकंड के भीतर उसे restore कर देता हैlambda. . .. ?