Tutorial ini menunjukkan bagaimana caranya menjalankan aplikasi sederhana Node.js Halo Dunia di Kubernetes, dengan Minikube dan Katacoda. Katacoda menyediakan environment Kubernetes secara gratis di dalam browser.
Catatan: Kamupun bisa mengikuti tutorial ini kalau sudah instalasi Minikube di lokal kamu.
Tutorial ini menyediakan image Kontainer yang dibuat melalui barisan kode berikut:
minikube/server.js
|
---|
|
minikube/Dockerfile
|
---|
|
Untuk info lebih lanjut tentang perintah docker build
, baca dokumentasi Docker.
Tekan Launch Terminal
Catatan: Kalau kamu memilih instalasi Minikube secara lokal, jalankanminikube start
.
Buka dasbor Kubernetes di dalam browser:
minikube dashboard
Hanya untuk environment Katacoda: Di layar terminal paling atas, tekan tombol plus, lalu lanjut tekan Select port to view on Host 1.
Hanya untuk environment Katacoda: Ketik 30000
, lalu lanjut tekan Display Port.
Sebuah Kubernetes Pod adalah kumpulan dari satu atau banyak Kontainer, saling terhubung untuk kebutuhan administrasi dan jaringan. Pod dalam tutorial ini hanya punya satu Kontainer. Sebuah Kubernetes Deployment selalu memeriksa kesehatan Pod kamu dan melakukan restart saat Kontainer di dalam Pod tersebut mati. Deployment adalah cara jitu untuk membuat dan mereplikasi Pod.
Gunakan perintah kubectl create
untuk membuat Deployment yang dapat mengatur Pod.
Pod menjalankan Kontainer sesuai dengan image Docker yang telah diberikan.
kubectl create deployment hello-node --image=gcr.io/hello-minikube-zero-install/hello-node
Lihat Deployment:
kubectl get deployments
Keluaran:
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
hello-node 1 1 1 1 1m
Lihat Pod:
kubectl get pods
Keluaran:
NAME READY STATUS RESTARTS AGE
hello-node-5f76cf6ccf-br9b5 1/1 Running 0 1m
Lihat event klaster:
kubectl get events
Lihat konfigurasi kubectl
:
kubectl config view
Catatan: Untuk info lebih lanjut tentang perintahkubectl
, lihat ringkasan kubectl.
Secara default, Pod hanya bisa diakses melalui alamat IP internal di dalam klaster Kubernetes.
Supaya Kontainer hello-node
bisa diakses dari luar jaringan virtual Kubernetes, kamu harus ekspos Pod sebagai Servis Kubernetes.
Ekspos Pod pada internet publik menggunakan perintah kubectl expose
:
kubectl expose deployment hello-node --type=LoadBalancer --port=8080
Tanda --type=LoadBalancer
menunjukkan bahwa kamu ingin ekspos Servis keluar dari klaster.
Lihat Servis yang baru kamu buat:
kubectl get services
Keluaran:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
hello-node LoadBalancer 10.108.144.78 <pending> 8080:30369/TCP 21s
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 23m
Untuk penyedia cloud yang memiliki load balancer, sebuah alamat IP eksternal akan disediakan untuk mengakses Servis tersebut.
Pada Minikube, tipe LoadBalancer
membuat Servis tersebut dapat diakses melalui perintah minikube service
.
Jalankan perintah berikut:
minikube service hello-node
Hanya untuk environment Katacoda: Tekan tombol plus, lalu lanjut tekan Select port to view on Host 1.
Hanya untuk environment Katacoda: Ketik 30369
(lihat port di samping 8080
pada keluaran servis), lalu lanjut tekan
Ini akan membuka jendela browser yang menjalankan aplikasimu dan memperlihatkan pesan “Halo Dunia”.
Minikube punya beberapa addons yang bisa diaktifkan, dinon-aktifkan, maupun dibuka di dalam environment Kubernetes lokal.
Daftar addons yang ada saat ini:
minikube addons list
Keluaran:
addon-manager: enabled
coredns: disabled
dashboard: enabled
default-storageclass: enabled
efk: disabled
freshpod: disabled
heapster: disabled
ingress: disabled
kube-dns: enabled
metrics-server: disabled
nvidia-driver-installer: disabled
nvidia-gpu-device-plugin: disabled
registry: disabled
registry-creds: disabled
storage-provisioner: enabled
Aktifkan sebuah addon, misalnya heapster
:
minikube addons enable heapster
Keluaran:
heapster was successfully enabled
Lihat Pod dan Servis yang baru saja kamu buat:
kubectl get pod,svc -n kube-system
Keluaran:
NAME READY STATUS RESTARTS AGE
pod/heapster-9jttx 1/1 Running 0 26s
pod/influxdb-grafana-b29w8 2/2 Running 0 26s
pod/kube-addon-manager-minikube 1/1 Running 0 34m
pod/kube-dns-6dcb57bcc8-gv7mw 3/3 Running 0 34m
pod/kubernetes-dashboard-5498ccf677-cgspw 1/1 Running 0 34m
pod/storage-provisioner 1/1 Running 0 34m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/heapster ClusterIP 10.96.241.45 <none> 80/TCP 26s
service/kube-dns ClusterIP 10.96.0.10 <none> 53/UDP,53/TCP 34m
service/kubernetes-dashboard NodePort 10.109.29.1 <none> 80:30000/TCP 34m
service/monitoring-grafana NodePort 10.99.24.54 <none> 80:30002/TCP 26s
service/monitoring-influxdb ClusterIP 10.111.169.94 <none> 8083/TCP,8086/TCP 26s
Non-aktifkan heapster
:
minikube addons disable heapster
Keluaran:
heapster was successfully disabled
Sekarang, mari kita bersihkan semua resource yang kamu buat di klaster:
kubectl delete service hello-node
kubectl delete deployment hello-node
Kamu juga boleh mematikan mesin virtual (VM) untuk Minikube:
minikube stop
Kamu juga boleh menghapus Minikube VM:
minikube delete
Apakah halaman ini berguna?
Thanks for the feedback. If you have a specific, answerable question about how to use Kubernetes, ask it on Stack Overflow. Open an issue in the GitHub repo if you want to report a problem or suggest an improvement.