Belajar Kubernetes #1: Kubernetes Adalah + Install Minikube
Kubernetes adalah platform open source untuk mengelola aplikasi berbasis container secara otomatis. Tugasnya mencakup menjalankan container di banyak server sekaligus, menghidupkan ulang container yang mati, membagi beban trafik, dan menaikkan jumlah container saat trafik ramai. Singkatnya, kalau Docker menjalankan satu container, Kubernetes mengatur ratusan container di banyak mesin supaya kamu tidak perlu mengurusnya satu per satu.
Artikel ini bagian pertama dari seri Belajar Kubernetes dari Nol, total 26 bagian sampai kamu bisa deploy aplikasi web plus database di VPS sendiri. Di bagian ini kita bahas konsep dasarnya, lalu langsung praktik: install kubectl dan Minikube, jalankan cluster pertama, dan deploy nginx sebagai bukti environment kamu hidup. Prasyaratnya cuma satu: paham Docker dasar. Kalau belum, selesaikan dulu seri Belajar Docker dari Nol minimal sampai paham image, container, dan port mapping.
Kubernetes Adalah Solusi untuk Masalah Banyak Container
Bayangkan kamu punya aplikasi toko online yang sudah di-container-kan dengan Docker. Di laptop, satu perintah docker run sudah cukup. Masalah muncul waktu aplikasi itu masuk production dan trafiknya naik. Satu server tidak kuat, jadi kamu sewa tiga server. Sekarang pertanyaannya:
- Container mana jalan di server mana?
- Kalau satu container crash jam 3 pagi, siapa yang menghidupkan ulang?
- Kalau satu server mati total, siapa yang memindahkan container ke server lain?
- Kalau ada update versi aplikasi, bagaimana caranya ganti 20 container tanpa downtime?
- Trafik naik saat flash sale, siapa yang menambah container lalu menguranginya lagi setelah sepi?
Semua itu bisa dikerjakan manual dengan SSH ke tiap server dan menjalankan perintah Docker satu per satu. Untuk dua tiga container masih masuk akal. Untuk puluhan container di beberapa server, itu resep begadang. Kubernetes lahir untuk mengambil alih pekerjaan ini. Istilah kerennya container orchestration, orkestrasi container.
Analogi paling gampang: Kubernetes itu seperti mandor proyek bangunan. Kamu sebagai pemilik proyek cukup bilang “saya mau 5 tukang ngecat tembok”. Mandor yang mengatur tukang mana ditempatkan di sisi mana, mencarikan pengganti kalau ada tukang yang sakit, dan menambah tukang kalau target dipercepat. Kamu tidak perlu mengawasi tukang satu per satu. Di Kubernetes, kamu menulis keinginan itu dalam file konfigurasi, misalnya “jalankan 5 replika aplikasi saya”, lalu Kubernetes yang menjaga kondisi itu terus terpenuhi. Konsep ini disebut desired state, dan ini yang membedakan Kubernetes dari sekadar menjalankan container manual.
Tim kami di Arrazy memakai pola yang sama saat mengelola backend Go dan Laravel milik klien. Saat aplikasi masih kecil, Docker Compose di satu VPS cukup. Begitu kebutuhan uptime dan skala naik, orkestrasi seperti Kubernetes atau k3s jadi jauh lebih masuk akal daripada mengelola container manual lintas server.
Alat yang Dibutuhkan: kubectl dan Minikube
Untuk belajar, kamu tidak perlu sewa tiga server. Ada dua alat yang kita pakai sepanjang seri ini:
- kubectl: command line untuk berkomunikasi dengan cluster Kubernetes. Semua perintah ke cluster lewat sini.
- Minikube: alat untuk menjalankan cluster Kubernetes mini di laptop, cukup satu mesin. Cocok untuk belajar dan development.
Spesifikasi minimum untuk Minikube: 2 CPU, 2 GB RAM bebas, 20 GB disk, dan Docker sudah terinstall (versi 20.10 ke atas, cek dengan docker version). Kita pakai Docker sebagai driver Minikube karena paling ringan dan tidak butuh VirtualBox.
Install kubectl dan Minikube di Linux
Contoh untuk Ubuntu 22.04 atau 24.04, arsitektur x86_64. Install kubectl versi stabil terbaru:
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
kubectl version --client
Output yang diharapkan kurang lebih seperti ini (versi minor bisa berbeda):
Client Version: v1.31.0
Kustomize Version: v5.4.2
Lanjut install Minikube:
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube
minikube version
Output: minikube version: v1.34.0 atau lebih baru.
Install kubectl dan Minikube di macOS
Paling cepat lewat Homebrew:
brew install kubectl minikube
kubectl version --client
minikube version
Berlaku untuk Mac Intel maupun Apple Silicon. Pastikan Docker Desktop sudah jalan sebelum lanjut ke langkah berikutnya.
Install kubectl dan Minikube di Windows
Pakai winget dari PowerShell (jalankan sebagai Administrator):
winget install -e --id Kubernetes.kubectl
winget install -e --id Kubernetes.minikube
Tutup dan buka lagi PowerShell supaya PATH terbaca, lalu verifikasi dengan kubectl version --client dan minikube version. Untuk Windows, saya sarankan Docker Desktop dengan backend WSL 2. Kalau kamu sudah terbiasa kerja di WSL 2 Ubuntu, boleh juga ikuti langkah Linux di atas langsung dari dalam WSL.
Menjalankan Cluster Kubernetes Pertama
Sekarang bagian serunya. Jalankan cluster dengan Kubernetes versi 1.31 supaya seragam sepanjang seri:
minikube start --driver=docker --kubernetes-version=v1.31.0
Proses pertama butuh beberapa menit karena Minikube mengunduh image Kubernetes sekitar 1 GB. Kalau sukses, baris terakhirnya seperti ini:
Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default
Cek kondisi cluster dengan tiga perintah ini:
minikube status
Output yang diharapkan:
minikube
type: Control Plane
host: Running
kubelet: Running
apiserver: Running
kubeconfig: Configured
Lalu cek node, yaitu mesin yang jadi anggota cluster. Di Minikube cuma ada satu:
kubectl get nodes
NAME STATUS ROLES AGE VERSION
minikube Ready control-plane 1m v1.31.0
Terakhir, cek alamat komponen inti cluster:
kubectl cluster-info
Kubernetes control plane is running at https://192.168.49.2:8443
CoreDNS is running at https://192.168.49.2:8443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
Kalau ketiga perintah itu keluar tanpa error, selamat, kamu resmi punya cluster Kubernetes di laptop. Istilah seperti control plane dan node akan kita bedah di bagian 3 tentang arsitektur. Untuk sekarang cukup pahami: node adalah mesin pekerja, control plane adalah otaknya.
Deploy Percobaan: Membuktikan Cluster Hidup
Kita belum akan belajar deployment secara serius, itu jatah bagian 7. Tapi tidak afdol rasanya punya cluster tanpa menjalankan apa pun. Deploy nginx dengan satu perintah:
kubectl create deployment nginx --image=nginx:1.27
Output: deployment.apps/nginx created. Lalu lihat hasilnya:
kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx-676b6c5bbc-8k2vw 1/1 Running 0 30s
Kalau STATUS masih ContainerCreating, tunggu beberapa detik lalu jalankan lagi. Begitu Running, artinya Kubernetes berhasil menarik image nginx dan menjalankannya sebagai pod. Apa itu pod? Sabar, itu materi bagian 5. Sekarang hapus dulu percobaan ini supaya cluster bersih:
kubectl delete deployment nginx
Kalau mau istirahat, matikan cluster dengan minikube stop. Data dan konfigurasi tetap tersimpan, tinggal minikube start lagi kapan pun.
Error Umum Saat Install Minikube dan Solusinya
Virtualisasi belum aktif di BIOS
Gejala: Minikube atau Docker Desktop gagal start dengan pesan seperti This computer doesn't have VT-X/AMD-v enabled. Penyebabnya fitur virtualisasi (Intel VT-x atau AMD-V) belum dinyalakan di BIOS/UEFI. Solusi: restart komputer, masuk BIOS (biasanya tombol F2, F10, atau Del), cari opsi bernama Intel Virtualization Technology, VT-x, AMD-V, atau SVM Mode, lalu set ke Enabled. Di Linux kamu bisa cek dulu dengan egrep -c '(vmx|svm)' /proc/cpuinfo. Kalau hasilnya lebih dari 0, virtualisasi didukung CPU kamu.
Bingung driver docker vs virtualbox
Minikube bisa jalan di atas beberapa driver. Dua yang paling sering dipakai pemula: docker dan virtualbox. Rekomendasi saya tegas: pakai --driver=docker. Lebih ringan, start lebih cepat, dan tidak perlu install aplikasi tambahan kalau Docker sudah ada. VirtualBox baru relevan kalau kamu memang tidak bisa memasang Docker. Kalau Minikube kamu telanjur terbuat dengan driver lain dan mau ganti, hapus dulu clusternya dengan minikube delete, lalu start ulang dengan flag driver yang benar. Ganti driver tidak bisa dilakukan pada cluster yang sudah jadi.
minikube start gagal karena RAM kurang
Gejala: muncul pesan seperti Requested memory allocation is less than the recommended minimum atau proses start macet lalu gagal. Minikube default meminta 2 GB ke atas, dan kalau laptop kamu sisa RAM-nya tipis karena browser membuka 30 tab, start bisa gagal. Solusi: tutup aplikasi berat, lalu jalankan dengan alokasi eksplisit, misalnya minikube start --driver=docker --memory=2048 --cpus=2 --kubernetes-version=v1.31.0. Kalau total RAM laptop 4 GB, pengalaman belajarnya akan berat. Pertimbangkan pakai VPS murah untuk lab, nanti di bagian 24 kita bahas install k3s di VPS yang jauh lebih hemat resource.
Docker daemon tidak jalan atau permission denied
Gejala: Cannot connect to the Docker daemon atau permission denied while trying to connect to the Docker daemon socket. Yang pertama artinya service Docker belum hidup, jalankan sudo systemctl start docker di Linux atau buka Docker Desktop di Windows/macOS. Yang kedua artinya user kamu belum masuk grup docker, perbaiki dengan sudo usermod -aG docker $USER lalu logout dan login lagi. Satu catatan penting: jangan menjalankan minikube start sebagai root, driver docker memang menolak dijalankan dengan sudo.
Peta Lengkap Seri Belajar Kubernetes dari Nol
Supaya kamu tahu arah perjalanan, ini peta 26 bagian yang akan kita lalui. Semuanya praktik di Minikube dulu, lalu pindah ke VPS sungguhan menjelang akhir.
| Bagian | Topik | Yang kamu kuasai |
|---|---|---|
| 1 sampai 4 | Pengenalan, beda Docker vs Kubernetes, arsitektur cluster, perintah dasar kubectl | Fondasi konsep dan alat kerja |
| 5 sampai 8 | Pod, YAML manifest, Deployment dan ReplicaSet, rolling update dan rollback | Menjalankan dan meng-update aplikasi tanpa downtime |
| 9 sampai 10 | Service (ClusterIP, NodePort) dan Ingress | Membuka akses aplikasi dari luar cluster |
| 11 sampai 14 | ConfigMap, Secret, liveness dan readiness probe, resource request dan limit | Konfigurasi dan kesehatan aplikasi ala production |
| 15 sampai 17 | Volume, Persistent Volume dan PVC, StatefulSet | Menyimpan data dan menjalankan database |
| 18 sampai 22 | Namespace, RBAC, HPA autoscaling, Helm, logging dan monitoring | Mengelola cluster secara rapi dan aman |
| 23 sampai 26 | Deploy web plus database lengkap, install k3s di VPS, HTTPS dengan cert-manager, proyek akhir | Aplikasi nyata jalan di VPS dengan domain dan HTTPS |
Di akhir seri, kamu akan punya aplikasi web lengkap dengan database yang berjalan di cluster milikmu sendiri di VPS, bisa diakses lewat domain dengan HTTPS. Itu portofolio yang layak ditunjukkan saat melamar kerja sebagai backend atau DevOps engineer.
Rangkuman dan Lanjut ke Bagian 2
Hari ini kamu sudah paham bahwa Kubernetes adalah orkestrator container, si mandor yang menjaga aplikasi tetap jalan sesuai keinginanmu di banyak mesin. Kamu juga sudah install kubectl dan Minikube, menjalankan cluster Kubernetes 1.31 pertama, membuktikannya hidup lewat kubectl get nodes, dan sempat deploy nginx sebagai pemanasan.
Pertanyaan yang paling sering muncul setelah ini: kalau sudah bisa Docker, kenapa repot belajar Kubernetes, dan kapan Docker Compose saja sudah cukup? Itu tema bagian berikutnya, “Belajar Kubernetes #2: Perbedaan Docker dan Kubernetes”, yang terbit menyusul di halaman hub Belajar Kubernetes dari Nol. Sambil menunggu, biarkan Minikube terpasang dan coba ulangi perintah hari ini sampai lancar di luar kepala.
Referensi
Ingin Membaca Artikel Lainnya?
Temukan lebih banyak insight dan tips tentang teknologi dan bisnis digital.
Lihat Semua Artikel