TT Lab
ブログ

한국어 English 日本語 中文

はじめる
ブログ

ブログ

k3s・RKE2・k0sの選び方:リソース数値、状況別表、決定フロー

ステータス:ドラフト(2026-10-13)、公式ドキュメント・リリース情報基準 + 一部実測。 サイズはGitHubリリースのファイル情報(2026-10-13取得)、要件は公式ドキュメント(2026-10-13閲覧)、準備時間はTT Labの実習VMの実測値です。 3つのディストリビューションのメモリ使用量を同一条件で測定した値はありません(未測定)。 決定フローは上記の内容に基づく筆者の判断です。 作成ルール:実測データが基本であり、測定できなかったものは「未測定」、ドキュメントから見つからなかったものは「未確認」と表示します。

目次

1. リソース:何を測定し、何を測定できなかったか

「k3sは軽い」という言葉はよく耳にしますが、どの数値を指しているのかを区別する必要があります。バイナリサイズ、転送すべきイメージの量、ドキュメントが要求する最小メモリ、実際に使用するメモリは、すべて異なる数値です。

ダウンロードサイズ(GitHubリリースファイル情報、amd64)

k3s v1.37.1+k3s1 RKE2 v1.37.1+rke2r1 k0s v1.36.4+k0s.1
バイナリ 77.8 MiB 137.1 MiB(tar.gzで41.1 MiB) 251.1 MiB
バイナリに含まれるもの すべて(containerdを含む) 監督プロセスのみ、残りはイメージ すべて(etcdを含む)
エアギャップイメージバンドル 185.4 MiB(zst) コア 558.8 MiB + canal 227.7 MiB(zst)、全体バンドルは 787.1 MiB 402.4 MiB

ファイルをダウンロードせず、GitHub APIのリリースファイル情報(サイズ)のみを読み取った値です(2026-10-13)。バイナリだけで比較するとk3sが最も小さく、k0sが最も大きくなります。しかし、RKE2のバイナリは監督のみを行い、残りをイメージとして受け取るため、 エアギャップでの転送量で見るとRKE2が最も重くなります。

ドキュメントの表記はそれぞれ異なります。docs.k3s.ioとREADMEではk3sバイナリを100MB未満、k3s.ioホームページでは70MB未満と記載しています。実際のv1.37.1ファイルは77.8 MiB(81.5MB)であり、前者の表記と一致します。RKE2とk0sにはドキュメントにサイズ数値がありませんでした(未確認)。

TT Labの実習VMで直接確認したサイズもあります。k0sバイナリは251MBであり(実測、2026-08、上記のリリース情報と同じサイズ)、RKE2 v1.36.4のインストールスクリプトが展開したインストール物は128Mでした(実測)。k3sは実習でサイズを個別に記録していませんでした(未測定)。

ドキュメントが要求する最小スペック(公式ドキュメント基準、未測定)

k3s RKE2 k0s
サーバー(コントローラー) 2コア・2GB 2コア・4GB(推奨4コア・8GB) 1 vCPU・1GB
エージェント(ワーカー) 1コア・512MB サーバーとは別に記載なし 1 vCPU・0.5GB
1つのノードに両方 — — 1 vCPU・1GB
ディスク SSD推奨、数値なし SSD推奨、数値なし コントローラー約0.5GB、ワーカー約1.3GB、両方で約1.7GB使用

ワークロードにかかるリソースはすべて除外された値です。k0sが最も小さく見えるのは、コントローラーにkubeletとランタイムがないためでもあります。同じ役割同士で比較してこそ公平です。

公式の測定値を公開しているのはk3sのみです。k3sドキュメントのリソースプロファイリング(v1.26.5、パッケージコンポーネントすべて + Prometheus・Grafana + サンプルアプリ、正常状態の95パーセンタイル)によると、x86 4コアサーバーでエージェントが1台接続されたクラスターのサーバーが1,428M(SQLite)・1,450M(etcd)、エージェントが275Mでした。監視ツールまで導入した条件であるため、「k3s独自のメモリ」として読み取ってはいけません。RKE2はノードサイズの案内(2コア・4GBサーバーがエージェント225台まで、v1.27.4基準)はあるものの、アイドル時の使用量はなく、k0sも測定値はありませんでした。

実測:準備時間

k3s k0s RKE2
VMを作成し、ノードがReadyになるまで 82秒(Traefik無効) 約150秒 記録なし(未測定)
インストールスクリプト → ノードReady インストール8秒・Ready 11秒(v1.35.8) 記録なし 記録なし

TT LabのVM実習の準備時間です。前の行はVMの起動とインターネットからのダウンロード時間を含んでいるため、ディストリビューション自体の速度というよりは「1つの実習を開くまでの」体感時間です。k0sはetcdを使用する --enable-worker 構成であるため、SQLiteで起動するk3sとは条件が同じではありません。

3つのディストリビューションを同一条件で測定するには

メモリとディスクを同一条件で比較した実測値はまだありません。測定するには、同じサイズのVM 3台に3つのディストリビューションをそれぞれデフォルト値で構築し、アイドル状態でサービスcgroupのメモリとディスク使用量を数回測定して中央値を使用する必要があります。この際、バイナリとイメージ(上記の表のサイズ分)を再度ダウンロードする必要があるため、次のバージョンで実測値に変更する予定です。

2. 状況別に見る

状況 最初に確認するもの 理由
エッジ・IoT・ARMボード、単一ノード k3s バイナリが最も小さく、エージェント最小512MB、SQLiteによりetcdなしで開始
開発用PC、CI用の使い捨てクラスター k3s インストール直後にイングレス・LB・ストレージがすべて揃っており、すぐに使える
規制産業(公共・金融)、監査対応 RKE2 profile: cis、FIPS 140-2ビルド、SELinuxポリシー
最初からetcdを使用し、kubeadmに似た構成 RKE2 静的ポッドのためkubeadmの経験がそのまま通用する
1つのバイナリで運用し、構成は自分で選ぶ k0s デフォルトが空であり、コントローラーがワークロードと分離されている
複数のホストを1つの設定ファイルで k0s k0sctlがSSHでインストール・参加を行い、autopilotがアップグレードを行う
Rancherで複数のクラスターを1つの画面で管理 k3sまたはRKE2 Rancherが両方をプロビジョニングおよび管理する
CKAの勉強、標準をそのまま学ぶ kubeadm 試験で問われる静的ポッドやetcdのバックアップがそのまま通用する

最後の行はこの記事の3つではありませんが、よくある質問のため追加しました。k3sはデフォルトのストレージがSQLiteであり、コントロールプレーンが1つのプロセスであるため、試験で問われる「etcdのバックアップ」や「静的ポッドの修正」がそのまま通用しません。

3. 決定フロー

위에서부터 묻고, 처음 「예」가 나온 곳에서 멈춘다 새 클러스터를 세운다 ① 규정 준수를 증명해야 하나? FIPS 140 암호 모듈, CIS 벤치마크, 정부·금융 감사 예 RKE2 보안 강화가 한 줄 아니오 ② 노드가 작거나, 빨리 떠야 하나? 엣지·IoT·단일 노드, 개발 PC, CI 의 일회용 클러스터 예 k3s 기본이 다 들어 있다 아니오 ③ 구성을 직접 고르고 싶나? 컨트롤 플레인을 워커와 떼어 두고, CNI·인그레스는 내가 정한다 예 k0s 기본이 비어 있다 아니오 ④ Rancher 로 여러 클러스터를 관리? 한 화면에서 만들고 올리고 지운다 예 k3s · RKE2 무게에 따라 둘 중 하나 아니오 셋 다 맞는다 — 팀이 익숙한 쪽, 또는 시험(CKA)·표준 그대로 배우기가 목적이면 kubeadm 관리 부담을 줄이고 싶으면 관리형(EKS·GKE·AKS) 순서는 「바꾸기 어려운 조건」부터다. 규정은 협상이 안 되고, 하드웨어는 사야 바뀐다.
図:k3s・RKE2・k0sを選ぶ決定フロー

質問の順番が重要です。 変更しにくい条件から 尋ねます。コンプライアンスは交渉できませんし、ハードウェアは新しく購入しなければ変わりません。一方、「構成を自分で選びたい」というのは好みであるため、k3sでも --disable でデフォルトのコンポーネントを無効化し、希望のものを導入することで大部分に対応できます。

このフローは筆者の整理によるものです。チームがすでに特定のディストリビューションに慣れている場合、その経験の方が上記の差異よりも重要である場合があります。

4. 移行時の課題

例えば、開発にはk3sを、本番環境にはRKE2を分けて使用する場合、同じマニフェストが両方のディストリビューションを行き来する必要があります。この際に直面しやすい課題が4つあります。1番と4番は実習で直接経験したものであり、2番と3番はデフォルト値の表(パート1のセクション5)に現れる差異です。

  1. 帯域。 k3s・RKE2は10.42/10.43、k0sは10.244/10.96です。ネスト環境や社内ネットワークと重複していないかを最初に見積もります(パート1のセクション6)。
  2. イングレスクラス。 k3sはTraefik、RKE2は作成されたバージョンに応じてTraefikまたはingress-nginx、k0sはなしです。アノテーションがコントローラーごとに異なるため、マニフェストでGateway APIやクラスター名を値として受け取れるようにしておくと、移行コストが削減されます。
  3. ストレージクラス。 k3sの local-path はRKE2・k0sにはありません。マニフェストに名前をハードコーディングすると、PVCがPendingの状態で停止します。
  4. ポッドセキュリティ。 k3s・k0sのデフォルトで起動していた特権ポッドが、cisプロファイルのRKE2では拒否されます。ただし、すでに起動しているポッドは実行続けられるため、次回のデプロイ時に初めて表面化します(パート2のセクション3)。

5. TT Labでは

TT Labの実習サービス自体は、kubeadmで構築したKubernetes(v1.34系)上で稼働しています。そして、コースのVM実習内でk3s、k0s、RKE2を直接構築します。このシリーズの「実測値」はすべてその実習VMから得られたものです。

同じ内容をご自身で試してみたい場合は、TT Labの 「Kubernetesディストリビューション — ゼロからの構築」 コースを探してみてください(サイトのコース一覧から「ディストリビューション」で検索)。この記事に関連するモジュールは以下の通りです。

ティティの一言。 軽いからといって常にk3s、安全だからといって常にRKE2とは限りません。「後から変更するのが一番難しいのは何か?」から問いかけると、すぐに答えが出ます。また、数値を見る時はそれがバイナリサイズなのか、最小スペックなのか、実際に測定されたメモリなのかを必ず確認してください。

参考

すべての資料は2026-10-13に閲覧・取得しました。

ログインするといいねできます

コメント

まだコメントはありません。

ログインするとコメントできます