Kubernetes環境を構築するツールの比較

インフラ技術者の雑記

インフラ技術者の雑記

個人あるいはチームの検証環境用にKubernetesを構築する際に、便利な環境構築ツールがあります。
本ブログではMinikube、K3s、K0s、MicroK8sの4つを取り上げ、それぞれの特性を比較した結果や、実際に操作して感じた部分について説明します。

1.Kubernetes環境構築ツールとは

KubernetesはK8sとも呼ばれる、OSSのコンテナ管理ソフトウェアです。

そしてKubernetesを簡単に構築できるツールが、一般的にKubernetesディストリビューションと呼ばれる環境構築ツールです。

2.各種ツール(Kubernetesディストリビューション)

minikube

Kubernetesコミュニティからリリースされている軽量ディストリビューションで、主にKubernetesの検証や練習用に使われることが想定されています。
なお、Kubernetesのほぼすべての機能が試せます。

K3s

Rancher Labsがリリースしているディストリビューションです。
Raspberry PiといったIoT機器など、リソースが限られている環境で動作することを目指して作られています。

K0s

Mirantis社がリリースしているディストリビューションです。
シングルノードからマルチノードまで様々なユースケースに対応します。

MicroK8s

Canonical社がリリースしているディストリビューションです。
軽量かつプロダクション環境で求められる高可用性も追及しています。

3.ドキュメントベースでの比較

以下の項目をもとに比較しました。

人気:GitHubのスター数
軽さ:動作する最小要件のCPUとメモリ
メンテナー:メンテナンスしている会社の規模
インストールしやすさ:チュートリアルの長さ、コマンドの数

Kubernetesツール 人気 軽さ(CPU) 軽さ(メモリ) メンテナー インストールしやすさ
Minikube 26.8K 2CPU 2GB Kubernetesコミュニティ 実行するコマンドは2つ
K3s 23.4K 1CPU 512MB Rancher Labs 実行するコマンドは1つ
K0s 1.1K 1CPU 1GB Mirantis 実行するコマンドは2つ
MicroK8s 7.4K 公表されていない 540MB Canonical 実行するコマンドは1つ

表を見ると、KubernetesコミュニティのMinikubeとRancher Labs のK3sがGitHubスター数において他よりも倍以上多く、人気のディストリビューションであると思われます。

なお、MicroK8sのサイトでもMicroK8sとK3s、minikubeを比較した結果が公開されています。

■MicroK8s公式サイト:MicroK8s vs K3s vs minikube

4.実際に構築してみる

今回はMinikube、MicroK8sを構築し、Kubernetesを実際に動かしてみます。
最後にドキュメントベースでの比較ではなく、動かしてみた際の比較を行います。

構築手順

今回はUbuntu上に構築しました。
詳細な構築手順は各公式ドキュメントに記載されているため割愛します。

Minikube

Dockerのインストール
ユーザーの作成
プロキシ環境下の場合はプロキシの設定
minikubeのインストール
minikubeのスタート

curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube

MicroK8s

Microk8sのインストール
ユーザーの設定

sudo snap install microk8s –classic –channel=1.27
https://microk8s.io/docs/getting-started

5.実際に構築した後の比較

インストールしやすさ

どちらのディストリビューションも、公式ドキュメントに記載されている手順通りに進めることで正常にインストールできました。

MinikubeはあらかじめUbuntuにDockerをインストールする必要があります。
一方で、Microk8sはsnapdというパッケージ管理ツールが依存関係を解消してくれるため、より簡単にインストールできました。

Microk8sはsnapdというモダンなパッケージ管理ツールを使うため、snapdが使えない環境だとインストールできません。
ただ、WindowsやMac用のインストーラーもあります。

運用しやすさ

個人の環境として使うだけならminikubeで十分な印象でした。
自分の端末上にminikubeをインストールしておき、必要なときに必要なKubernetesバージョンを作ります。

複数人が開発環境として使うならMicrok8sを選定すると良いと感じました。
マルチノードにできるため拡張が容易で、複数人が色々なアプリケーションを動作させてもストレスなく動作できる環境を作れると思います。

マルチノード

どちらも可能です。
minikubeの場合は同じ環境上に仮想マシンやコンテナを複数起動することで実現しています。
Kubernetes向けのアプリを開発したり、検証したりする用途では十分でしょう。

Microk8sは別々の環境にノードを作成できます。
この点がプロダクション用途にも使えるよう設計されている点の一つだと考えます。

コマンドの操作

Microk8sはデフォルトで補完機能が優秀です。
microk8s kubectl として、tabキーで後に続くオプションを表示させられます。
microk8s kubectl pod とすれば、そのあとにPodの名前も補完してくれます。

Minikubeも通常のkubectlと同様に、bash_profileなどへ追加の設定を行えば同様の補完が可能です。

Microk8sとMinikubeどちらも、microk8s kubectl や minikube kubectl としなければならず、通常のkubectlとは違います。
ただ、Linuxの場合はエイリアスを設定することで、大した問題にはならないでしょう。

6. おわりに

このブログでは環境を構築するツールについて紹介しました。
Kubernetesを使用した環境を自社で導入したい、運用していきたいなどのご要望がございましたら、ぜひお気軽にシステムエグゼへお問い合わせください。