状态:草稿(2026-10-13),基于官方文档与发布信息 + 部分实测。 大小基于 GitHub Release 的文件信息(2026-10-13 查询),需求基于官方文档(2026-10-13 查阅),准备时间为 TT Lab 实验 VM 的实测数据。 尚无在相同条件下测量三个发行版内存使用量的数据(未实测)。 决策流程是基于上述事实作出的作者判断。 编写规则:实测数据作为基础,未测出的标记为“未实测”,文档中未找到的标记为“未确认”。
目录
1. 资源:测了什么,没测什么
我们经常听到“k3s 很轻量”这种说法,但必须区分这指的是哪个数字。二进制文件大小、需要传输的镜像量、文档要求的最低内存以及实际使用的内存,这些全是不同的数字。
下载大小(GitHub Release 文件信息,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) | core 558.8 MiB + canal 227.7 MiB (zst),完整包为 787.1 MiB | 402.4 MiB |
这是在不下载文件的情况下,仅读取 GitHub API 的 Release 文件信息(大小)得到的值(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,与上述 Release 信息大小相同),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 vCPU · 1GB |
| 磁盘 | 建议使用 SSD,无具体数值 | 建议使用 SSD,无具体数值 | 控制器约 0.5GB,工作节点约 1.3GB,二者合计约使用 1.7GB |
以上数值均去掉了工作负载所需的资源。k0s 看起来最小,部分原因也是因为其控制器上没有 kubelet 和运行时。只有在比较相同角色时才是公平的。
只有 k3s 给出了官方测量值。根据 k3s 文档中的资源性能分析(v1.26.5,包含所有打包组件 + Prometheus·Grafana + 示例应用,正常状态下的 95 百分位),在 x86 4核服务器上,挂载一个代理的集群中,服务器为 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 启动和从互联网下载的时间,与其说是发行版本身的速度,不如说是“直到打开一个实验”时的体感时间。k0s 是使用 etcd 的架构, --enable-worker 其条件与通过 SQLite 启动的 k3s 不尽相同。
如何在相同条件下测量三个发行版
目前还没有在相同条件下对内存和磁盘进行比较的实测。若要进行测量,需要在三台相同大小的 VM 上分别以默认值安装这三个发行版,并在空闲状态下多次测量服务 cgroup 的内存和磁盘使用量,然后取中位数。由于此时必须重新下载二进制文件和镜像(如上表大小),我们计划在下一版本中将其更改为实测数据。
2. 按场景分类查看
| 场景 | 优先查看 | 原因 |
|---|---|---|
| 边缘·物联网·ARM 板,单节点 | k3s | 二进制最小,代理最低 512MB,使用 SQLite 启动而无需 etcd |
| 开发 PC、CI 的用完即弃集群 | k3s | 安装后立即可用,包含 Ingress、LB 和存储 |
| 受监管行业(公共·金融)、审计合规 | RKE2 | profile: cis, FIPS 140-2 构建,SELinux 策略 |
| 从一开始就使用 etcd,形态类似于 kubeadm | RKE2 | 由于是静态 Pod,kubeadm 的经验完全通用 |
| 通过单个二进制文件运行,自行选择配置 | k0s | 默认情况下为空,且控制器与工作负载分离 |
| 通过单个配置文件管理多个主机 | k0s | k0sctl 通过 SSH 安装并加入节点,autopilot 负责升级 |
| 使用 Rancher 在一个界面中管理多个集群 | k3s 或 RKE2 | Rancher 对两者均支持开箱即用的配置与管理 |
| CKS/CKA 学习,原汁原味地学习标准 | kubeadm | 考试考察的静态 Pod、etcd 备份完全一致 |
最后一行虽然不是本文的三种发行版,但因为是常见问题所以加入了进来。k3s 的默认存储是 SQLite 且控制平面是一个进程,因此考试中考察的“etcd 备份”和“修改静态 Pod”无法直接套用。
3. 决策流程
问题的顺序至关重要。应当从 难以更改的条件 开始询问。合规性无法协商,硬件必须重新购买才能改变。而“想自己挑选配置”只是一种偏好,在 k3s 中也可以通过 --disable 关闭默认组件并加载所需内容来在很大程度上满足需求。
这个流程是作者的总结。如果团队已经习惯了某个发行版,那么该经验可能比上述差异更为重要。
4. 迁移时的难点
例如,如果开发环境使用 k3s,生产环境使用 RKE2,那么相同的清单文件就必须在两个发行版之间切换。此时经常遇到的问题有四个。第 1 个和第 4 个是在实验中亲自经历的,第 2 个和第 3 个是默认值表(第 1 篇第 5 节)中显现的差异。
- 网段。 k3s·RKE2 为 10.42/10.43,k0s 为 10.244/10.96。应首先评估是否存在与嵌套环境或公司内网重叠的情况(第 1 篇第 6 节)。
- Ingress Class。 k3s 使用 Traefik,RKE2 根据构建版本使用 Traefik 或 ingress-nginx,k0s 则没有。由于每个控制器的注解各不相同,如果让清单文件通过 Gateway API 或将类名作为值接收,则可以降低迁移成本。
- Storage Class。 k3s 的
local-path在 RKE2·k0s 中不存在。如果在清单文件中写死名称,PVC 就会卡在 Pending 状态。 - Pod 安全。 在 k3s·k0s 默认情况下可以启动的特权 Pod,在启用了 CIS 档案的 RKE2 中会被拒绝。不过,由于已经运行的 Pod 会继续运行,因此只有在下一次部署时才会暴露出来(第 2 篇第 3 节)。
5. 在 TT Lab 中
TT Lab 的实验服务本身运行在使用 kubeadm 搭建的 Kubernetes(v1.34 系列)之上。并且,在课程的 VM 实验中,会直接搭建 k3s、k0s、RKE2。本系列的所有“实测”均出自该实验 VM。
如果你想亲自手动尝试相同的内容,请查找 TT Lab 的 “Kubernetes 发行版——亲自动手搭建” 课程(在网站的课程列表中搜索“发行版”)。与本文相关的模块如下:
- “使用 k0s 搭建与恢复”:完整走一遍 etcd 备份 → 修改 → 恢复的流程,并确认还原恢复了什么。
- “k3s 存储与快照”:从 SQLite 迁移到内置 etcd 并通过快照恢复。
- “k3s 默认组件”:了解被删除的 Traefik 为什么会恢复,以及
--disable·.skip与 HelmChartConfig 的区别。 - “升级与版本差异”:通过安装脚本提升一个小版本,并使用 system-upgrade-controller Plan。
- “k0s 配置与动态配置”:确认配置文件和 ClusterConfig 对象究竟哪个才是真相。
- “RKE2 与 CIS 档案”:亲自体验第 2 篇中的实测场景。
Titi 寄语。 并不是轻量就好总是选 k3s,安全就好总是选 RKE2。先问一句“以后最难改的是什么?”,答案很快就会浮现。此外,在看数字时,请务必确认那是二进制文件大小、最低规格,还是真正测量出来的内存。
参考
所有资料均于 2026-10-13 查阅和查询。
- Release 文件信息 (GitHub API): https://api.github.com/repos/k3s-io/k3s/releases/latest, https://api.github.com/repos/rancher/rke2/releases/latest, https://api.github.com/repos/k0sproject/k0s/releases/latest
- k3s:要求 https://docs.k3s.io/installation/requirements、资源性能分析 https://docs.k3s.io/reference/resource-profiling、文档首页 https://docs.k3s.io/、主页 https://k3s.io/
- RKE2:要求 https://docs.rke2.io/install/requirements
- k0s:系统要求 https://docs.k0sproject.io/stable/system-requirements/、k0sctl https://docs.k0sproject.io/stable/k0sctl-install/
- 使用 Rancher 创建集群: https://ranchermanager.docs.rancher.com/how-to-guides/new-user-guides/launch-kubernetes-with-rancher
- 实测:TT Lab “Kubernetes 发行版 —— 从零搭建”课程的实验 VM 记录(准备时间、k0s 二进制文件、RKE2 安装包,2026-08~09)