Halo Minikube

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. Silakan lihat memulai minikube untuk instruksi instalasi.

Tujuan

  • Deploy aplikasi halo dunia pada minikube.
  • Jalankan aplikasinya.
  • Melihat log aplikasi.

Sebelum kamu memulai

Tutorial ini menyediakan image Kontainer yang dibuat melalui barisan kode berikut:

var http = require('http');

var handleRequest = function(request, response) {
  console.log('Received request for URL: ' + request.url);
  response.writeHead(200);
  response.end('Hello World!');
};
var www = http.createServer(handleRequest);
www.listen(8080);
FROM node:6.14.2
EXPOSE 8080
COPY server.js .
CMD node server.js

Untuk info lebih lanjut tentang perintah docker build, baca dokumentasi Docker.

Membuat sebuah klaster Minikube

  1. Tekan Launch Terminal

    Catatan: Kalau kamu memilih instalasi minikube secara lokal, jalankan minikube start.
  2. Buka dasbor Kubernetes di dalam browser:

    minikube dashboard
    
  3. Hanya untuk environment Katacoda: Di layar terminal paling atas, tekan tombol plus, lalu lanjut tekan Select port to view on Host 1.

  4. Hanya untuk environment Katacoda: Ketik 30000, lalu lanjut tekan Display Port.

Membuat sebuah Deployment

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.

  1. 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=k8s.gcr.io/echoserver:1.4
    
  2. Lihat Deployment:

    kubectl get deployments
    

    Keluaran:

    NAME         DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
    hello-node   1         1         1            1           1m
    
  3. Lihat Pod:

    kubectl get pods
    

    Keluaran:

    NAME                          READY     STATUS    RESTARTS   AGE
    hello-node-5f76cf6ccf-br9b5   1/1       Running   0          1m
    
  4. Lihat event klaster:

    kubectl get events
    
  5. Lihat konfigurasi kubectl:

    kubectl config view
    
    Catatan: Untuk info lebih lanjut tentang perintah kubectl, lihat ringkasan kubectl.

Membuat sebuah Servis

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.

  1. 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.

  2. 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.

  3. Jalankan perintah berikut:

    minikube service hello-node
    
  4. Hanya untuk environment Katacoda: Tekan tombol plus, lalu lanjut tekan Select port to view on Host 1.

  5. 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".

Aktifkan addons

Perangkat minikube meliputi sekumpulan addons bawaan yang bisa diaktifkan, dinonaktifkan, maupun dibuka di dalam environment Kubernetes lokal.

  1. 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
    
  2. Aktifkan sebuah addon, misalnya heapster:

    minikube addons enable heapster
    

    Keluaran:

    heapster was successfully enabled
    
  3. 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
    
  4. Non-aktifkan heapster:

    minikube addons disable heapster
    

    Keluaran:

    heapster was successfully disabled
    

Bersih-bersih

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 atau virtual machine (VM) untuk minikube:

minikube stop

Kamu juga boleh menghapus minikube VM:

minikube delete

Selanjutnya

Last modified April 04, 2021 at 10:39 PM PST : updating learning environment minikube. (21f41f2d1)