Traffine I/O

Bahasa Indonesia

2022-05-30

Minikube

Apa itu Minikube

Minikube adalah sebuah alat sumber terbuka yang memungkinkan para pengembang untuk menjalankan klaster Kubernetes dengan satu node pada mesin lokal mereka. Minikube menyediakan cara yang disederhanakan bagi para pengembang untuk mempelajari Kubernetes, mengembangkan dan menguji aplikasi, serta bereksperimen dengan fitur-fitur baru dalam lingkungan terisolasi tanpa memerlukan resource perangkat keras yang besar.

Minikube menjalankan klaster satu node di dalam mesin virtual (VM) pada komputer pribadi Anda. VM ini mengandung semua komponen Kubernetes yang diperlukan seperti API server, scheduler, etcd, dan lainnya. Selain itu, Minikube mendukung berbagai fitur Kubernetes seperti DNS, NodePorts, ConfigMaps, dan Secrets.

Salah satu keuntungan dari Minikube adalah kemudahannya penggunaannya. Dengan beberapa perintah sederhana, Anda dapat mengatur dan memulai klaster Kubernetes, mendeploy aplikasi, dan mengelola resource. Minikube juga terintegrasi dengan baik dengan alat-alat Kubernetes umum seperti kubectl untuk mengelola resource dan Helm untuk mendeploy aplikasi kompleks.

Fitur lain yang mencolok adalah kemampuan Minikube untuk meniru lingkungan yang mirip dengan produksi di mesin lokal Anda. Melalui penggunaan add-on dan konfigurasi, Anda dapat meniru pengaturan dan batasan produksi, yang sangat berguna untuk pengujian dan validasi aplikasi sebelum mereka dideploy dalam skenario dunia nyata.

Instalasi Minikube

Jika Anda menggunakan MacOS, Anda dapat menginstal Minikube dengan menjalankan perintah berikut:

bash
$ brew install minikube
$ brew install kubectl

Jika Anda menggunakan sistem operasi lain, lihat dokumentasi resmi berikut untuk panduan instalasi:

https://minikube.sigs.k8s.io/docs/start/

Perintah Dasar untuk Berinteraksi dengan Minikube

Setelah Minikube terinstal, Anda dapat mulai berinteraksi dengannya menggunakan berbagai perintah:

minikube start

Memulai mesin virtual dan mengatur klaster Kubernetes satu node di dalamnya.

bash
$ minikube start

šŸ˜„  minikube v1.30.1 on Darwin 13.0 (arm64)
āœØ  Automatically selected the docker driver
šŸ“Œ  Using Docker Desktop driver with root privileges
šŸ‘  Starting control plane node minikube in cluster minikube
šŸšœ  Pulling base image ...
šŸ’¾  Downloading Kubernetes v1.26.3 preload ...
    > preloaded-images-k8s-v18-v1...:  330.52 MiB / 330.52 MiB  100.00% 3.50 Mi
    > gcr.io/k8s-minikube/kicbase...:  336.39 MiB / 336.39 MiB  100.00% 2.23 Mi
šŸ”„  Creating docker container (CPUs=2, Memory=2200MB) ...

šŸ§Æ  Docker is nearly out of disk space, which may cause deployments to fail! (87% of capacity). You can pass '--force' to skip this check.
šŸ’”  Suggestion:

    Try one or more of the following to free up space on the device:

    1. Run "docker system prune" to remove unused Docker data (optionally with "-a")
    2. Increase the storage allocated to Docker for Desktop by clicking on:
    Docker icon > Preferences > Resources > Disk Image Size
    3. Run "minikube ssh -- docker system prune" if using the Docker container runtime
šŸæ  Related issue: https://github.com/kubernetes/minikube/issues/9024

šŸ³  Preparing Kubernetes v1.26.3 on Docker 23.0.2 ...
    ā–Ŗ Generating certificates and keys ...
    ā–Ŗ Booting up control plane ...
    ā–Ŗ Configuring RBAC rules ...
šŸ”—  Configuring bridge CNI (Container Networking Interface) ...
    ā–Ŗ Using image gcr.io/k8s-minikube/storage-provisioner:v5
šŸ”Ž  Verifying Kubernetes components...
šŸŒŸ  Enabled addons: storage-provisioner, default-storageclass
šŸ„  Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default

minikube status

Menampilkan status mesin Minikube dan status Kubernetes dan kubeconfig-nya.

bash
$ minikube

minikube
type: Control Plane
host: Running
kubelet: Running
apiserver: Running
kubeconfig: Configured

minikube dashboard

Perintah ini membuka dashboard Kubernetes di peramban web default Anda, memungkinkan Anda untuk berinteraksi dengan klaster secara grafis.

bash
$ minikube dashboard

šŸ”Œ  Enabling dashboard ...
    ā–Ŗ Using image docker.io/kubernetesui/dashboard:v2.7.0
    ā–Ŗ Using image docker.io/kubernetesui/metrics-scraper:v1.0.8
šŸ’”  Some dashboard features require the metrics-server addon. To enable all features please run:

        minikube addons enable metrics-server


šŸ¤”  Verifying dashboard health ...
šŸš€  Launching proxy ...
šŸ¤”  Verifying proxy health ...

šŸŽ‰  Opening http://127.0.0.1:51471/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/ in your default browser...

Minikube dashboard

minikube addons list

Menampilkan daftar semua add-on yang tersedia yang dapat Anda aktifkan atau nonaktifkan di klaster Anda.

bash
$ minikube addons list

|-----------------------------|----------|--------------|--------------------------------|
|         ADDON NAME          | PROFILE  |    STATUS    |           MAINTAINER           |
|-----------------------------|----------|--------------|--------------------------------|
| ambassador                  | minikube | disabled     | 3rd party (Ambassador)         |
| auto-pause                  | minikube | disabled     | Google                         |
| cloud-spanner               | minikube | disabled     | Google                         |
| csi-hostpath-driver         | minikube | disabled     | Kubernetes                     |
| dashboard                   | minikube | enabled āœ…   | Kubernetes                     |
| default-storageclass        | minikube | enabled āœ…   | Kubernetes                     |
| efk                         | minikube | disabled     | 3rd party (Elastic)            |
| freshpod                    | minikube | disabled     | Google                         |
| gcp-auth                    | minikube | disabled     | Google                         |
| gvisor                      | minikube | disabled     | Google                         |
| headlamp                    | minikube | disabled     | 3rd party (kinvolk.io)         |
| helm-tiller                 | minikube | disabled     | 3rd party (Helm)               |
| inaccel                     | minikube | disabled     | 3rd party (InAccel             |
|                             |          |              | [info@inaccel.com])            |
| ingress                     | minikube | disabled     | Kubernetes                     |
| ingress-dns                 | minikube | disabled     | Google                         |
| istio                       | minikube | disabled     | 3rd party (Istio)              |
| istio-provisioner           | minikube | disabled     | 3rd party (Istio)              |
| kong                        | minikube | disabled     | 3rd party (Kong HQ)            |
| kubevirt                    | minikube | disabled     | 3rd party (KubeVirt)           |
| logviewer                   | minikube | disabled     | 3rd party (unknown)            |
| metallb                     | minikube | disabled     | 3rd party (MetalLB)            |
| metrics-server              | minikube | disabled     | Kubernetes                     |
| nvidia-driver-installer     | minikube | disabled     | Google                         |
| nvidia-gpu-device-plugin    | minikube | disabled     | 3rd party (Nvidia)             |
| olm                         | minikube | disabled     | 3rd party (Operator Framework) |
| pod-security-policy         | minikube | disabled     | 3rd party (unknown)            |
| portainer                   | minikube | disabled     | 3rd party (Portainer.io)       |
| registry                    | minikube | disabled     | Google                         |
| registry-aliases            | minikube | disabled     | 3rd party (unknown)            |
| registry-creds              | minikube | disabled     | 3rd party (UPMC Enterprises)   |
| storage-provisioner         | minikube | enabled āœ…   | Google                         |
| storage-provisioner-gluster | minikube | disabled     | 3rd party (Gluster)            |
| volumesnapshots             | minikube | disabled     | Kubernetes                     |
|-----------------------------|----------|--------------|--------------------------------|

kubectl cluster-info

Mengambil informasi tentang klaster.

bash
$ kubectl cluster-info

Kubernetes control plane is running at https://127.0.0.1:49938
CoreDNS is running at https://127.0.0.1:49938/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.

kubectl get componentstatus

Memeriksa status klaster.

bash
$ kubectl get componentstatus

NAME                 STATUS    MESSAGE                         ERROR
controller-manager   Healthy   ok
etcd-0               Healthy   {"health":"true","reason":""}
scheduler            Healthy   ok

kubectl get nodes

Menampilkan daftar node klaster.

bash
$ kubectl get nodes

NAME       STATUS   ROLES           AGE   VERSION
minikube   Ready    control-plane   13m   v1.26.3

minikube stop

Perintah ini menghentikan VM Minikube yang sedang berjalan tetapi mempertahankan statusnya untuk dilanjutkan nanti.

bash
$ minikube stop

āœ‹  Stopping node "minikube"  ...
šŸ›‘  Powering off "minikube" via SSH ...
šŸ›‘  1 node stopped.

minikube delete

Menghapus sepenuhnya VM Minikube dan semua status terkait yang terkait.

bash
$ minikube delete

šŸ”„  Deleting "minikube" in docker ...
šŸ”„  Deleting container "minikube" ...
šŸ”„  Removing /Users/ryuseikakujo/.minikube/machines/minikube ...
šŸ’€  Removed all traces of the "minikube" cluster.

Referensi

https://minikube.sigs.k8s.io/docs/start/
https://kubernetes.io/docs/reference/kubectl/

Ryusei Kakujo

researchgatelinkedingithub

Focusing on data science for mobility

Bench Press 100kg!