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 dashboardHanya 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-nodeLihat Deployment:
kubectl get deploymentsKeluaran:
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
hello-node 1 1 1 1 1mLihat Pod:
kubectl get podsKeluaran:
NAME READY STATUS RESTARTS AGE
hello-node-5f76cf6ccf-br9b5 1/1 Running 0 1mLihat event kluster:
kubectl get eventsLihat konfigurasi kubectl:
kubectl config viewCatatan: Untuk info lebih lanjut tentang perintahkubectl, lihat ringkasan kubectl.
Secara default, Pod hanya bisa diakses melalui alamat IP internal di dalam kluster 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=8080Tanda --type=LoadBalancer menunjukkan bahwa kamu ingin ekspos Servis keluar dari kluster.
Lihat Servis yang baru kamu buat:
kubectl get servicesKeluaran:
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 23mUntuk 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-nodeHanya 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 listKeluaran:
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: enabledAktifkan sebuah addon, misalnya heapster:
minikube addons enable heapsterKeluaran:
heapster was successfully enabledLihat Pod dan Servis yang baru saja kamu buat:
kubectl get pod,svc -n kube-systemKeluaran:
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 26sNon-aktifkan heapster:
minikube addons disable heapsterKeluaran:
heapster was successfully disabledSekarang, mari kita bersihkan semua resource yang kamu buat di kluster:
kubectl delete service hello-node
kubectl delete deployment hello-nodeKamu juga boleh mematikan mesin virtual (VM) untuk Minikube:
minikube stopKamu juga boleh menghapus Minikube VM:
minikube deleteApakah 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.