Minikube とは?概要と使い方を解説
Kubernetesをテストする際、本番環境グレードの複雑なクラスターを設定する手間を省きたいなら、Minikube が最適です。
Linux、Mac、Windowsの任意のシステムでローカル環境を簡単に構築できるうえ、Kubernetesのデプロイを手軽にテストしやすいソリューションとなります。
この記事では、Minikube の仕組み、インストール方法などの基本を解説しましょう。
関 連 記 事
Kubernetesとは? | Kubernetesセキュリティ の基礎 | Kubernetesアーキテクチャの 設計方法 |
AWSのEKS (Elastic Kubernetes Service) | Kubernetesの クラスターとは? | Kubernetes のノードとは? |
KubernetesのPodとは? | KubernetesのHelmとは? | クラウドセキュリティと ランタイムインサイト |
Minikube とは
Minikubeとは、ローカル PC またはラップトップで Kubernetes 環境を設定するツールです。読み方は「ミニクベ」もしくは「ミニクーベ」が一般的となります。
技術的には Kubernetesのディストリビューションですが、他の類似システム(Rancher、OpenShift、EKS など)とは異なるタイプの事例に対応するため、ディストリビューションではなくツールと呼ばれることが多いです。
Minikube は、主要なオペレーティングシステム(Windows、Linux、macOS)をすべてサポートしています。ただし、モバイルデバイスでは動作しません)。
Minikube と Kubernetesの違い
Minikube は Kubernetes の 1 つのバージョンでですが、他の多くのKubernetesと明確な違いがあります。以下は項目ごとに違いをまとめた図です。
Minikube |
他のほとんどの Kubernetes ディストリビューション | |
サポートされているオペレーティングシステム |
Linux、Windows、macOS |
Linux(Windows はワーカーノードをホストできます) |
デフォルトのクラスターサイズ |
単一ノード |
複数ノード |
クラウドにデプロイできますか? |
実際は実行できません(理論的には可能ですが、サポートされているユースケースではありません)。 |
はい |
マネージドサービスとして利用できますか? |
いいえ |
はい(多くのディストリビューションに対応) |
ストレージ処理 |
Minikube マシン内のローカルディレクトリ(デフォルト) |
Container Storage Interface(CSI)の使用(ほとんどの場合) |
Minikube の仕組み
Minikube は、ローカルマシンに Kubernetes クラスターを設定することで機能します。デフォルトでは、1 ノード クラスターが作成されますが、以下で説明するように、必要に応じて Minikube 環境で複数ノードのクラスターを作成できます。
Minikube は、「ドライバー」の概念に基づく柔軟なデプロイモードをサポートしています。デプロイ用に選択したドライバーに応じて、1 つまたは複数のノードを次の方法のいずれかで実行できます:
- Docker コンテナ内
- 仮想マシン内。使用するホストのオペレーティングシステムに応じて、VirtualBox、KVM、Hyper-V、Parallels など、いくつかの VM プラットフォームがサポートされます
- ホスト OS でサポートされている場合は、ベアメタルで直接実行
インストールに使用できるドライバーは、Minikube の実行に使用しているシステムによって異なります。たとえば、Hyper-V は Windows のみをサポートするため、Windows でのみ Hyper-V VM を使用できます。同様に、Kubernetes マスターノードは Linux システムでのみネイティブに実行できるため、ベアメタルドライバーオプションは Linux でのみサポートされます。
どのドライバーを選択するかは、Minikube に求めるパフォーマンスと分離のレベルによって異なります。Minikube をベアメタルにデプロイすると、最高のパフォーマンスが得られます。コンテナ内にデプロイすると、2 番目に最適なレベルのパフォーマンスが得られます。VM にデプロイすると、最低レベルのパフォーマンスしか得られませんが、Minikube 環境がホストシステムから厳密に分離されるという利点があります。
Minikube のインストール方法
Minikube のインストール方法は、ホストに使用しているオペレーティングシステムと、選択したドライバーオプションによって異なりますが、ほとんどの場合、Minikube のインストールと起動は、インストーラを使用するか、インストーラスクリプトをダウンロードしてシステムで実行するのと同じくらい簡単です。
Linux でのインストール
ほとんどの Linux システムでは、次のコマンドを実行して Minikube をインストールできます:
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube
Code language: JavaScript (javascript)
主要なほとんどの Linux ディストリビューションでは、Minikube をインストールするための RPM または Debian パッケージも提供しています。
Windows でのインストール
Minikube を Windows にインストールする最も簡単な方法は、インストーラをダウンロードして実行することです。必要に応じて、バイナリをダウンロードして、PowerShell を使用して設定することもできます:
New - Item - Path 'c:' -Name '
minikube ' -ItemType Directory -Force
Invoke - WebRequest - OutFile 'c:minikubeminikube.exe' - Uri 'https://github.com/kubernetes/minikube/releases/latest/download/minikube-windows-amd64.exe' - UseBasicParsing
Code language: PHP (php)
macOS でのインストール
Mac では、次のコマンドを実行して Minikube をインストールします:
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-darwin-amd64
sudo install minikube-darwin-amd64 /usr/local/bin/minikube
Code language: JavaScript (javascript)
Homebrew 経由で Minikube をインストールすることもできます。
Minikube の使用方法
Minikube をインストールしたら、次の簡単なコマンドを実行して起動します:
minikube start
これにより、minikube コマンドのプレフィックスが付いた標準の kubectl コマンドを使用して、クラスターを操作できます。例:
minikube kubectl cluster-info
または、Minikube ノードに SSH 接続し、そこから kubectl を直接実行することもできます。
Minikube ダッシュボード
ほとんどのディストリビューションと同様に、Minikube はネイティブの Web ベースの Kubernetes ダッシュボードをサポートしていますが、デフォルトでは有効になっていません。ダッシュボードを有効にするには、次のコマンドを実行します:
minikube dashboard
このコマンドでは、Kubernetes ダッシュボードを表示するデフォルトの Web ブラウザのページも開きます。
Minikube 用イングレスの管理
デフォルトでは、Minikube はイングレスコントローラを提供していません。Kubernetes 機能の基本的な実験では、イングレスは実際には必要ありません。Minikube を使用すると、イングレスを設定せずに、Pod 作成などの練習を行うことができます。
ただし、実際の環境のアプリケーションがどのように動作するかをテストする場合、ほとんどの場合、イングレスが必要になります。これは、イングレスが、それらのアプリケーションが本番環境のクラスターで実行されている場合のネットワーキングの状態をシミュレートするのに役立つためです。
幸いなことに、Minikube にはイングレスコントローラを簡単にインストールできるアドオンが用意されています。これは、次の簡単なコマンドで実行できます:
minikube addons enable ingress
これにより、Minikube 環境用の NGINX ベースのイングレスコントローラが作成されます。
Minikube では、複雑なイングレス構成をサポートしていません。高度なネットワーキング設定をテストするには、本格的な複雑な Kubernetes ディストリビューションが必要です。ただし、基本的なアプリケーションのテストには、Minikube とその NGINX イングレスアドオンで十分なはずです。
複数ノードの Minikube
前述のように、Minikube ではデフォルトで単一ノードの Kubernetes クラスターを実行します。Kubernetes 内で複数のノードを管理して実験する場合は、代わりに複数ノードのクラスターを設定することをお勧めします。
Minikube の起動時に –nodes フラグを使用すると、これを簡単に設定できます。たとえば、2 つのノードでクラスターを作成するには、次のコマンドを実行します:
minikube start --nodes 2 -p multinode-demo
Minikube の代替製品
Minikube は、ローカルシステムに軽量のコンテナ環境を設定する唯一の方法ではありません。MicroK8s、K3s、Docker Desktop にも Minikube と同様の機能がありますが、重要な違いがいくつかあります。
Minikube |
MicroK8s |
K3s |
Docker デスクトップ | |
Kubernetes のサポート |
はい |
はい |
はい |
はい(デフォルトでは有効になっていません) |
複数ノードのクラスターのサポート |
利用可能ですが、大きな焦点ではない |
完全サポート |
完全サポート |
可能ですが、コア製品を超える拡張機能が必要 |
主要な開発サポーター |
Kubernetes プロジェクト |
Canonical |
Rancher |
Docker |
これらすべてのオプションの中で、Minikube は間違いなく設定とデプロイが最も簡単なツールの 1 つです。Minikube のドライバー型のデプロイモードを使用すると、クラスターを実際にどのように実行するかに関して、柔軟性を大幅に高めることもできます。一方、Minikube では、K3s などの代替製品ほど多くの高度な構成オプションをサポートしていません。
Minikube が向いている場合
Minikube が向いているかどうかを確認するには、いくつかのポイントを押さえましょう。
最初にチェックしたいのは、「本番環境の Kubernetes クラスターを実行する必要があるかどうか」、それとも「単にこのテクノロジを実験するだけか」ということです。前者の場合、Minikube は適切な選択ではありません。理論的にはサーバーに設定して実際の環境のアプリケーションを問題なくホストできますが、本来の用途はテストと実験用です。本番環境グレードのワークロードのホストではありません。
本番環境グレードのクラスターを管理できるようにしたい場合は、OpenShiftやRancherなど、本格的な Kubernetes ディストリビューションのホストされたサンドボックス環境を使用すると簡単に管理できる傾向にあります。これらの環境はクラウドでホストされているため、Minikubeよりも手軽に設定可能です。さらに本番環境の機能の完全なセットが用意されているため、テスト環境から本番環境にも簡単に移行できます。
対してMinikube では、ローカルマシンに設定した実験用クラスターを本番環境に変えることは現実的ではありません。本番環境に移行するには、別の Kubernetes ディストリビューションでゼロから始める必要があります。
また、「複数ノードクラスターが必要かどうか」も確認しましょう。Minikube では複数ノードを設定できますが、それよりも単一ノードのクラスターを簡単かつ迅速に設定することに重点を置いています。基本的なイングレス構成もサポートしていますが、そのオプションは限られています。複雑なイングレスまたは一般に複雑なネットワーキングが必要な場合、Minikubeは向いていません。
まとめ
Minikube は、簡単な設定プロセス、柔軟なデプロイオプション、主要なすべてのオペレーティングシステムのサポートを備えた、Kubernetes の実験に役立つ便利で使いやすいツールです。
機能面では、本番環境グレードのディストリビューションほど充実はしていません。ですが、手軽さの面で優れていることから、特にコンテナやKubernetesを使い始めたばかりの人にとっては最適な選択肢となることが多いでしょう。