Panduan: Cluster K8s dengan Rancher (3 VM)

Dari persiapan VM hingga cluster Ready — lengkap dengan perintah CLI.

Alur lima langkah lab Rancher 3 VM
Gambar. Alur lab: siapkan VM → install Rancher → create cluster → join nodes → verifikasi.
Contoh tampilan perintah CLI di terminal
Gambar. Pratinjau perintah CLI yang akan Anda jalankan di lab.

1Siapkan tiga VM (hostname, update, SSH)

Buat 3 VM di VirtualBox/VMware/Proxmox. Di setiap VM, update sistem dan pasang tools dasar:

sudo apt update && sudo apt upgrade -y
sudo apt install -y curl wget vim net-tools openssh-server
sudo systemctl enable --now ssh

Set hostname per VM

VM-1 (Master):

sudo hostnamectl set-hostname k8s-master
echo "192.168.56.11 k8s-master" | sudo tee -a /etc/hosts

VM-2 (Worker-1):

sudo hostnamectl set-hostname k8s-worker1
echo "192.168.56.12 k8s-worker1" | sudo tee -a /etc/hosts

VM-3 (Worker-2):

sudo hostnamectl set-hostname k8s-worker2
echo "192.168.56.13 k8s-worker2" | sudo tee -a /etc/hosts

Opsional: IP statis (Netplan contoh)

# edit lalu apply — sesuaikan nama NIC (ip a)
sudo nano /etc/netplan/00-installer-config.yaml
sudo netplan apply
ip a

Uji konektivitas antar VM

ping -c 3 192.168.56.11
ping -c 3 192.168.56.12
ping -c 3 192.168.56.13
ssh user@192.168.56.11

2Install Docker & jalankan Rancher

Pada host Rancher (bisa VM ke-4 atau laptop lab yang cukup RAM), install Docker lalu jalankan Rancher Server:

# Install Docker (Ubuntu)
curl -fsSL https://get.docker.com | sudo sh
sudo usermod -aG docker $USER
newgrp docker
docker version

Jalankan Rancher (contoh lab — port 80/443):

sudo docker run -d --restart=unless-stopped \
  --name rancher \
  -p 80:80 -p 443:443 \
  --privileged \
  rancher/rancher:latest

Cek kontainer dan log bootstrap (password awal ada di log):

sudo docker ps
sudo docker logs rancher 2>&1 | grep "Bootstrap Password"
# atau
sudo docker exec -it rancher reset-password
  1. Buka browser: https://<IP-HOST-RANCHER>
  2. Login dengan bootstrap password
  3. Set password admin baru
  4. Masuk dashboard Rancher

Referensi: Rancher Manager Docs

3Buat cluster & daftarkan node Master

Di UI Rancher:

  1. Menu Cluster ManagementCreate
  2. Pilih Custom (karena node Anda adalah VM sendiri)
  3. Isi nama cluster, misalnya lab-3vm
  4. Centang peran untuk perintah master: etcd + Control Plane
  5. Salin perintah registrasi yang muncul (berisi curl ... | sh)

Contoh bentuk perintah (token/URL diganti milik Anda):

# Jalankan di VM-1 (k8s-master)
curl -fL https://<IP-RANCHER>/v3/import/<TOKEN>.yaml | sudo kubectl apply -f -

# atau format agent installer (tergantung versi Rancher), mirip:
curl -fL https://<IP-RANCHER>/system-agent-install.sh | sudo sh -s - \
  --server https://<IP-RANCHER> \
  --label 'cattle.io/os=linux' \
  --token <CLUSTER_TOKEN> \
  --etcd --controlplane

Pantau status di UI sampai node master muncul. Di master (jika kubeconfig sudah ada):

sudo kubectl get nodes
sudo journalctl -u rancher-system-agent -f

4Join dua Worker

Kembali ke UI registrasi node. Kali ini hanya centang peran Worker, lalu salin perintahnya.

Jalankan di VM-2 (k8s-worker1):

curl -fL https://<IP-RANCHER>/system-agent-install.sh | sudo sh -s - \
  --server https://<IP-RANCHER> \
  --label 'cattle.io/os=linux' \
  --token <CLUSTER_TOKEN> \
  --worker

Jalankan di VM-3 (k8s-worker2):

curl -fL https://<IP-RANCHER>/system-agent-install.sh | sudo sh -s - \
  --server https://<IP-RANCHER> \
  --label 'cattle.io/os=linux' \
  --token <CLUSTER_TOKEN> \
  --worker

Pastikan ketiga node terlihat di halaman Nodes. Cek agen:

sudo systemctl status rancher-system-agent --no-pager
sudo docker ps   # atau crictl/ps runtime yang dipakai node

5Verifikasi cluster dengan kubectl

Unduh kubeconfig dari Rancher (Cluster → Download KubeConfig), lalu di workstation:

mkdir -p ~/.kube
# simpan file sebagai ~/.kube/config-lab-3vm.yaml
export KUBECONFIG=~/.kube/config-lab-3vm.yaml

kubectl cluster-info
kubectl get nodes -o wide
kubectl get pods -A
kubectl get componentstatuses 2>/dev/null || kubectl get --raw='/readyz?verbose'

Contoh keluaran yang diharapkan:

NAME           STATUS   ROLES                       AGE   VERSION
k8s-master     Ready    control-plane,etcd,master   15m   v1.xx.x
k8s-worker1    Ready    worker                      12m   v1.xx.x
k8s-worker2    Ready    worker                      12m   v1.xx.x

Jika semua node Ready dan Pod sistem (cattle, coredns, dll.) berjalan, lab 3 VM siap.

6Uji deploy aplikasi contoh

Deploy Nginx sederhana untuk membuktikan worker menerima workload:

kubectl create deployment demo-nginx --image=nginx:1.25 --replicas=2
kubectl expose deployment demo-nginx --port=80 --type=NodePort
kubectl get deploy,pods,svc -o wide
kubectl get pods -o wide   # lihat Pod tersebar di worker

Hapus jika hanya untuk uji:

kubectl delete service demo-nginx
kubectl delete deployment demo-nginx

Troubleshooting CLI singkat

Gejala Perintah cek Arah perbaikan
Node NotReady kubectl describe node <nama> Cek CNI, disk, waktu NTP, agen Rancher
Gagal curl registrasi curl -vk https://<IP-RANCHER> Firewall / sertifikat / IP salah
Pod Pending kubectl describe pod <pod> Resource worker kurang / taint
Agen mati sudo journalctl -u rancher-system-agent -e Restart agen / daftar ulang node

Tips sukses lab

  1. Samakan zona waktu: sudo timedatectl set-ntp true
  2. Jangan campur IP publik & privat tanpa aturan jelas
  3. Simpan bootstrap password, token cluster, dan kubeconfig dengan aman
  4. Dokumentasikan setiap error — itu bagian dari belajar

Lanjut ke halaman media atau form praktik.