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.