Kubernetes は GKE / EKS / AKS などで提供されているマネージドなサービスを使うのが楽ですが、課金もありますし開発時はローカルの環境が欲しくなります。
シングルノード構成のツールはオートスケーリングなどの機能が使えないという制約はあるものの、アプリの開発・動作確認環境としては十分使えます。マルチノード構成可能なツールもあります。
メジャーと思われるツールを比較してみました。
Docker Desktop
Docker Desktop for Mac and Windows | Docker
macOS と Windows で提供されている Docker を GUI で導入可能なソフトウェア。Docker が主で Kubernetes はオプションで有効化することで利用可能です。
macOS の場合は HyperKit が、Windows の場合は Hyper-V がノード用の仮想マシンとして使われます。Windows では VirtualBox との共存ができないという問題がありましたが、VirtualBox 6.0 以降 Hyper-V 対応されたので解消されていくものと思われます。
リリースごとに Kubernetes バージョンも上がっていきます。
Minikube
GitHub - kubernetes/minikube: Run Kubernetes locally
定番のローカル Kubernetes 環境です。ノードの仮想マシンとして HyperVisor を利用可能な他、VirtualBox や Docker を指定することもできます。
kubeadm を内部的に利用しているため、Kubernetes バージョンの設定も可能です。
Dashboard や EFK など多くの機能がアドオンとして有効化可能です。
Windows / macOS / Linux 全てのプラットフォームをサポートしています。
MicroK8s
MicroK8s - Fast, Light, Upstream Developer Kubernetes
Ubuntu の Canonical が提供する Kubernetes パッケージ。APT ではなく Snap パッケージとして、Ubuntu 以外の Linux ディストリビューションでも利用可能です。
KVM などの HpyerVisor は利用していません。
microk8s.kubectl などコマンドにプレフィクスが付いていますが、snap alias microk8s.kubectl kubectl
と snap コマンドで alias 指定すれば標準コマンドと同じように使えます。
アドオンで多くのパッケージが簡単に利用できるようになっています。
macOS / Windows では Multipass で仮想マシンを使って動かす方法がガイドされています。
Multipass - Orchestrates virtual Ubuntu instances
インストールオプションで kubernetes バージョンを指定可能です。Minikube のようにクラスター作成時に指定はできないのですが、インストール・アンインストールが簡単なので、あまり環境を切り替える必要がないのであれば十分でしょう。
マルチノードにも対応しています(自前で MicroK8s をインストールしたマシンか VM を用意する必要があります)。
Multi-node MicroK8s | MicroK8s
Ubuntu 19.10 では MicroK8s のサポートが厚くなり、セキュア環境構築が楽になる他エッジ環境でも動作するようになるようです。
開発環境だけでなく実行環境としても普及を目指しているようです。当然 WSL2 でもサポートされると思われるので、今後ユーザーが増えていくかもしれません。
kind
GitHub - kubernetes-sigs/kind: Kubernetes IN Docker - local clusters for testing Kubernetes
Docker コンテナをノードとして利用し、マルチノードの環境を簡単に構築できることが特徴です。この特性を活かして CI 環境でマルチノードでしかできないテストケースを実行することもできます。マルチノードの指定は起動オプションで簡単にできます。
内部的に kubeadm を利用しているので、Kubernetes バージョンの指定も可能です。
Windows / macOS / Linux 全てサポートしているのに加え、kind は積極的に WSL2 対応をしています。
まとめ
以上、各ツールの特徴でした。最後に比較表です。
Docker Desktop | Minikube | MicroK8s | kind | |
---|---|---|---|---|
Use HyperVisor | ◯ | ◯ | ||
Select K8s version | ◯ | △※1 | ◯ | |
Multi node | △※2 | ◯ | ||
Support addons | ◯ | ◯ | ||
Linux | ◯ | ◯ | ◯ | |
Windows | ◯ | ◯ | △※3 | ◯ |
macOS | ◯ | ◯ | △※3 | ◯ |
- ※1:インストール時のみ可能
- ※2:Worker ノードの事前準備が必要
- ※3:Multipass で利用可能
個人的には Docker Desktop と Minikube を併用し、Docker Desktop の Kubernetes は無効化しておくのが使いやすいかなと思っています。