Mengganti Kubernetes dengan systemd (2024)
(blog.yaakov.online)- Penulis berbagi pengalaman frustrasi terhadap kompleksitas dan konsumsi resource Kubernetes dalam mengelola server pribadi, lalu menggantinya dengan kombinasi systemd dan Podman
- Kubernetes memang menarik berkat GitOps dan otomatisasi, tetapi di lingkungan kecil sistem ini terasa terlalu berat
- Dengan memanfaatkan fitur pembaruan otomatis Podman dan pembuatan layanan systemd, fungsi inti Kubernetes dapat diimplementasikan dengan sederhana
- Artikel ini juga menjelaskan menjalankan layanan level pengguna secara otomatis dengan menggabungkan
systemctldanloginctl, serta menekankan bahwa konsumsi resource VPS berkurang drastis - Namun, integrasi systemd di Podman disebut akan segera digantikan oleh pendekatan baru bernama "Quadlet"
Pendahuluan: Pertemuan pertama dengan Kubernetes
- Penulis memperkenalkan pengalamannya saat bereksperimen dengan Kubernetes pada 2018 dan mencoba membangun cluster di NUC pribadi
- Kubernetes memang kompleks, tetapi pada dasarnya bekerja dengan struktur loop berulang seperti berikut:
- memahami kondisi saat ini → menghitung kondisi yang diinginkan → menghitung perbedaan → menerapkan
- Fitur otomatisasi dengan berbagai komponen seperti cert-manager terasa sangat mengesankan
Tuntutan resource Kubernetes yang berlebihan
- Di server pribadi (NUC), Kubernetes menyebabkan penggunaan CPU terus-menerus, suara kipas, dan panas berlebih
- Berbagai distribusi seperti Azure, MicroK8s, dan K3S juga mengonsumsi resource yang cukup besar
- MicroK8s: penggunaan CPU 12% (VPS 2vCPU)
- K3S: penggunaan CPU 6% (Ampere A1 2vCPU)
Godaan otomatisasi GitOps
- Dengan alat seperti Flux, otomatisasi deployment berbasis Git menjadi sangat mudah
- Cukup push image container ke GitHub, lalu server akan otomatis men-deploy aplikasi terbaru
- Namun, tanpa Kubernetes, mewujudkan otomatisasi seperti ini sangat sulit
Munculnya Podman dan systemd
- Podman adalah alat pengganti Docker dan memiliki fitur mengubah container menjadi layanan systemd
- Melalui
podman generate systemd, file service dapat dibuat secara otomatis - Dengan tag
io.containers.autoupdate, pembaruan image otomatis sekali sehari dapat dilakukan - Dengan merujuk metode ini dari Fedora Magazine, penulis berhasil membangun lingkungan pengganti Kubernetes
Tiga komponen yang dibutuhkan
-
systemctl --user enable mycontainer.service- Mengatur agar container berjalan otomatis saat login
-
loginctl enable-linger- Mengatur agar sesi pengguna aktif saat server melakukan boot
-
Fitur auto-update Podman
- Dengan tiga hal ini, 99% fungsi yang disediakan Kubernetes bisa digantikan dengan cara yang lebih sederhana dan ringan
Hasil migrasi
- Seluruh layanan dimigrasikan dari VPS lama ke VPS baru
- Resource berkurang setengah, tetapi performa justru meningkat, kepadatan layanan bertambah, dan biaya pun turun
Tantangan berikutnya: Quadlet
- Sayangnya, integrasi systemd di Podman akan segera dihentikan
- Sebagai gantinya, definisi baru bernama file Quadlet akan digunakan
- Artikel ditutup dengan catatan bahwa kita perlu bersiap mempelajari teknologi baru ini
1 komentar
Komentar Hacker News
Jika Kubernetes hanya dipandang sebagai alat untuk menjalankan dan memperbarui image container, itu bisa jadi penggunaan yang berlebihan
Pernah mencoba menjalankan beberapa situs web kecil dengan Docker, tetapi pembaruan image dan pengujiannya sulit
rsyncperubahan ke host deployment dan menjalankan skrip deploymentTidak ada masalah dalam mengelola klaster Kubernetes, tetapi untuk proyek hobi sulit digunakan karena kebutuhan resource
Systemd menyelesaikan banyak masalah dan tidak boleh diabaikan
systemctl editMenjalankan homelab dengan podman-systemd, dan setiap kali meneliti varian Kubernetes baru tidak ada kerepotan tambahan
Langkah berikutnya adalah mengelola container di dalam systemd dengan Quadlet
Membuat Skate untuk membangun sistem yang mendukung multi-host dan manifest Kubernetes
Dimungkinkan menggunakan perintah Docker compose dan Caddy untuk mendapatkan sertifikat secara otomatis
docker compose up -d --pull alwaysSystemd kini juga menyediakan ParticleOS, distro OS resmi untuk workflow immutable
Berpendapat bahwa deployment ke satu server seharusnya tidak rumit, lalu menulis alat bernama Harbormaster