Penyiapan Lab Lokal

Membangun kluster belajar di komputer sendiri menggunakan minikube atau kind, beserta pengenalan kubectl dan dasbor.

Daftar isi

Topik ini menyiapkan kluster belajar yang berjalan di komputer sendiri, lengkap dengan kubectl sebagai alat kendalinya. Jalur utamanya menggunakan minikube, sedangkan kind disediakan sebagai alternatif yang ringan untuk lingkungan yang sudah memasang Docker. Di akhir topik, kluster lab satu Node sudah berjalan, perintah dasar kubectl sudah dicoba, dan dasbor grafis (dashboard) sudah dapat dibuka.

Pilihan alat lab#

Dua alat yang paling umum digunakan untuk membuat kluster belajar di komputer sendiri adalah minikube dan kind. minikube menjalankan kluster Kubernetes satu Node di dalam mesin virtual maupun container, lengkap dengan banyak fitur tambahan berupa add-on yang dapat diaktifkan kapan pun. kind menumpangkan setiap Node kluster sebagai container Docker, dengan tujuan utama pengujian dan lingkungan CI. Keduanya menghadirkan kluster Kubernetes yang sah, sehingga kubectl berperilaku identik terhadap keduanya.

Aspekminikubekind
Bentukaplikasi mandiri dengan beragam driveralat berbasis Docker
Node klustersatu mesin virtual atau containersetiap Node berupa container Docker
Fitur pendukungadd-on seperti dashboard dan ingresskluster inti untuk pengujian
Kegunaan umumlab belajar interaktif di laptoppengujian otomatis dan pipeline CI

Pada jalur ini, minikube dipilih sebagai alat utama karena pemasangannya langsung dan fitur bawaannya mendekati pengalaman kluster nyata, termasuk dasbor. kind tetap dicantumkan sebagai alternatif untuk mesin yang sudah memasang Docker atau untuk kebutuhan otomatisasi. Pilihan alat tidak mengubah cara berlatih, karena seluruh perintah kubectl yang digunakan di jalur ini berlaku umum terhadap kluster mana pun.

Menginstal kubectl dan minikube#

kubectl adalah alat command line untuk berbicara dengan API server, dan hampir semua latihan di jalur ini dilakukan melaluinya. Instalasi cukup dilakukan sekali, dan versi kubectl sebaiknya berjarak maksimal satu versi minor dari versi kluster sesuai kebijakan dukungan resmi. Perintah berikut mengunduh biner kubectl versi stabil untuk Linux amd64, memasangnya, lalu menampilkan versi yang terpasang.

bash
# tidak-dijalankan
# mengunduh biner kubectl versi stabil untuk Linux amd64
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
# memasang kubectl ke direktori sistem
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
# menampilkan versi kubectl yang terpasang
kubectl version --client
text Contoh keluaran
Client Version: v1.31.0
Kustomize Version: v5.4.2

minikube dipasang dengan pola yang serupa, yaitu mengunduh satu biner lalu menaruhnya pada direktori yang terdaftar di PATH. Apabila distribusi Linux atau arsitektur prosesor berbeda, nama berkas pada tautan unduhan disesuaikan mengikuti petunjuk dokumentasi resminya. Kedua biner bersifat mandiri dan tidak membutuhkan dependensi lain, sehingga pemasangan cukup dilakukan dengan menyalin berkasnya ke satu direktori. Apabila direktori sistem tidak dapat ditulis, lokasi pribadi seperti $HOME/.local/bin juga dapat digunakan selama direktori itu terdaftar pada PATH.

bash
# tidak-dijalankan
# mengunduh biner minikube terbaru untuk Linux amd64
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
# memasang minikube ke direktori sistem
sudo install minikube-linux-amd64 /usr/local/bin/minikube
# menampilkan versi minikube yang terpasang
minikube version --short
text Contoh keluaran
v1.34.0

Membuat kluster pertama#

Perintah minikube start membuat kluster pertama dan menetapkan profil bernama minikube sebagai kluster aktif. Prosesnya mencakup pemilihan driver, pengunduhan image kluster, pembuatan Node, penyiapan komponen pengelola, dan pengaktifan add-on bawaan. Setelah selesai, minikube menuliskan koneksi ke berkas kubeconfig, sehingga kubectl yang baru terpasang langsung menunjuk ke kluster tersebut tanpa pengaturan tambahan. Keluaran persisnya bergantung pada versi alat, dan contoh pada topik ini diambil dari minikube v1.34.0 dengan Kubernetes v1.31.0.

bash
# tidak-dijalankan
# membuat dan menyalakan kluster lab satu node
minikube start
text Contoh keluaran
* minikube v1.34.0 on Ubuntu 22.04
* Using the docker driver based on existing configuration
* Starting "minikube" primary control-plane cluster in "minikube" docker container
* Downloading Kubernetes v1.31.0 ...
  - Preparing Kubernetes v1.31.0 on Docker 27.0.3 ...
  - Verifying Kubernetes components...
* Enabled addons: default-storageclass, storage-provisioner
* Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default

Setiap baris keluaran di atas merekam satu tahap pemasangan, mulai dari pemilihan driver Docker sampai pengaktifan add-on penyimpanan. Pesan Done pada baris terakhir menandakan API server sudah dapat dihubungi. Untuk memastikannya, perintah kubectl get nodes menampilkan daftar Node beserta status, peran, dan versi Kubernetes yang berjalan.

bash
# tidak-dijalankan
# menampilkan daftar node pada kluster
kubectl get nodes
text Contoh keluaran
NAME       STATUS   ROLES           AGE   VERSION
minikube   Ready    control-plane   45s   v1.31.0

Satu Node dengan peran control-plane pada keluaran tersebut sesuai dengan bentuk lab satu Node, yaitu komponen pengelola dan beban kerja berbagi mesin yang sama. STATUS Ready berarti kubelet pada Node itu melaporkan kondisinya sehat ke API server. Perintah kubectl cluster-info memberikan ringkasan alamat koneksi dan berguna untuk memastikan kubectl terhubung ke kluster yang dimaksud.

bash
# tidak-dijalankan
# menampilkan alamat API server dan komponen inti
kubectl cluster-info
text Contoh keluaran
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

To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.

Dasbor dan perintah penunjang#

minikube menyertakan add-on dashboard, yaitu antarmuka web yang menampilkan objek kluster secara grafis, mulai dari daftar Pod sampai log container. Perintah minikube dashboard mengaktifkan add-on tersebut, menjalankan proksi lokal, lalu membuka dasbor pada peramban bawaan. Alamat yang dicetak pada keluaran tetap berlaku selama proses berjalan, sehingga tab yang sama dapat dimuat ulang tanpa menjalankan ulang perintah. Isi dasbor mencerminkan objek yang sama dengan yang ditanyakan kubectl, sehingga pemeriksaan sederhana dapat dilakukan tanpa mengetik perintah, sedangkan kubectl tetap lebih cepat untuk tugas yang berulang.

bash
# tidak-dijalankan
# mengaktifkan add-on dashboard dan membukanya di peramban
minikube dashboard
text Contoh keluaran
* Enabling dashboard ...
* Verifying dashboard health ...
* Launching proxy ...
* Verifying proxy health ...
* Opening http://127.0.0.1:37447/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/ in your default browser...

Proses minikube dashboard tetap berjalan dan menempati terminal sampai dihentikan dengan Ctrl+C. Menghentikannya hanya menutup proksi lokal, sedangkan kluster dan add-on dashboard tetap terpasang, sehingga perintah yang sama dapat dijalankan kembali kapan pun. Apabila peramban tidak terbuka otomatis, alamat pada baris terakhir keluaran dapat disalin secara manual. Untuk latihan tanpa antarmuka grafis, seluruh materi jalur ini tetap dapat diikuti hanya dengan kubectl.

Alternatif: kind#

kind menjadi pilihan apabila lingkungan kerja sudah berbasis Docker atau kluster perlu dibuat dan dihapus berkali-kali secara otomatis. Instalasinya mengikuti pola yang sama, yaitu mengunduh satu biner lalu menaruhnya pada PATH. Contoh di sini menggunakan versi v0.24.0, dan nomor versi terbarunya selalu dapat dilihat pada halaman Quick Start resminya. Berbeda dengan minikube, kind tidak menyediakan dasbor bawaan dan tidak menawarkan driver selain Docker, tetapi pembuatan klusternya cepat karena seluruh Node berupa container.

bash
# tidak-dijalankan
# mengunduh biner kind untuk Linux amd64
curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.24.0/kind-linux-amd64
# membuat berkas dapat dieksekusi
chmod +x ./kind
# memindahkan kind ke direktori yang terdaftar di PATH
sudo mv ./kind /usr/local/bin/kind

Perintah kind create cluster membuat kluster dengan nama default kind dan mengubah konteks kubectl ke kluster tersebut secara otomatis. Pengubahan konteks inilah yang membuat kubectl get nodes segera dapat dijalankan tanpa pengaturan tambahan. Apabila lebih dari satu kluster dibutuhkan, nama lain dapat dipilih melalui argumen –name pada perintah yang sama.

bash
# tidak-dijalankan
# membuat kluster kind dengan nama default
kind create cluster
text Contoh keluaran
Creating cluster "kind" ...
 ✓ Ensuring node image (kindest/node:v1.31.0) 📦
 ✓ Preparing nodes 📦
 ✓ Writing configuration 📜
 ✓ Starting control-plane 🕹️
 ✓ Installing CNI 🔌
 ✓ Installing StorageClass 💾
Set kubectl context to "kind-kind"
bash
# tidak-dijalankan
# menampilkan node pada kluster kind yang baru dibuat
kubectl get nodes
text Contoh keluaran
NAME                 STATUS   ROLES           AGE   VERSION
kind-control-plane   Ready    control-plane   32s   v1.31.0

Nama Node yang berbeda, yaitu kind-control-plane, hanyalah penanda lab yang digunakan. Perintah kubectl yang dipelajari di jalur ini tidak terikat pada alat pembuat kluster, sehingga hasilnya identik baik di lab minikube maupun kind. Keduanya memenuhi standar Kubernetes yang sama, sehingga perbedaannya hanya terletak pada cara kluster dibuat dan dijalankan.

Ringkasan#

  • minikube dan kind sama-sama menghadirkan kluster Kubernetes sah di komputer lokal, dengan minikube kaya add-on dan kind ringan untuk otomatisasi.
  • kubectl adalah alat command line yang berbicara dengan API server, dan versinya sebaiknya berjarak maksimal satu versi minor dari versi kluster.
  • minikube start membuat kluster dan menuliskan koneksi ke kubeconfig, sehingga kubectl get nodes segera menampilkan Node dengan status Ready.
  • minikube dashboard membuka dasbor grafis yang tetap dapat diakses selama prosesnya berjalan di terminal.

Referensi#