很多玩家在攒了第一台 NAS、买了一堆软路由迷你主机之后,最喜欢的就是用 Docker 来搭建服务。但随之而来就会遇到一个瓶颈:如果我有一台主力的 N100 机器,两台用来做下载或者备用的树莓派。怎么在它们之间灵活调度服务?怎么能在这台机器死机的时候,在另一台机器上瞬间把服务恢复拉起来?
几年前的答案,很多刚入门的玩家会选择那个名字好听、操作简单,但其实已经被业界近乎放弃的:Docker Swarm。
然而在 2025 的云原生下半场时代,如果你还在学习 Swarm,那无疑是1912年去应聘太监。今天,所有家庭网络、边缘节点的终端标准答案只剩下一个名字——K3s。
为什么是 K3s?杀死了大象的瘦子
Kubernetes(大名鼎鼎的 K8s)可以说是整个目前互联网公司应用部署的基石,甚至你现在刷抖音打游戏的后端都在跑在它上面。但原生的 K8s 极其笨重、配置极其反人类,不仅吃内存像是在喝水,而且组件繁多。这就是为什么过去大家在几百块钱的软路由和旁路由上,对 K8s 敬而远之,宁可受限、宁可手写一堆 Docker 网络跨主机,也绝不肯踏入泥潭。
直到业界大魔头 Rancher 拿出了这款划时代的产品:K3s。 它的全称是 Lightweight Kubernetes。顾名思义:
- 变态般的极小体积: 它把几十个乱杂的 k8s 组件编译在了一个只有几十兆(不到 100MB)的超级二进制包里!这就意味着,不仅安装速度极快,更是没有一堆乱七八糟乱飞的文件和目录。
- 极底的资源开销: 原生的 K8s 装上去啥也没干,可能就直接干掉了你 2-3GB 的内存。而 K3s?仅仅需要 500MB,它甚至可以极其舒服地运行在一台古老的树莓派 3B 或者最廉价 1GB 内存的 VPS 上。
- 彻底移除了所有冗余垃圾: 那些属于老旧云厂商插件和存储插件的冗余代码全被删掉了。留下的不仅是这原汁原味的原生 K8s API,并且不仅 100% 兼容所有的 K8s 应用和配置(比如 Helm, Istio 等)。
三分钟组建家庭高可用集群(HomeLab HA)
从前,要用原始方式手工装一个带 Master 和 Node 节点的高可用 K8s,你需要读足足十几篇配置文档去签证书、配置各种底层网卡、拉取国内那恶心人的无法访问的镜像。
在 K3s 面前,这变成了一道送分题:
第一步:在你家里最强悍的那台机器(主控节点 Server)上执行一行神仙脚本:
curl -sfL https://get.k3s.io | sh -
是的,你没看错,就这一行。它会自动安装,自动拉起包含 Traefik 反向代理在内的主控节点。
接着,提取这台机器上自动生成的属于主人的“秘密令牌”(Token):
cat /var/lib/rancher/k3s/server/node-token
第二步:找到你家里另一台机器(哪怕它只是个跑在一角的破旧笔电,只需加入它作为工作节点 Agent):
curl -sfL https://get.k3s.io | K3S_URL=https://[你的主机器IP]:6443 \
K3S_TOKEN=[刚才那一长串的不可告人的密码] sh -
两手一拍,大功告成!
为什么在 2025 年你必须学会 Kubernetes 的心智模型
当我们在这个 2025 年这探讨在我们的软路由和 NAS 上为什么要部署一套 k3s 时?你得到的最大的好处是不仅获得了不可思议的稳定性,更是:
- 声明式配置的极客快感:你不再像调教 Docker 一样用命令告诉机器“请帮我启动这个 Nginx,暴露 80 端口”。而是写一份神圣的
.yaml文件宣告:“我需要一个能随时处理 100 个人并发访问的 Web 应用,它不管出什么事都要保持两个副本存活,而且必须有一个统一带有 HTTPS 证书的大门。哪怕这台物理机器网线被拔掉,你也必须要在 3 秒内在另一台机器上重启恢复它。” 然后,把文件扔给 K3s。 剩下所有的这脏活累活和网络连通调度,那是系统的事!
放肆地在这张巨大的计算网格里扔上你所有的博客、旁路由代理和密码管理器吧。一旦你跨过了最初的这个 YAML 心智门槛,你会觉得自己之前手搓那些 Docker 命令的岁月,犹如原始社会。