---
title: "Cara Membuat Cluster Kubernetes Ringan dengan K3s"
description: "Langkah memasang K3s di satu atau beberapa VPS, menggabungkan worker, deploy aplikasi contoh, membukanya lewat ingress Traefik, dan memahami batasnya."
url: "https://nivelva.com/insight/cluster-kubernetes-k3s"
category: "Server \u0026 Infrastruktur"
tags: ["k3s","kubernetes","cluster","traefik","vps","devops"]
author: "Theresia Candiawan"
published: "2026-11-06T16:10:00+07:00"
updated: "2026-11-06T16:10:00+07:00"
language: "id"
publisher: "Nivelva (https://nivelva.com)"
---

# Cara Membuat Cluster Kubernetes Ringan dengan K3s

> **Jawaban singkat:** Pasang server K3s dengan satu perintah dari get.k3s.io, ambil token di /var/lib/rancher/k3s/server/node-token, lalu gabungkan worker dengan K3S_URL dan K3S_TOKEN. K3s sudah membawa Traefik sebagai ingress dan ServiceLB, jadi aplikasi bisa langsung dibuka lewat domain.

Ingin belajar atau memakai Kubernetes, tapi yang kamu punya hanya dua atau tiga VPS kecil? K3s adalah jawaban yang paling sering dipakai untuk situasi ini. K3s adalah distribusi Kubernetes ringan dari proyek k3s-io yang dikemas dalam satu biner, dan bisa dipasang dengan satu perintah. Satu server K3s sudah merupakan cluster Kubernetes lengkap: datastore, control plane, kubelet, dan container runtime ada di dalamnya.

Per 4 November 2026, rilis terbaru di GitHub adalah lini v1.37. Langkah di bawah mengikuti dokumentasi resmi K3s, dari satu VPS sampai cluster beberapa node dengan aplikasi yang bisa dibuka dari domain.

## Berapa spesifikasi VPS yang dibutuhkan K3s?

Dokumentasi resmi menyebut kebutuhan minimum berikut:

| Peran node | CPU minimum | RAM minimum |
|:--|:--|:--|
| Server (control plane) | 2 core | 2 GB |
| Agent (worker) | 1 core | 512 MB |

Itu batas bawah untuk K3s sendiri, belum termasuk aplikasimu. Dokumentasi juga menyarankan SSD karena kinerja K3s sangat dipengaruhi kinerja datastore. Hitung kebutuhan aplikasi di atas angka ini, dengan bantuan panduan [memilih spesifikasi VPS](https://nivelva.com/insight/memilih-spesifikasi-vps).

Setiap node juga butuh hostname yang unik. Bila hostname VPS kamu sama, tetapkan nama lain lewat variabel `K3S_NODE_NAME` saat instalasi.

## Port apa yang harus dibuka?

| Port | Protokol | Untuk |
|:--|:--|:--|
| 6443 | TCP | API Kubernetes, agent ke server |
| 8472 | UDP | Flannel VXLAN antar node |
| 10250 | TCP | Kubelet dan metrics, antar node |
| 2379-2380 | TCP | Etcd tertanam, hanya untuk server HA |
| 51820/51821 | UDP | Flannel WireGuard (IPv4/IPv6), bila dipakai |

Dokumentasi menegaskan port VXLAN 8472 **jangan dibuka ke internet publik**. Izinkan hanya dari IP node lain. Port 80 dan 443 tentu perlu dibuka untuk trafik web.

## Langkah membangun cluster K3s

### Langkah 1. Siapkan setiap VPS

Perbarui sistem, pasang SSH key, dan atur firewall dasar seperti di [langkah awal mengamankan VPS](https://nivelva.com/insight/cara-mengamankan-vps-baru). Dokumentasi K3s menyarankan menonaktifkan firewalld atau UFW. Bila tetap memakainya, buka port 6443 dan izinkan rentang pod `10.42.0.0/16` dan service `10.43.0.0/16`.

### Langkah 2. Pasang server pertama

Di VPS yang akan menjadi server:

```bash
curl -sfL https://get.k3s.io | sh -
```

Skrip memasang K3s sebagai service yang otomatis menyala kembali setelah reboot atau crash, berikut alat `kubectl`, `crictl`, `k3s-killall.sh`, dan `k3s-uninstall.sh`. Cek hasilnya:

```bash
sudo kubectl get nodes
```

File kubeconfig ada di `/etc/rancher/k3s/k3s.yaml` dan otomatis dipakai oleh `kubectl` bawaan K3s.

### Langkah 3. Ambil token untuk worker

```bash
sudo cat /var/lib/rancher/k3s/server/node-token
```

Simpan token ini dengan aman. Siapa pun yang memegangnya bisa menggabungkan node ke cluster kamu.

### Langkah 4. Gabungkan worker

Di setiap VPS worker:

```bash
curl -sfL https://get.k3s.io | K3S_URL=https://IP-SERVER:6443 K3S_TOKEN=isi-token sh -
```

Adanya `K3S_URL` membuat installer memasang node sebagai agent, bukan server. Kembali ke server dan jalankan `sudo kubectl get nodes`. Dalam beberapa saat, worker baru muncul dengan status `Ready`.

Bila VPS berada di jaringan berbeda dan komunikasi antar node lewat internet, pertimbangkan backend Flannel WireGuard agar lalu lintas antar node terenkripsi, atau hubungkan node lewat jaringan privat.

### Langkah 5. Deploy aplikasi contoh

Buat file `contoh.yaml`:

```yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: web-contoh
spec:
  replicas: 2
  selector:
    matchLabels: { app: web-contoh }
  template:
    metadata:
      labels: { app: web-contoh }
    spec:
      containers:
        - name: web
          image: nginx:stable
          ports:
            - containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
  name: web-contoh
spec:
  selector: { app: web-contoh }
  ports:
    - port: 80
      targetPort: 80
```

Terapkan dengan `sudo kubectl apply -f contoh.yaml`, lalu cek `sudo kubectl get pods -o wide`. Dua pod akan tersebar ke node yang tersedia.

### Langkah 6. Buka lewat ingress Traefik

K3s membawa Traefik v3 sebagai ingress controller dan otomatis memasangnya saat server menyala. Tambahkan Ingress:

```yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: web-contoh
spec:
  ingressClassName: traefik
  rules:
    - host: app.domainmu.com
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: web-contoh
                port:
                  number: 80
```

Arahkan record DNS `app.domainmu.com` ke IP publik node (cara membuat record ada di [apa itu DNS](https://nivelva.com/insight/apa-itu-dns)), lalu buka di browser. Traefik dipublikasikan sebagai Service bertipe LoadBalancer yang dilayani ServiceLB bawaan K3s, yang memakai hostPort di node.

Untuk menyesuaikan Traefik, jangan mengedit `/var/lib/rancher/k3s/server/manifests/traefik.yaml` karena file itu ditimpa saat K3s start. Gunakan manifest `HelmChartConfig` di folder yang sama. Dokumentasi juga menjelaskan cara mengaktifkan dukungan Gateway API di Traefik lewat cara ini.

### Langkah 7. Akses cluster dari laptop

Salin `/etc/rancher/k3s/k3s.yaml` ke laptop sebagai `~/.kube/config`, lalu ganti alamat `127.0.0.1` di dalamnya dengan IP server. Batasi akses port 6443 hanya dari IP kamu, karena file itu memberi hak admin penuh atas cluster.

## Apa batas K3s yang perlu kamu tahu?

K3s tetap Kubernetes yang sesungguhnya, jadi manifest dan Helm chart umumnya bisa dipakai. Batasnya lebih ke arsitektur yang kamu pilih:

- **Satu server berarti satu titik gagal.** Kalau server mati, aplikasi di worker bisa tetap berjalan, tapi kamu tidak bisa mengubah apa pun di cluster. Untuk ketersediaan tinggi, K3s mendukung beberapa server dengan etcd tertanam, yang butuh jumlah server ganjil.
- **Penyimpanan lokal.** Penyimpanan bawaan menyimpan volume di disk node tempat pod berjalan. Bila node itu mati, datanya tidak otomatis pindah. Database penting sebaiknya punya replikasi sendiri atau memakai layanan database terkelola.
- **ServiceLB memakai port node.** Service LoadBalancer akan tertahan "Pending" bila tidak ada node dengan port yang dibutuhkan masih kosong.
- **Beban operasional tetap ada.** Pembaruan versi, backup datastore, dan pemantauan menjadi tugasmu.

Untuk satu atau dua aplikasi sederhana, Docker Compose di satu VPS sering lebih ringkas. Dasarnya ada di [apa itu Docker](https://nivelva.com/insight/apa-itu-docker). K3s mulai terasa manfaatnya saat aplikasi banyak, butuh rolling update, atau tim sudah terbiasa dengan Kubernetes.

## Pertanyaan yang sering diajukan

### Apakah K3s cocok untuk produksi?

README resmi K3s menyebutnya distribusi Kubernetes yang "fully conformant" dan siap produksi. Kesiapan produksi lebih ditentukan oleh desainmu: HA control plane, backup, penyimpanan, dan pemantauan.

### Bagaimana mematikan Traefik bila ingin ingress lain?

Jalankan semua server dengan opsi --disable=traefik, lalu pasang ingress controller atau implementasi Gateway API pilihanmu.

### Bagaimana menghapus K3s dari node?

Di server jalankan k3s-uninstall.sh, di worker jalankan k3s-agent-uninstall.sh. Skrip ini dibuat otomatis oleh installer.

### Apakah K3s bisa jalan di ARM?

Bisa. Dokumentasi menyebut dukungan x86_64, armhf, dan arm64. Untuk Raspberry Pi, disarankan SSD eksternal karena kartu SD tidak kuat menahan beban IO.

Checklist sebelum menaruh aplikasi sungguhan:

- Setiap node memenuhi spesifikasi minimum dan punya hostname unik
- Port antar node hanya terbuka untuk IP node lain
- Token node dan kubeconfig disimpan aman
- Ingress dan DNS sudah diuji dengan aplikasi contoh
- Rencana untuk datastore: satu server dengan backup, atau beberapa server HA
- Data penting tidak hanya bergantung pada penyimpanan lokal satu node

## Sumber

- <https://github.com/k3s-io/k3s>
- <https://docs.k3s.io/quick-start>
- <https://docs.k3s.io/installation/requirements>
- <https://docs.k3s.io/networking/networking-services>
- <https://github.com/k3s-io/k3s/releases>

---

Diterbitkan oleh Nivelva Insight (https://nivelva.com/insight/). Artikel ini: https://nivelva.com/insight/cluster-kubernetes-k3s
Kontak Nivelva: WhatsApp https://wa.me/6285111245007, email hello@nivelva.com
