Rancher Labsが新しいオープンソースプロジェクトのk3sを発表した。エッジやIoTロケーション,電話や製造システムといった,リソースの制限された環境での運用のために最適化された,軽量なKubernetesディストリビューションだ。
創業者のひとりでチーフアーキテクトのDarren Shepherd氏は,例えばARMチップとIoTプラットフォームによる(ネットワーク)エッジでの運用や,クラスタの初期化時間と停止時間を最小化する必要のある継続的インテグレーションシステムなどを想定して,この新しいオーケストレーションフレームワークを構築した,とローンチ発表のブログ記事に述べている。名称である"k3s"は,Kubernetesの一般的な省略名である"k8s"を捩ったもので,k3sのGitHubリポジトリには,"k8sより5つ少ない"プロジェクトなのだ,という説明がある。
k3sの開発は,同社が昨年開発を開始した試験的な"ユーザ指向のエンドツーエンド・コンテナソリューション"である,Rioのコンポーネントとして始められた。Rioはまだ早期プレビューが公開されているのみだが,機能概要とツールが同プロジェクトのGitHubリポジトリで公開されている。現在はコンテナランタイムとオーケストレーション,ネットワーク,サービスメッシュ,監視,その他いくつかのコンポーネントが提供中である。Shepherd氏は,Rancher Labsのチームは"エッジにおけるKubernetesへの真の需要とk3s自体の成長を鑑みて,[k3sを]Rioから取り出して,独立したオープンソースプロジェクトにする"ことを決定した,と説明している。
k3sは約40MBのサイズの単一バイナリにパッケージされており,プロジェクトのWebサイトによれば,オーケストレータの実行に必要なRAMはわずか512MBである。ひとつのバイナリに,"コンテナランタイムと,iptables,socat,duなどの重要なホストユーティリティを含む,Kubernetesの実行に必要なすべてが含まれている"。
k3sでは,Kubernetesのコアコンポーネント -- kube-apiserver, kube-controller-manager, kube-scheduler, kubelet, kube-proxy -- がバンドルされていて,"シンプルなサーバ・アンド・エージェントモデル"を形成するプロセスに組み上げられている。k3sを実行するとKubernetesサーバが起動し,ローカルホストがエージェントとして自動的に登録される。これによって1ノードのKubernetesクラスタが立ち上がるので,他のノードをCLI経由で簡単に追加することが可能になる。
デフォルトのk3sパッケージでは,コンテナランタイムのcontainerd,ネットワークオーバーレイ実装のFlannel,CoreDNSによるDNSサポート,Traefik Ingress Controller,ホストポートベースの簡単なサービスロードバランサも動作する。これらのコンポーネントはすべてオプションであり,"自身で選択した実装と交換できる",とShepherd氏は述べている。これらのコンポーネントを含めることにより,"フル装備のCNCF準拠クラスタをデプロイして,アプリをすぐに起動することが可能になっている"。
Hacker News上のコメントの一部は,Kubernetesエコシステム内に異なる機能やフラグメンテーションを生み出すのではないか,という考えから,新たなKubernetesディストリビューションが増えることに当初は懐疑的だった。しかしながら,いくつかのリプライ(CNCFエグゼクティブディレクタのDan Kohn氏のリプライを含む)やRancher Labsのブログ記事のフォローアップからは,k3sが認定Kuberenetsディストリビューションであり,他の認定ディストリビューションとの間で,Kubernetesワークロードの完全な可搬性のあることが確認できる。
小規模デバイスにKubernetesを搭載しようとした初のプロジェクトでないことは事実ですが,運用環境向けに設計され,CNCFの完全な認定を受けたのはk3sが始めてです。
https://k3s.ioによると,k3sは現在,x86_64,ARMv7,ARM64で動作する。Ben Hall,Sebastiaan van Steenis両氏が,このオーケストレータをローカルにインストールせずに試してみたいオペレータ向けに,Katacodaチュートリアルを用意している。