Skip to content

项目概述 ​

Kurrent(周流)是一套面向裸金属算力的无状态交付系统。该系统将身份、系统与数据从物理机器上剥离:计算节点本身不持有需要持久化的业务状态,启动时由网络与控制面授予身份、系统盘和凭据。节点因此成为可替换的位置,系统成为被交付与调度的对象。

text
身份在设备台账,系统盘在存储侧,声明在配置文件中,凭据由控制面签发。
节点上留下的,只有一次启动所需的临时连接。

问题定义 ​

云原生在过去十年解决了应用的弹性:容器可以重建、迁移、滚动升级,不再绑定于某台机器。但承载应用的物理节点仍按传统方式维护:安装系统、配置网络、重装、换机、迁移,均依赖人工或另一套独立的基础设施。

Kurrent 处理的是这一层的问题:使承载系统的机器同样可替换。它不替代应用编排,也不将状态隐藏于另一套存储抽象;它重新定义启动时身份与系统的来源,使“更换机器”不再等同于“重装系统”。

核心主张 ​

节点不持有持久状态 ​

计算节点可以随时断电、替换、重新上架。它的系统来自网络,身份由控制面按绑定关系授予,数据在系统盘上。节点本地不保存系统副本,也无需为每台机器维护一份安装记录。

设备 NVRAM 中保留的是启动身份密钥与服务器证书指纹。它们是身份锚点,不是系统状态:不承载业务数据,不随系统迁移,丢失后需要重新登记。

系统是调度单元 ​

被交付的不是一个应用进程,而是一整个可启动系统:计算身份(Worker)、系统盘、启动凭据与设备绑定共同构成它。系统归属于身份,不归属于机器;机器只是系统此刻所在的位置。

这一定位决定了控制面的对象模型:设备、Worker 与系统盘是三个独立实体,绑定关系有唯一权威,磁盘与机器解耦。应用与上层编排运行在系统之内,不属于 Kurrent 的调度范围。

身份与系统盘解耦 ​

设备通过 MAC 识别,计算身份由 Worker 表示,系统盘以 NQN 标识。三者之间的绑定关系可以变更:设备换绑到另一个 Worker,即一次冷迁移;系统盘保留在原处,无需重新制作。

盘内不写死机器身份。启动时由控制面按当前绑定投影连接信息,因此同一块系统盘可以在不同设备上启动,前提是身份与凭据匹配。

数据面不经过控制面 ​

设备与存储节点之间的块读写走独立的数据面,控制面只负责开通、身份与配置。控制面故障会影响新的开通与引导,但不会中断已经建立的 I/O。

数据面默认加密:NVMe/TCP 单端口 4421 使用 TLS 1.3,固件段与内核段共用;认证使用 DH-HMAC-CHAP,TLS 预共享密钥由认证密钥派生。缺少密钥或端口未就绪时拒绝引导,不回落明文。

与 Kubernetes 的关系 ​

Kubernetes 调度的单元是应用负载,它默认节点已经存在、系统已经装好。Kurrent 交付的单元是承载应用的系统,它处理的是 Kubernetes 之下的那一层。

两者不在同一层,可以叠加:Kurrent 将裸机转换为可替换的系统载体,Kubernetes 或其他编排系统运行在这些系统之内。Kurrent 不提供启动后的应用编排,也不要求替换现有的上层平台。

三类角色 ​

角色职责主要组件
控制面身份、台账、绑定、存储调度、引导变量、审计控制面服务、nginx、dnsmasq、WebUI、CLI
存储节点承载母盘与系统盘,导出块设备Agent、nvmet-host、宿主内核 nvmet
设备无状态算力,网络启动后成为某个 Worker 的引导节点设备固件(iPXE)、系统盘内的操作系统
text
                管理面 443(唯一入口)
  浏览器 / CLI ───────────────► 控制面服务器
                                   │  dnsmasq:DHCP / TFTP
                                   │  控制面:身份 / 台账 / 调度
                                   ▼
  裸机设备 ── PXE / HTTPS 引导 ──► 引导变量(盘 NQN、Host NQN、凭据)
      │
      └──── NVMe/TCP 4421(TLS 1.3)────► 存储节点(Agent + nvmet-host)

三实体模型 ​

实体标识权威归属
设备(Device)MAC设备台账;绑定关系权威在设备侧
Workerworker_id(主机名)控制面台账;代表计算身份
系统盘(System Disk)NQN存储节点上的盘文件;控制面记录归属

设备生命周期为 pooled → bound → revoked;Worker 的 readiness 由“是否绑定设备”和“是否有系统盘”派生。一台 Worker 可以挂多块系统盘,默认盘决定菜单超时后的启动项。

交付中的三个角色 ​

控制面负责身份、台账与连接信息;存储节点从母盘克隆系统盘并将块设备导出;设备通过 DHCP/TFTP 取得引导脚本,经 HTTPS 完成身份应答后,从网络启动所属 Worker 的系统盘。更换设备时,仅需将设备重新绑定至同一 Worker,系统盘与身份保持不变。

部署采用一套标准流程:控制面与存储节点可分离或同机,完成后进入交付流程。母盘定制属于一次性准备,不随每次部署重复。

能力 ​

  • 零接触入池:注册窗口内,带有效公钥的设备可自动登记;窗口关闭后不再入池。
  • 设备身份:设备私钥在 NVRAM 内生成,挑战-应答验签;支持密钥轮换。
  • 绑定与换绑:设备与 Worker 一对一;换绑为原子操作,解绑后设备回池。
  • 系统盘:母盘克隆、4K 原生 GPT 校验、放置策略、默认盘与多系统盘。
  • 数据面:NVMe/TCP + TLS 1.3,单端口 4421,无明文回退。
  • 凭据生命周期:建盘即签发 DHHC-1;轮换、吊销、推送对账与重启恢复。
  • 声明式配置:控制面与节点各一份 YAML;写盘前全量校验,失败回滚。
  • 管理入口:WebUI、CLI、REST API;证书、token 与会话三种认证方式。
  • 身份与审计:三类 CA、主体类默认拒绝、逐序列号吊销、请求级审计与告警。
  • 固件:独立仓库维护 iPXE 补丁与构建产物;设备固件负责引导层能力。

当前边界 ​

Kurrent 当前聚焦控制面与数据面的最小闭环,不以“已经覆盖全部运维场景”为前提。

  • 已验证发行版:Debian 12/13、Ubuntu 24.04/26.04、Fedora 44、AlmaLinux 10.2、openSUSE Leap 16.0 完成整机冷启动;验证范围不构成发行版限制。
  • 部署前提:独立的 PXE 网段与存储节点宿主前置(内核 NVMe/TCP TLS 配置、tlshd >= 1.5.0、支持 reflink 的文件系统)。
  • 尚未提供:启动后的应用编排、控制面高可用、IPv6、ARM、数据盘挂载、活迁移;Windows 与 ESXi 在路线图中。
  • 状态存储:控制面当前为单机、纯文件台账,没有数据库与多节点一致性机制。
  • 引导信任边界:DHCP/TFTP 首跳没有密码学保护,部署要求将 PXE 网段作为独立信任边界;主线固件未签名。
  • 固件现状:设备固件由独立仓库构建,主线不包含 Secure Boot 签名的操作路径;iPXE 侧 NBFT 生成仍是待实现项。

相关页面 ​