Kubernetes को systemd से बदलना (2024)
(blog.yaakov.online)- लेख के लेखक ने व्यक्तिगत सर्वर चलाते समय Kubernetes की जटिलता और resource consumption से निराश होकर, इसे systemd और Podman के संयोजन से बदलने का अनुभव साझा किया
- Kubernetes GitOps और automation के कारण आकर्षक लगता है, लेकिन छोटे environment में यह जरूरत से ज्यादा भारी system है
- Podman के auto-update फीचर और systemd service generation का उपयोग करके, Kubernetes के मुख्य फीचर्स को सरल तरीके से लागू किया जा सकता है
- systemctl और loginctl को मिलाकर user-level services के auto-start की भी व्याख्या की गई है, और इस बात पर जोर दिया गया है कि VPS का resource usage काफी कम हो गया
- हालांकि, यह भी बताया गया है कि Podman का systemd integration जल्द ही "Quadlet" नाम के नए तरीके से बदला जाएगा
परिचय: Kubernetes से पहली मुलाकात
- 2018 में Kubernetes के साथ प्रयोग करते हुए व्यक्तिगत NUC पर cluster बनाने की कोशिश का अनुभव बताया गया है
- Kubernetes जटिल है, लेकिन मूल रूप से यह निम्नलिखित reconciliation loop संरचना पर काम करता है:
- वर्तमान स्थिति की पहचान → वांछित स्थिति की गणना → अंतर की गणना → लागू करना
- cert-manager जैसे विभिन्न components का उपयोग करने वाली automation capabilities काफी प्रभावशाली थीं
Kubernetes की अत्यधिक resource मांग
- व्यक्तिगत सर्वर (NUC) पर Kubernetes लगातार CPU usage, fan noise, और heat generation का कारण बनता था
- Azure, MicroK8s, K3S जैसी विभिन्न distributions भी काफी resources खर्च करती थीं
- MicroK8s: 12% CPU usage (2vCPU VPS)
- K3S: 6% CPU usage (2vCPU Ampere A1)
GitOps automation का आकर्षण
- Flux जैसे tools से Git-आधारित deployment automation संभव था, जो बहुत सुविधाजनक था
- GitHub पर सिर्फ container image push करते ही server अपने-आप latest app deploy कर देता था
- लेकिन Kubernetes के बिना इस तरह की automation को लागू करना बहुत कठिन था
Podman और systemd का आगमन
- Podman, Docker का एक alternative tool है, और इसमें containers को systemd service में बदलने की सुविधा है
podman generate systemdके जरिए अपने-आप service file बनाई जा सकती हैio.containers.autoupdateटैग के जरिए दिन में एक बार image का automatic update किया जा सकता है- Fedora Magazine में बताए गए इस तरीके का संदर्भ लेकर Kubernetes के विकल्प वाला environment तैयार करने में सफलता मिली
जरूरी तीन components
-
systemctl --user enable mycontainer.service- login के समय container अपने-आप शुरू हो जाए, इसके लिए सेट करना
-
loginctl enable-linger- server boot होने पर user session सक्रिय रहे, इसके लिए सेट करना
-
Podman का auto-update फीचर
- इन तीन चीजों से Kubernetes द्वारा दिए जाने वाले 99% फीचर्स को ज्यादा सरल और हल्के तरीके से बदला जा सका
migration का परिणाम
- पुराने VPS से नए VPS पर पूरी services migrate की गईं
- resources आधे रह गए, लेकिन performance बेहतर हो गई, service density बढ़ी और cost भी कम हुई
आगे की चुनौती: Quadlet
- दुर्भाग्य से Podman का systemd integration जल्द ही deprecated होने वाला है
- इसके बजाय Quadlet files नाम की नई definition method पर जाया जाएगा
- अंत में यह जोड़ते हुए लेख समाप्त होता है कि नई तकनीक सीखने के लिए तैयार रहना होगा
1 टिप्पणियां
Hacker News राय
अगर Kubernetes को सिर्फ container image चलाने और अपडेट करने के लिए देखा जाए, तो यह ज़रूरत से ज़्यादा हो सकता है
Docker का उपयोग करके कुछ छोटे websites चलाने की कोशिश की, लेकिन image update और testing मुश्किल थे
Kubernetes cluster मैनेज करने में कोई दिक्कत नहीं है, लेकिन hobby projects में resource requirements की वजह से इसका उपयोग कठिन है
Systemd कई समस्याएँ हल करता है और इसे नज़रअंदाज़ नहीं करना चाहिए
systemctl editसे config files संपादित की जा सकती हैंPodman-systemd का उपयोग करके homelab चलाया जाता है, और Kubernetes के नए variants देखने पर भी अतिरिक्त झंझट नहीं होती
Quadlet का उपयोग करके systemd के अंदर containers मैनेज करना अगला कदम है
Skate बनाकर multi-host और Kubernetes manifest को support करने वाला system बनाया गया
Docker compose commands और Caddy का उपयोग करके certificates अपने-आप हासिल किए जा सकते हैं
docker compose up -d --pull alwayscommand से इसे सरलता से सेट किया जा सकता हैSystemd अब immutable workflows के लिए आधिकारिक रूप से समर्थित OS distribution ParticleOS भी देता है
मानना है कि single server पर deploy करना जटिल नहीं होना चाहिए, और इसी लिए Harbormaster नाम का tool लिखा गया