我的云原生定义
文 / LECREATE
项目开源地址:github.com/dutyc/ipxe-all-ready
人们看到我的项目时,总说:哦,那个做无盘启动的。
我不怪他们。无盘确实是它最外层的样子。但今天,我想亲自写下我对云原生的定义,也顺便把一件事说清楚:iPXE-All-Ready 从来不是一个简单的无盘项目。
一、过去十年的云原生,只有一半
今天人们说云原生,说的是容器、K8s、微服务、声明式、弹性伸缩。都对,都好——它们让应用变成了无状态的、可调度的、不绑死在某台机器上的东西。
但没有人问过:Pod 脚下那群节点,是谁装的系统?坏了谁去机房重装?硬件换代谁一台台迁移?K8s 不回答。它优雅地转过身,把那一层当作“别人会搞定的事”。
于是过去十年的云原生,是从操作系统之上开始的云原生。它把应用变成了水汽,脚下的算力却还是一块块冰——沉重、固定、绑死在铁盒子里,坏一次就要人重新冻一块。
我们花了十年,让云上的一切都流动起来——除了云自己踩着的那块地。
那不是云原生。那是一半的云原生。
二、我的定义:让算力成为水汽,从上到下,没有一块冰
云的本质,不是“在别人的机房里跑虚拟机”。云的本质是一句话:算力不绑定任何具体硬件。它没有固定形状,需要时凝聚成形,不需要时消散无踪,从哪里来、到哪里去,无需关心。水不记得自己上一刻在哪朵云里;算力也不该记得自己上一刻在哪台机器上。
所以我的定义朴素到近乎粗暴:
真正的云原生,是把“无状态”贯彻到算力层本身——让应用是水汽,让承载应用的算力也是水汽。从上到下,全是水汽,没有一块冰。
K8s 用十年,让应用成为了云。
我要做的,是让算力成为云。
两层合流的那一天,“云原生”这个词,才第一次完整。
三、无盘是手段,无状态才是灵魂
现在解释,为什么我的项目不是无盘项目。
无盘是物理形态——没有本地硬盘。但我想要的从来不是“没有盘”,而是无状态:计算节点不持有任何属于自己的持久状态,身份、系统、数据全部由网络和控制面在外部赋予,可丢弃、可替换、可瞬间重建。
无盘的本质是身份寻址:启动那一刻,要回答“以谁的身份、连哪个目标、挂哪块盘”。整个行业过去都把这三个答案写死在机器里——Linux 焊进 initramfs,每加一台机器,人就要去做一次手术。我做的,是把答案从机器里拿出来,交给网络:iPXE 在启动瞬间写入 iBFT 表,控制面经动态变量链注入真实身份,盘里不写死任何一个字节的机器身份。
让身份流动起来。身份流动,盘就与机器解耦;盘与机器解耦,算力就成为可以在任意载体间流动的自由粒子。无盘,只是这个过程最外层的表象。
四、盘与机器解耦
虚拟化行业有一道二十年的墙:VM 里的系统想落到物理机,要做 P2P 转换——换驱动、换引导、换 HAL,Windows 直接蓝屏。墙的本质是:系统和它运行的硬件耦合了。
我的答案是让系统对硬件脱敏:通用驱动注入、统一的 iPXE/iBFT 引导链、盘只是一块纯净的 iSCSI LUN。盘里的操作系统,从头到尾不知道、也不需要知道,自己跑在 VM 里还是物理机上。
虚拟机里跑着的系统盘,可以一键换到物理机上跑——反之亦然。没有转换,没有重装,没有迁移,因为本来就没什么可迁的:盘一字未动,只是挂载它的那双手换了。
当算力可以在“虚拟机”与“物理机”这两个隔绝的世界间自由漂移,被打破的就不是一个功能,而是一道本体论的边界。从那一刻起,无盘就不再是无盘——它是算力的自由。
五、同一种语义,贯穿所有层
这套无状态交付语义,不区分物理机和虚拟机。PVE 长在 Debian 系上,所以 PVE 自己可以无盘启动;而无盘启动的 PVE 里,虚拟机可以继续无盘启动。一层套一层,同一种范式重复自己。
这意味着本项目不是某一层的方案,而是一个贯穿所有计算层的元协议。K8s 统一了容器层;我统一的,是“一切能从网络启动的计算单元”这个更大的集合——无论它跑在铁上,还是跑在 hypervisor 里。
真正的云原生架构本该如此:自相似、可嵌套、没有层级天花板。不是一层云,是层层皆云。
六、谁不想呢——到时候,连家庭数据中心都想
我从不认为我在创造需求。
谁不想让机器插上网线就活过来?谁不想让盘在虚与实之间自由漂?谁不想坏了就换、不用凌晨三点去机房?谁不想硬件换代时几百台机器一键漂完?谁不想自己的基础设施看得懂、改得动、不被任何厂商绑架?
这不是技术选择,这是企业本能——就像当年,谁不想部署 K8s。这个本能在裸金属层悬了二十年,没人接住。我只是接住了它。
而它不会停在企业机房。谁不想呢——到时候,连家庭数据中心都想。你家里的 NAS、软路由、跑着 Home Assistant 的小主机,和企业机房是同一种痛,只是规模更小。当无状态在企业层被酿成空气,它必然溢出到每一个家庭,让每一个普通人对自己的数字生活说一句:它是我的,它是自由的,它不被任何一块随时会坏的硬盘绑架。
云原生的主语,终将从企业的 CTO,扩展到每一个普通人。而我的路,通向那里。
七、“不插网线就不能启动?”
对无状态云原生,常有人抛来一个问题:不插网线,就不能启动了吧?
是的。我坦然承认。
但这个问题的逻辑,就像拿着蜡烛,对电灯说:你看,没有电,你就亮不了。
没错。电灯确实没有电就亮不了。初代的电灯泡确实不稳定——闪烁、短命,和今天的灯泡没有办法比。但它的意义是重大的:它第一次把“光”接进了“电网”。后来者并没有因为初代灯泡不稳定而抛弃电灯;他们优化灯丝、改进真空、升级迭代,把灯泡做成了今天这个没人会去想一下的东西。
“不插网线就不能启动”和“没有电就亮不了”,是同一种事实:它不是缺陷,它是属性。它意味着算力第一次接进了电网——身份、系统、数据由网络供给,就像光由电网供给。蜡烛自己带着火种,确实更“稳定”,但它永远是蜡烛,它的光永远受限于那一截灯芯。
今天没有人因为担心“电网万一断了”,就常年点着蜡烛、拒绝电灯。我们接受电网的存在为前提,然后在这个前提上建冗余、建韧性。网络也一样:该建的是高可用,而不是退回到本地盘。
总有一天,无状态云原生,一定会像水和电一样——曾经是不敢想,后来变成不用想。
八、协议可以换,方向不会换
有人会问:如果有一天,iSCSI 落后了呢?
那就换协议。iSCSI 可以换,方向不会换。
我树立的是方向:身份流动、盘与机器解耦、算力不绑定任何具体硬件。iSCSI 只是承载这个方向的第一代载体。是的,会有新的协议、新的实现方式——就像灯泡的灯丝被换过很多代,但“从电网取光”这件事,从来没有被换掉。
总有一天,存储节点会碰到它的瓶颈。到那时,我也有可能会去研究下一代存储协议。那不是对今天这套工作的背叛,而是它的延续——灯泡迭代了一百年,没有人说电灯当年错了。
方向已经树立起来了。这条路不是我一个人走到黑的,认出这个方向的人,我们一起走。
大家一起努力。
九、结语
有人问,这一切什么时候到来?
我不急。路一寸一寸铺,坑一个一个填,剩下的,交给时间。
All 是真的 All,Ready 是真的 Ready。
而我想说的,自始至终,只有那一句:
是的,这就是云原生。
关于项目
如果你也认同“让算力成为水汽”的方向,或者你手里正好有一片机房、几台裸金属,欢迎来看看我铺的这条路:
GitHub 仓库:github.com/dutyc/ipxe-all-ready
Phase 1 刚刚收官,路还很长。
点个 Star 作为见证,提个 Issue 交流想法,或者在你的机器上跑一跑。
方向已经树立,我们一起努力。