Trending keywords: security, cloud, container,

Minikube とは

SHARE:

本番環境グレードの複雑なクラスターを設定する手間をかけずに Kubernetes をテストしたいですか?もしそうなら、Minikube が最適なソリューションになります。このツールを使用すると、LinuxMacWindows の任意のシステムでローカルの Kubernetes 環境を簡単に構築し、Kubernetes のデプロイを実験およびテストできます。

この記事では、Minikube の仕組み、インストール方法、使用すべきケースとそうでないケースのヒントについて概説します。

Minikube とは

Minikube は、ローカル PC またはラップトップで Kubernetes 環境を設定するツールです。技術的には Kubernetes ディストリビューションですが、他のほとんどのディストリビューション(RancherOpenShiftEKS など)とは異なるタイプのユースケースに対応しているため、ディストリビューションではなくツールと一般に呼ばれています。

Minikube は、主要なオペレーティングシステム(WindowsLinuxmacOS)をすべてサポートしています(残念ながら、モバイルデバイスでは動作しません)。

Minikube と Kubernetes

Minikube Kubernetes 1 つのバージョンであるため、それらを 2 項対立的に考えるのはあまり意味がありませんが、次の図に示すように、Minikube と他のほとんどのバージョンの Kubernetes には重要な違いがあります: 

Minikube

他のほとんどの Kubernetes ディストリビューション

サポートされているオペレーティングシステム

LinuxWindowsmacOS

LinuxWindows はワーカーノードをホストできます)

デフォルトのクラスターサイズ

単一ノード

複数ノード

クラウドにデプロイできますか?

実際は実行できません(理論的には可能ですが、サポートされているユースケースではありません)。

はい

マネージドサービスとして利用できますか?

いいえ

はい(多くのディストリビューションに対応)

ストレージ処理

Minikube マシン内のローカルディレクトリ(デフォルト)

Container Storage InterfaceCSI)の使用(ほとんどの場合)

Minikube の仕組み

Minikube は、ローカルマシンに Kubernetes クラスターを設定することで機能します。デフォルトでは、1 ノード クラスターが作成されますが、以下で説明するように、必要に応じて Minikube 環境で複数ノードのクラスターを作成できます。

Minikube は、「ドライバー」の概念に基づく柔軟なデプロイモードをサポートしています。デプロイ用に選択したドライバーに応じて、1 つまたは複数のノードを次の方法のいずれかで実行できます: 

  • Docker コンテナ内。
  • 仮想マシン内。使用するホストのオペレーティングシステムに応じて、VirtualBoxKVMHyper-VParallels など、いくつかの 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/minikubeCode language: JavaScript (javascript)

主要なほとんどの Linux ディストリビューションでは、Minikube をインストールするための RPM または Debian パッケージも提供しています。

Windows でのインストール

Minikube Windows にインストールする最も簡単な方法は、インストーラをダウンロードして実行することです。必要に応じて、バイナリをダウンロードして、PowerShell を使用して設定することもできます: 

New - Item - Path 'c:\' -Name '
minikube ' -ItemType Directory -Force
Invoke - WebRequest - OutFile 'c:\minikube\minikube.exe' - Uri 'https://github.com/kubernetes/minikube/releases/latest/download/minikube-windows-amd64.exe' - UseBasicParsingCode 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/minikubeCode 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 は、ローカルシステムに軽量のコンテナ環境を設定する唯一の方法ではありません。MicroK8sK3sDocker Desktop にも Minikube と同様の機能がありますが、重要な違いがいくつかあります。

Minikube

MicroK8s

K3s

Docker デスクトップ

Kubernetes のサポート

はい

はい

はい

はい(デフォルトでは有効になっていません)

複数ノードのクラスターのサポート

利用可能ですが、大きな焦点ではない

完全サポート

完全サポート

可能ですが、コア製品を超える拡張機能が必要

主要な開発サポーター

Kubernetes プロジェクト

Canonical

Rancher

Docker

これらすべてのオプションの中で、Minikube は間違いなく設定とデプロイが最も簡単なツールの 1 つです。Minikube のドライバー型のデプロイモードを使用すると、クラスターを実際にどのように実行するかに関して、柔軟性を大幅に高めることもできます。一方、Minikube では、K3s などの代替製品ほど多くの高度な構成オプションをサポートしていません。

Minikube を使用するケースとそうでないケース

Minikube が最適なオプションであるかどうかは、いくつかの要因によって決まります。

最初の最も重要な要因は、本番環境の Kubernetes クラスターを実行する必要があるかどうか、それとも単にこのテクノロジを実験するだけかということです。前者の場合、Minikube は適切な選択ではありません。理論的には、サーバーに設定して実際の環境のアプリケーションを問題なくホストできますが、Minikube の本来の用途は、本番環境グレードのワークロードをホストすることではなく、テストと実験用です。

これは本番環境クラスターを設定する準備ができていない場合でも当てはまりますが、テストと実験が最終的な目標です。本番環境グレードのクラスターを管理できるようにしたい場合は、OpenShift Rancher など、本格的な Kubernetes ディストリビューションのホストされたサンドボックス環境を使用すると簡単に管理できます。これらの環境はクラウドでホストされているため、Minikube と同じくらい簡単に(おそらくはるかに簡単に)設定できますが、本番環境の機能の完全なセットが用意されているため、テスト環境から本番環境にも簡単に移行できます。

対照的に、Minikube では、ローカルマシンに設定した実験用クラスターを本番環境に変えることは現実的ではありません。本番環境に移行するには、別の Kubernetes ディストリビューションでゼロから始める必要があります。

考慮すべき 2 番目の質問は、複数ノードクラスターが必要かどうかです。Minikube では複数ノードを設定できますが、Minikube では、複雑な複数ノードのクラスターの実験のサポートではなく、単一ノードのクラスターを簡単かつ迅速に設定することに重点を置いています。

同様に、Minikube は基本的なイングレス構成をサポートしていますが、そのオプションは限られています。複雑なイングレスまたは一般に複雑なネットワーキングが必要な場合、Minikube は最良の選択ではありません。

まとめ

Minikube は、簡単な設定プロセス、柔軟なデプロイオプション、主要なすべてのオペレーティングシステムのサポートを備えた、Kubernetes の実験に役立つ便利で使いやすいツールです。本番環境グレードの Kubernetes ディストリビューションにはかないませんが、コンテナと Kubernetes を使い始めたばかりの人にとっては素晴らしいツールです。