Melanjutkan seri belajar kubernetes, kali ini saya mencoba minikube, apa itu minikube ? minikube merupakan sebuah perangkat lunak yang memungkinkan kita untuk menjalankan kubernetes pada komputer pribadi atau satu node untuk keperluan development dan testing.
Fitur dari Minikube
- DNS
- NodePorts
- ConfigMaps and Secrets
- Dashboard
- Container Runtime: Docker, rkt, CRLO, containerd
- Enabling CNI
- Ingress
Minikube juga mendukung beberapa hypervisor diantaranya
- virtualbox
- vmwarefusion
- kvm
- kvm2
- hyperkit
- xhyve
kita bisa memilih salah satu list diatas, lalu memilih driver dengan menambahkan parameter –vm-driver=xxx, kita juga bisa menggunakan –vm-driver=none untuk menjalankan komponen kubernetes pada host bukan dalam vm, driver ini membutuhkan docker dan hanya berjalan di linux.
saya akan menggunakan kvm sebagai hypervisor, untuk memakai hypervisor kvm kita membutuhkan docker-machine dan juga drivernya
Instalasi KVM
pasang kvm dari repositori Ubuntu bionic menggunakan apt
$ sudo apt-get -y install qemu-kvm libvirt-bin virt-top libguestfs-tools \ virtinst bridge-utils
aktifkan modul vhost-net dan load saat boot
$ sudo modprobe vhost_net $ sudo echo vhost_net >> /etc/modules
pastikan layanan libvirtd telah berjalan
$ sudo systemctl status libvitrd
Instalasi Docker Machine
Docker machine merupakan sebuah tool yang memungkinkan kita untuk memasang Docker Engine pada Virtual hosts, dan mengelola host dengan perintah doker-machine
instalasi Docker Machine
$ base=https://github.com/docker/machine/releases/download/v0.16.0 && curl -L $base/docker-machine-$(uname -s)-$(uname -m) >/tmp/docker-machine && sudo install /tmp/docker-machine /usr/local/bin/docker-machine
Instalasi Docker Machine KVM Driver
$ curl -LO https://storage.googleapis.com/minikube/releases/latest/docker-machine-driver-kvm2 $ chmod +x docker-machine-driver-kvm2 $ sudo mv docker-machine-driver-kvm2 /usr/local/bin/
Instalasi Kubectl
unduh dan tambahkan gpg key terlebih dahulu
$ curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
tambahkan repositori kubernetes
$ echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee -a /etc/apt/sources.list.d/kubernetes.list
pasang kubectl
$ sudo apt-get update && sudo apt-get install -y kubectl
Instalasi Minikube
unduh paket binari minikube
$ curl -Lo minikube https://storage.googleapis.com/minikube/releases/v0.30.0/minikube-linux-amd64
setelah terunduh pindahkan ke direktori /usr/local/bin
$ mv minikube /usr/local/bin/
tambahkan hak execute ke binari minikube
chmod +x /usr/local/bin/minikube
Menjalankan Minikube
untuk menjalankan minikube hanya perlu menjalankan perintah minikube start, minikube akan mengunduh iso, membuat vm, mengalokasikan ip dan memasang beberapa komponen dan menjalankannya
$ minikube start --vm-driver kvm2 Starting local Kubernetes v1.10.0 cluster... Starting VM... Downloading Minikube ISO 150.53 MB / 150.53 MB [============================================] 100.00% 0s Getting VM IP address... Moving files into cluster... Downloading kubeadm v1.10.0 Downloading kubelet v1.10.0 Finished Downloading kubeadm v1.10.0 Finished Downloading kubelet v1.10.0 Setting up certs... Connecting to cluster... Setting up kubeconfig... Starting cluster components... Kubectl is now configured to use the cluster. Loading cached images from config file.
untuk mengecek status cluster gunakan kubectl
$ kubectl cluster-info Kubernetes master is running at https://192.168.39.130:8443 CoreDNS is running at https://192.168.39.130:8443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
untuk mengecek nodes gunakan perintah kubectl get nodes dan akan menampilkan hanya 1 node
$ kubectl get nodes NAME STATUS ROLES AGE VERSION minikube Ready master 52m v1.10.0
dan untuk mengakses vm minikube anda bisa langsung menggunakan perintah minikube ssh
Kubernetes Dashboard
Kubernetes memiliki antarmuka web yang dapat digunakan untuk mengelola cluster tanpa harus menggunakan antarmuka konsol, antarmuka web aktif secara bawaan di minikube, untuk mendapatkan urlnya gunakan perintah berikut
$ minikube dashboard --url http://127.0.0.1:46285/api/v1/namespaces/kube-system/services/http:kubernetes-dashboard:/proxy/
dengan perintah minikube dashboard –url akan menampilkan pranala yang bisa diakses di peramban, berikut tampilan dari antarmuka web kubernetes
Minikube Pod
saya akan mencoba membangun pod hello-minikube yang menggunakan docker image yang bernama hello-minikube, dengan perintah dibawah akan membuat sebuah deployment untuk pod
$ kubectl run hello-minikube --image=gcr.io/google_containers/echoserver:1.4 --port=8080 deployment "hello-minikube" created
kita bisa men-inspect pod dan deployment untuk memverifikasi perintah diatas
$ kubectl get pods NAME READY STATUS RESTARTS AGE hello-minikube-6c47c66d8-4rbxz 1/1 Running 0 19m
$ kubectl get deployment NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE hello-minikube 1 1 1 1 19m
agar service hello-minikube bisa diakses, kita harus meng-expose deployment ke external IP dan mengunakan type NodePort karena minikube tidak mendukung LoadBalancer
$ kubectl expose deployment hello-minikube --type=NodePort service "hello-minikube" exposed
kita bisa cek apakah service telah di expose
$ kubectl get services NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE hello-minikube NodePort 10.105.8.109 <none> 8080:32174/TCP 10s kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 1h
sekarang kita bisa mengakses service hello-minikube untuk mendapatkan pranalanya gunakan perintah berikut
$ minikube service hello-minikube --url http://192.168.39.130:32174
pranala diatas bisa diakses melalui peramban maupun curl, saya akan mencoba mengaksesnya menggunakan curl
$ curl http://192.168.39.130:32174 CLIENT VALUES: client_address=172.17.0.1 command=GET real path=/ query=nil request_version=1.1 request_uri=http://192.168.39.130:8080/ SERVER VALUES: server_version=nginx: 1.10.0 - lua: 10001 HEADERS RECEIVED: accept=*/* host=192.168.39.130:32174 user-agent=curl/7.58.0 BODY: -no body in request-%
sekian untuk artikel kali ini semoga bermanfaat