Minikubeとは
Minikubeは、開発者が自分のマシン上でローカルに単一ノードのKubernetesクラスタを実行できるオープンソースのツールです。Minikubeは、開発者がKubernetesを学び、アプリケーションを開発・テストし、新機能を孤立した環境で試すことができるようにする簡素化された方法を提供します。また、ハードウェアリソースを大幅に必要とせずに行うことができます。
Minikubeは、個人のコンピュータ上の仮想マシン(VM)内で単一ノードクラスタを実行します。このVMには、APIサーバー、スケジューラ、etcdなど、Kubernetesの全ての必要なコンポーネントが含まれています。さらに、MinikubeはDNS、NodePorts、ConfigMaps、SecretsなどのさまざまなKubernetesの機能もサポートしています。
Minikubeの利点の一つは、使いやすさです。わずかなコマンドでKubernetesクラスタを設定し、デプロイし、リソースを管理することができます。また、リソースの管理にはkubectlのような一般的なKubernetesツールや、複雑なアプリケーションのデプロイにはHelmとのシームレスな統合も可能です。
もう一つの注目すべき機能は、Minikubeがローカルマシン上で本番に似た環境をエミュレートできることです。アドオンと設定を使用することで、本番のセットアップや制約を模倣することができます。これは、アプリケーションを実際のシナリオにデプロイする前にテストや検証を行う際に特に役立ちます。
Minikubeのインストール
MacOSを使用している場合、次のコマンドを実行してMinikubeをインストールできます。
$ brew install minikube
$ brew install kubectl
他のOSを使用している場合は、インストールについては次の公式ドキュメントを参照してください。
Minikubeとの基本的なやり取りのコマンド
Minikubeがインストールすると、さまざまなコマンドを使用してMinikubeとやり取りすることができます。
minikube start
仮想マシンを初期化し、その中に単一ノードのKubernetesクラスタをセットアップします。
$ 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
Minikubeマシンの状態とそのKubernetesおよびkubeconfigの状態を表示します。
$ minikube
minikube
type: Control Plane
host: Running
kubelet: Running
apiserver: Running
kubeconfig: Configured
minikube dashboard
このコマンドは、デフォルトのウェブブラウザでKubernetesダッシュボードを開き、クラスタと対話することができます。
$ 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 addons list
クラスタで有効または無効にできる全ての利用可能なアドオンをリスト表示します。
$ 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
クラスタに関する情報を取得します。
$ 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
クラスタの状態を確認します。
$ kubectl get componentstatus
NAME STATUS MESSAGE ERROR
controller-manager Healthy ok
etcd-0 Healthy {"health":"true","reason":""}
scheduler Healthy ok
kubectl get nodes
クラスタのノードのリストを表示します。
$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
minikube Ready control-plane 13m v1.26.3
minikube stop
このコマンドは実行中のMinikube VMを停止しますが、状態は保持して後で再開できます。
$ minikube stop
✋ Stopping node "minikube" ...
🛑 Powering off "minikube" via SSH ...
🛑 1 node stopped.
minikube delete
Minikube VMと関連する全ての状態を完全に削除します。
$ minikube delete
🔥 Deleting "minikube" in docker ...
🔥 Deleting container "minikube" ...
🔥 Removing /Users/ryuseikakujo/.minikube/machines/minikube ...
💀 Removed all traces of the "minikube" cluster.
参考