Edited at

k3s と MicroK8s の違いを考える

毎度、ググっても出てこない小ネタを取り扱っております。

本記事は個人的な見解であり、筆者の所属するいかなる団体にも関係ございません。

タイトルは釣りです。 タイトルを見てきていただいた方には大変申し訳ありませんが、k3sとMicroK8sは簡単に言うとトラックとバイクぐらいの違いがあります。

Kubernetesとの比較も考えると以下のような感じです。

image.png

バイクとトラックは用途も違いますし、特性も当然違います。違いを考えるのも変なのですが、Kubernetesライクな環境でとても特徴がある2つのプロダクトを比べてみたいと思ったので記事を書きました。


0. 前置き

軽量なKubernetesとして話題になっているRancher社が開発しているk3sというのがありますが、Canonical社もMicroK8sという軽量?Kubernetesを開発しています(Microとついているのだから通常のKubernetesよりは軽量であると判断しています)。どちらも、Minikubeのような仮想マシンを利用せずにKubernetesを動かすことができるものです。

どういう機能があり、どのように違うか比較してみました(検証途中であり間違いもあるかもしれませんが、お気づきの点がありましたらご指摘いただければと思います)


1. 用途


k3s

k3s - Lightweight Kubernetes | k3s

https://k3s.io/

k3sは、Rancher Labs社で開発されています。IoTなどのスモールデバイス向きとRancher社はしています。バイナリーサイズは、40MBとRaspberry Piのようにリソースの少ないデバイスでも動くところがポイントだと思います。Rancher社もEgdeコンピューティングやARMバイナリーで動くところを売りにしています。様々な機能が削られていますが、MasterとNodeで稼働し、本来のKubernetesとしての分散管理というところについてはしっかり残されています。


MicroK8s

MicroK8s - Fast, Light, Upstream Developer Kubernetes

https://microk8s.io/

microK8s は、Canonical社で開発されています。開発者の開発環境向きとCanonical社はしています。バイナリーサイズは小さくありません。k3sのようにリソースの削減というところには注力しておらず、ワンコマンドでKubernetesが実行環境を作ることができることを売りにしているようです。MasterとNodeという分散動作はせず、分散環境などの冗長性はありません。開発向けのシングルKubernetesを動かすことに特化していて、簡単にItsioやjaegerを有効にすることができます。そういう意味で、CI/CD用途であったり、簡単にデプロイできるところを狙っているようです。

用途
k3s
MicroK8s

IoT、エッジ

簡単インストール

開発環境向き


2. 稼働プラットフォーム


k3s

amd64とarmバイナリーが用意されています。

image.png

https://github.com/rancher/k3s/releases/tag/v0.2.0


MicroK8s

amd64とARMとppc64elバイナリーが用意されています。

(ただし、ppc64elはVersion 1.11.1まで)

image.png

https://snapcraft.io/microk8s

OSは、K3sについてはシングルバイナリーで、Ubuntu、RancherOS、CentOS等で動くことと思われます。MicroK8sは、Snapに対応しているOSであれば、Ubuntu、CentOSで動くと思います。

対応CPUアーキテクチャ
k3s
MicroK8s

amd64

arm64

ppc64el


3. 機能

どういう機能があるかについてもリストアップしてみます。

※注:このリストは最初に述べたとおり、そもそもk3sとMicroK8sの用途が違うものをリストアップしているので✕なのが良くないということではなく、それぞれに向き不向きがあり、どの分野に適しているかということを示していると思って下さい。

機能
k3s
MicroK8s

Docker組み込み(※1)

Kubernetes Master-Node分散

traefik組み込み

GPU対応

Kubernetesバージョン切り替え機能

ダッシュボード

Itsio組み込み

jaeger組み込み

fluentd組み込み

storage組み込み

fluentd組み込み

registry組み込み

ingress組み込み

dns組み込み

metrics-server組み込み

prometheus組み込み

registry組み込み

データストア
sqlite3(etcdも可)
etcd(シングル)

※1

この記述はあまり正確ではありません。k3sについてはDockerが組み込まれているというよりは、containerdが利用されているとした方がよいでしょう。MicroK8sは挙動を見ているとDockerが動いているように見えます。

★両方の組み込みDockerコマンドでどういうことまでできるか(例えばビルドする等)については追って調査したいと思っています


4. まとめ

k3sとMicroK8sは全く違うコンセプトであることがよく分かりました。

k3sは、現時点ではIoTやエッジコンピューティングの用途に向いていると思います。また、Rancherと連携が今後のキーポイントです。

MicroK8sは、様々なオプションをコマンド一つでオンオフできるので開発者環境として使うのに向いていると思います。Raspberry Piでも動くことは動くと思いますが、単体で動いてもあまり面白みはなさそうです。


5. 感想

Rancher Labs社もCanonical社もどちらも好きな会社です。

どちらのプロダクトにもDockerが組み込んであり、DockerのインストールやVirtualboxを必要としないなどコンテナーシステムにおける新しい地平線を見せてくれているように思います。

k3sは非常に面白いコンセプトで楽しいですが、MicroK8sも盛り上がってほしいですね。


6. リンク集

k3s も MicroK8sもあまり日本語の情報がないのでリンク集を作っておきます。

こんなところにも取り上げられているとか、こういう記述がある、等ありましたらお教え下さい。


k3s

Kubernetesをわずか40MBのシングルバイナリとして軽量かつシンプルにした新ディストリビューション「k3s」登場。Rancher Labsがオープンソースで公開 - Publickey

https://www.publickey1.jp/blog/19/kubernetes40mbk3srancher_labs.html

Rancher Labs、エッジ向けKubernetes軽量ディストリビューションOSSプロジェクト「k3s」を開始:「サイズ約40MBの単一バイナリ」 - @IT

https://www.atmarkit.co.jp/ait/articles/1902/27/news062.html

k3s カテゴリーの記事一覧 - 仮想化通信

https://tech.virtualtech.jp/archive/category/k3s

「k3s」の検索結果 - Qiita

https://qiita.com/search?q=k3s

IoT向けの軽量なKubernetes(?) k3sとはなにか - Qiita

https://qiita.com/inductor/items/1463cefb72296369b49f

k3s動かしてみた (1台構成) - Qiita

https://qiita.com/tukiyo3/items/2ba865042f270dd2b945


MicroK8s

MicroK8sを使ってみる - Qiita

https://qiita.com/niiku-y/items/e5285af4f12b1318cf4e

Kubernetes道場 2日目 - Kubernetesのローカル環境について - Toku's Blog

https://cstoku.io/posts/2018/k8sdojo-02/

microk8s を使って3分でローカル Kubernetes 環境を構築する – mhiro2 – Medium

https://medium.com/mhiro2/try-k8s-in-3minutes-with-microk8s-921d1e3ec6dc

第560回 microk8sでお手軽Kubernetes環境構築:Ubuntu Weekly Recipe|gihyo.jp … 技術評論社

https://gihyo.jp/admin/serial/01/ubuntu-recipe/0560?page=1