2 पॉइंट द्वारा GN⁺ 2025-05-06 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • लेख के लेखक ने व्यक्तिगत सर्वर चलाते समय 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

  1. systemctl --user enable mycontainer.service

    • login के समय container अपने-आप शुरू हो जाए, इसके लिए सेट करना
  2. loginctl enable-linger

    • server boot होने पर user session सक्रिय रहे, इसके लिए सेट करना
  3. 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 टिप्पणियां

 
GN⁺ 2025-05-06
Hacker News राय
  • अगर Kubernetes को सिर्फ container image चलाने और अपडेट करने के लिए देखा जाए, तो यह ज़रूरत से ज़्यादा हो सकता है

    • Kubernetes वे संसाधन देता है जिनसे containers state share कर सकें, एक-दूसरे से जुड़ सकें, और config या secrets तक पहुँच सकें
    • CPU और memory की लागत containers को मैनेज करने और ज़रूरी resources उपलब्ध कराने से आती है
    • distributed systems में हर system हमेशा मनचाहे तरीके से काम नहीं करता, इसलिए admin लगातार इच्छित state हासिल करने की कोशिश करता है
  • Docker का उपयोग करके कुछ छोटे websites चलाने की कोशिश की, लेकिन image update और testing मुश्किल थे

    • Debian में systemd unit बनाने वाली script से सब कुछ बदल दिया और service बदलने पर restart किया
    • test VM का उपयोग करके changes को deployment host पर rsync किया और deployment script चलाई
    • पूरा system 2GB VPS पर चलता है, और अगर Wordpress आधिकारिक रूप से SQLite को support करे तो इसे 1GB तक घटाया जा सकता है
    • support requirements को न्यूनतम रखने के लिए Mariadb का उपयोग किया
  • Kubernetes cluster मैनेज करने में कोई दिक्कत नहीं है, लेकिन hobby projects में resource requirements की वजह से इसका उपयोग कठिन है

    • Kubernetes $10/माह वाले VPS पर चलाने के लिए resource-intensive है
    • manually docker compose commands का उपयोग करते हैं, और Ingress की जगह Traefik की container discovery feature का उपयोग करते हैं
    • CronJobs की जगह छोटे scripts लिखकर crontab मैनेज करते हैं
    • Kubernetes जिन समस्याओं को पहले ही हल कर चुका है, उन्हें कम प्रभावी तरीके से हल करने की कोशिश कर रहे हैं
    • ऐसा lightweight alternative चाहते हैं जो सस्ते VPS instances पर अच्छी तरह चले और Kubernetes-compatible API दे
  • Systemd कई समस्याएँ हल करता है और इसे नज़रअंदाज़ नहीं करना चाहिए

    • यह machinectl, nspawn, vmspawn, importctl जैसी कई सुविधाएँ देता है
    • homed/homectl user management को बढ़ाते हैं, mounts drives को auto-mount करते हैं, boot service start/stop को नियंत्रित करता है, और timers cron का विकल्प हैं
    • service units कामों को नियंत्रित करते हैं, और systemctl edit से config files संपादित की जा सकती हैं
  • Podman-systemd का उपयोग करके homelab चलाया जाता है, और Kubernetes के नए variants देखने पर भी अतिरिक्त झंझट नहीं होती

    • Ansible playbooks का उपयोग करके images पहले से pull की जाती हैं और unit files सही जगह पर रखी जाती हैं
    • Voron 3D printer stack को podman-systemd पर चला रहे हैं, और mkosi व systemd-sysupdate पर जाने पर विचार कर रहे हैं
    • Docker-compose files को systemd units में बदलना एक अतिरिक्त झंझट है
    • Podman user/permission settings की जटिलता को कम करता है
  • Quadlet का उपयोग करके systemd के अंदर containers मैनेज करना अगला कदम है

    • अधिक जानकारी Red Hat ब्लॉग में देखी जा सकती है
  • Skate बनाकर multi-host और Kubernetes manifest को support करने वाला system बनाया गया

    • अंदरूनी तौर पर यह podman और systemd का उपयोग करता है
  • Docker compose commands और Caddy का उपयोग करके certificates अपने-आप हासिल किए जा सकते हैं

    • docker compose up -d --pull always command से इसे सरलता से सेट किया जा सकता है
    • CI setup scp और ssh का उपयोग करके बनाया गया है
    • यह सरल है और development machine पर भी काम करता है
  • Systemd अब immutable workflows के लिए आधिकारिक रूप से समर्थित OS distribution ParticleOS भी देता है

  • मानना है कि single server पर deploy करना जटिल नहीं होना चाहिए, और इसी लिए Harbormaster नाम का tool लिखा गया

    • YAML file का उपयोग करके repositories खोजी जाती हैं और Docker Compose files चलाई जाती हैं
    • सारी state एक ही directory में रखी जाती है, जिससे backup आसान हो जाता है
    • यह single server के लिए ज़रूरी सबसे आसान container orchestration tool है