Kekuatan Kubernetes di Lingkungan Minimalis
Kubernetes (K8S) telah menjadi standar de facto untuk orkestrasi container, tetapi kluster K8S tradisional seringkali menuntut resource yang besar, terutama pada komponen Control Plane (seperti etcd dan API Server).
K3S, dikembangkan oleh Rancher Labs, mengatasi masalah ini dengan menciptakan distribusi yang “setengah ukuran” dari K8S. K3S mencapai efisiensi luar biasa ini dengan:
Mengganti etcd: Secara default, K3S menggunakan basis data SQLite yang jauh lebih ringan dan cepat, alih-alih etcd yang high-availability dan resource-intensive.
Menghapus Komponen Warisan: Menghilangkan fitur-fitur yang tidak penting di lingkungan cloud atau edge (misalnya, beberapa plugin cloud provider lama).
Pengemasan yang Ringkas: Seluruh komponen server dan agent dikemas menjadi satu binary tunggal.
Panduan ini akan memandu Anda membangun kluster K3S yang terdiri dari satu Master (yang menjalankan Control Plane) dan dua Node Agent (yang menjalankan workload aplikasi Anda), menggunakan Ubuntu 24.04 LTS sebagai sistem operasi dasar.
Pilar 1: Persiapan Server Fisik/Virtual
Kluster K3S ini membutuhkan total tiga server (VM atau fisik) yang saling terhubung dalam jaringan yang sama.
1.1 Persyaratan Hardware dan Software
Pastikan server Anda memiliki spesifikasi minimum ini:
| Server | Peran K3S | OS | Core CPU | RAM (Minimum) | Alokasi Disk |
| Server 1 | Master (Server) | Ubuntu 24.04 | 2 | 2 GB | 20 GB (SSD/NVMe) |
| Server 2 | Node Agent 1 | Ubuntu 24.04 | 1 | 1 GB | 10 GB (SSD/NVMe) |
| Server 3 | Node Agent 2 | Ubuntu 24.04 | 1 | 1 GB | 10 GB (SSD/NVMe) |
1.2 Konfigurasi Dasar dan Hostname
Lakukan langkah-langkah berikut di SEMUA SERVER (Master dan kedua Node Agent).
Pembaruan Sistem:
Bashsudo apt update && sudo apt upgrade -yPenetapan Hostname: Tetapkan hostname yang berbeda dan jelas untuk memudahkan manajemen kluster.
Bash# Di Server 1 (Master) sudo hostnamectl set-hostname k3s-master # Di Server 2 (Node 1) sudo hostnamectl set-hostname k3s-node-01 # Di Server 3 (Node 2) sudo hostnamectl set-hostname k3s-node-02Menonaktifkan SWAP: Kubernetes sangat rentan terhadap swap space yang aktif. Matikan secara permanen.
Bash# Di SEMUA SERVER sudo swapoff -a # Hapus entri swap dari fstab agar perubahan permanen setelah reboot sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstabKonfigurasi Firewall (UFW): K3S membutuhkan port terbuka tertentu untuk komunikasi Control Plane dan networking antar-Node (Flannel CNI).
Bash# Di SEMUA SERVER # Standard: SSH sudo ufw allow 22/tcp # Port K3S Master API (Hanya dibutuhkan di Master, tetapi diizinkan di semua untuk kemudahan) sudo ufw allow 6443/tcp # Port Kubelet (Node Agent) sudo ufw allow 10250/tcp # Flannel VXLAN/CNI (Node ke Node) sudo ufw allow 8472/udp # Port NodePort Range (Untuk Service yang diekspos) sudo ufw allow 30000:32767/tcp sudo ufw enable sudo ufw status
Pilar 2: Instalasi dan Konfigurasi Master K3S
Instalasi Master hanya dilakukan di Server 1 (k3s-master).
2.1 Langkah 1: Instalasi K3S Master
Kita akan menggunakan skrip instalasi resmi, yang secara otomatis menginstal semua komponen yang diperlukan (k3s-server, containerd, CNI, dan kubectl).
Kami menyertakan dua opsi penting:
--write-kubeconfig-mode "0644": Memastikan user non-root dapat mengakseskubectl.--node-taint Critical:NoSchedule: Mencegah workload aplikasi umum (pod biasa) berjalan di Master, menjaganya agar tetap berdedikasi pada tugas Control Plane.
# Di Server 1 (k3s-master)
# Ganti [MASTER_IP] dengan IP Address Server 1
MASTER_IP="192.168.1.10"
curl -sfL https://get.k3s.io | sh -s - \
--write-kubeconfig-mode "0644" \
--node-taint Critical:NoSchedule \
--advertise-address $MASTER_IP
2.2 Langkah 2: Verifikasi Master dan Ambil Token
Setelah instalasi selesai, verifikasi bahwa layanan K3S berjalan dan ambil token rahasia yang akan digunakan oleh Node Agent untuk bergabung.
Periksa Status Layanan:
Bash# Di Server 1 (k3s-master) sudo systemctl status k3sAmbil Node Token:
Bash# Di Server 1 (k3s-master) NODE_TOKEN=$(sudo cat /var/lib/rancher/k3s/server/node-token) echo "Simpan Token ini: $NODE_TOKEN"Simpan token ini dengan aman; ini adalah kunci bagi Node Agent untuk otentikasi ke Master.
Verifikasi Node (Awal):
Bash# Di Server 1 (k3s-master) sudo /usr/local/bin/kubectl get nodesOutput yang diharapkan hanya menampilkan
k3s-masterdengan statusReady.
Pilar 3: Menambahkan Node Agent ke Kluster
Sekarang kita akan menginstal Node Agent di Server 2 dan Server 3, menggunakan token yang didapatkan dari Master.
3.1 Langkah 3: Instalasi Node Agent 1 dan 2
Perintah instalasi K3S untuk Node Agent membutuhkan dua argumen penting: alamat API Master (--server) dan Token rahasia kluster (--token).
Ganti
[MASTER_IP]dan[NODE_TOKEN]dengan nilai yang sebenarnya.
Instalasi Node Agent:
Bash# Di Server 2 (k3s-node-01) dan Server 3 (k3s-node-02) MASTER_IP="192.168.1.10" # Ganti dengan IP Master yang sebenarnya NODE_TOKEN="[TOKEN_YANG_ANDA_SIMPAN]" # Ganti dengan token yang sebenarnya curl -sfL https://get.k3s.io | sh -s - agent \ --server https://$MASTER_IP:6443 \ --token $NODE_TOKENKeterangan: Skrip akan menginstal
k3s-agentdan secara otomatis memulai koneksi WebSocket ke Master API, menyelesaikan proses bergabung.Verifikasi Layanan Node Agent:
Bash# Di Server 2 dan Server 3 sudo systemctl status k3s-agent
3.2 Langkah 4: Verifikasi Kluster Penuh
Kembali ke Master untuk memastikan ketiga server telah bergabung dengan status Ready.
Cek Status Kluster:
Bash# Di Server 1 (k3s-master) sudo /usr/local/bin/kubectl get nodes -o wideOutput yang Diharapkan:
PlaintextNAME STATUS ROLES AGE VERSION INTERNAL-IP OS-IMAGE k3s-master Ready control-plane,master 15m v1.28.5+k3s1 192.168.1.10 Ubuntu 24.04 LTS k3s-node-01 Ready <none> 5m v1.28.5+k3s1 192.168.1.11 Ubuntu 24.04 LTS k3s-node-02 Ready <none> 4m v1.28.5+k3s1 192.168.1.12 Ubuntu 24.04 LTS
Jika Anda melihat ketiga server dengan status
Ready, kluster K3S Anda telah berhasil dibangun.
Pilar 4: Pengujian dan Manajemen Kluster
Setelah kluster siap, langkah terakhir adalah menguji fungsionalitasnya dan menyiapkan akses manajemen yang lebih nyaman.
4.1 Langkah 5: Pengujian Deployment Pertama
Uji apakah pod dapat di-schedule ke Node Agent (dan tidak ke Master) dan apakah networking (Flannel CNI) berfungsi.
Deployment Nginx:
Bash# Di Server 1 (k3s-master) sudo /usr/local/bin/kubectl create deployment nginx-test --image=nginxPeriksa Lokasi Pod:
Bashsudo /usr/local/bin/kubectl get pods -l app=nginx-test -o wideVerifikasi: Pod akan di-schedule di
k3s-node-01atauk3s-node-02, bukan dik3s-master, yang memvalidasi node taint berhasil.Expose Service (NodePort): Ekspos deployment ini ke dunia luar melalui port yang dialokasikan secara dinamis (NodePort).
Bashsudo /usr/local/bin/kubectl expose deployment nginx-test --type=NodePort --port=80 # Ambil Port yang dialokasikan sudo /usr/local/bin/kubectl get service nginx-test # Output akan menunjukkan port: 80:[PORT_ALOKASI]/TCP (misalnya, 31111)Akses Uji Coba: Buka browser dan akses port yang dialokasikan pada IP Node Agent mana pun. URL Uji Coba:
http://[IP_k3s-node-01]:[PORT_ALOKASI]Jika Anda melihat halaman Welcome to nginx!, berarti kluster dan networking berfungsi penuh.
4.2 Langkah 6: Mengelola Kluster dari Lokal (Opsional, tetapi Direkomendasikan)
Mengelola kluster melalui SSH ke Master setiap saat tidaklah efisien. Sebaiknya, Anda mengonfigurasi kubectl di desktop lokal Anda.
Ambil File
kubeconfig:Bash# Di Server 1 (k3s-master) sudo cat /etc/rancher/k3s/k3s.yamlModifikasi dan Simpan Lokal:
Salin seluruh konten file YAML tersebut.
Ganti
127.0.0.1yang ada di barisserver: https://127.0.0.1:6443menjadi IP Address Master yang sebenarnya (misalnya,192.168.1.10).Di desktop lokal Anda, simpan konten yang sudah dimodifikasi ini di direktori
~/.kube/dengan nama fileconfig.Pastikan Anda sudah menginstal
kubectldi desktop Anda.
Uji Akses Lokal:
Bash# Di Desktop Lokal Anda kubectl get nodesAkses kluster Anda sekarang tersedia dari desktop Anda.
Kesimpulan: Kluster K3S Anda Telah Beroperasi
Dengan mengikuti panduan ini, Anda telah berhasil membangun kluster Kubernetes yang stabil dan ringan dengan K3S (1 Master dan 2 Node Agent). Arsitektur yang dipilih, termasuk node taint pada Master, memastikan Control Plane beroperasi secara optimal sementara Node Agent siap menerima workload aplikasi.
Kluster K3S ini adalah fondasi yang ideal untuk mempelajari, testing, atau bahkan menjalankan layanan produksi berskala kecil hingga menengah dengan biaya resource yang minimal.
Perintah Kunci untuk Manajemen Kluster
Gunakan perintah-perintah ini untuk maintenance harian kluster K3S Anda:
# Perintah Kunci: Melihat Taint Node (Di Master)
sudo /usr/local/bin/kubectl describe node k3s-master | grep Taints
# Perintah Kunci: Restart Master Service (Di Master)
sudo systemctl restart k3s
# Perintah Kunci: Restart Node Agent Service (Di Node Agent)
sudo systemctl restart k3s-agent
# Perintah Kunci: Melihat Log K3S Master
sudo journalctl -u k3s -f
# Perintah Kunci: Menghapus Instalasi K3S secara Total (Gunakan dengan sangat hati-hati!)
sudo /usr/local/bin/k3s-uninstall.sh

