我把 Kubernetes 移植到了浏览器里
总体反应
- 许多评论者认为这个项目“很酷”、令人印象深刻,并且在学习和演示方面可能非常有用。
- 也有人把它看作一个不错的小玩具,但没有明显的生产用途,或者是“slop”/不必要的复杂性。
实际移植了什么
- 这个项目在浏览器里运行了一个部分 Kubernetes 控制平面:kubelet 逻辑、各种控制器(scheduler、namespace、deployment、kube-proxy 等),并使用了自定义的 CRI 和 CNI 实现。
- 它不运行真实的容器镜像;工作负载是模拟的,而不是真正的容器/数据库。
- 状态通过一个自定义的 TypeScript 存储来保存;没有使用 etcd,评论者也指出真实集群也可以使用非 etcd 后端。
使用场景与教育价值
- 大家很有兴趣把它用于教授 Kubernetes 概念:控制平面的行为、调度、故障模式、示意图,以及交互式讲解。
- 它被认为特别适合架构/概念学习,而不太适合动手掌握 kubectl。
- 它与已停用/付费的学习平台如 Katacoda 相比也很有竞争力,可能填补这一空缺。
LLM 辅助的工程工作流
- 这个代码库大部分由 LLM 生成,但经过逐行审查,并通过数百个测试断言其与真实 k3s 集群的行为一致。
- 几位评论者把这看作 AI 辅助工程的一个范例:大量测试、审计和严格审查,以避免“vibe slop”。
- 也有人借机嘲讽 AI slop,或者认为复制 Kubernetes 的大段代码会带来长期维护风险。
这“真的”算移植吗?
- 一派认为这确实是把 Kubernetes 的核心编排逻辑移植到了浏览器,只是 pod 和网络运行在了不同的运行时里。
- 另一派坚持认为,如果不能运行真实容器,也不能用于生产工作负载,那么称之为“移植”会产生误导;他们更倾向于把它看作模拟器或可视化工具。
- 争论的焦点在于“移植 Kubernetes”究竟应该意味着什么:移植其编排行为,还是支持真实的容器化工作负载。
Kubernetes 的范围与浏览器设计选择
- 评论者指出,ConfigMaps、Secrets、资源、卷、Ingress 以及大型多开发者部署等复杂特性,才是真实世界里最让人头疼的部分;这些目前大多还不支持。
- 已确认范围仅限单个浏览器;没有跨浏览器或多用户集群。
- 还有人讨论了基于 Web Workers 和 WASM 的运行时作为未来扩展的可能性(例如每个 pod 一个 worker、WASM pods、基于 OPFS 的卷),不过目前从性能上看并不需要。
更广泛的元话题
- 这串讨论也触及了一个趋势:使用 AI 重写基础设施软件(通常重写为 Rust),并借助强测试和清晰规范来实现。
- 另有一些分支讨论涉及 AI 经济学和推理 token 成本,但这与浏览器中的 Kubernetes 项目只是间接相关。