Webernetes:ngrok 开源浏览器里的 Kubernetes 模拟器,6 天 497 星
如果 Kubernetes 集群能直接在浏览器里跑起来,不需要任何服务器、不需要 kubectl、不需要 kubeconfig——打开网页就能看到 Pod 在节点间调度、Service 在做负载均衡、Deployment 在执行滚动更新,你会不会觉得这是在开玩笑?
ngrok 用一个叫 Webernetes 的项目告诉你:这不是玩笑,而且 6 天就拿到了 497 颗星。

一、Webernetes 是什么
Webernetes 是 ngrok 开源的一个 TypeScript 库,它把 Kubernetes 的核心组件移植到了浏览器环境。不是模拟 UI,不是画个 Dashboard——它在浏览器内存中实际运行了一套精简版的 K8s 控制平面。
npm 包名是 @ngrok/webernetes,Apache-2.0 协议,你可以直接 npm install 然后用代码创建集群、部署 Pod、配置 Service,整个过程完全在浏览器内完成。
项目地址:github.com/ngrok/webernetes
在线 Demo:webernetes-demo.ngrok.app
二、为什么要做这个
ngrok 是做隧道和 API 网关的公司,他们需要制作 Kubernetes 相关的交互式教学内容。传统做法是维护一套真实的 K8s 集群用于演示,但成本高、维护难、容易过时。
Webernetes 的解决方案很直接:既然只需要演示 K8s 的行为逻辑,为什么不直接在浏览器里模拟一套?不需要后端服务器,不需要运维成本,内容可以永久在线。
这个思路其实很有启发性——很多技术教育内容的瓶颈不是知识本身,而是搭建演示环境的成本。
三、技术架构
Webernetes 的架构可以分为三层:
用户代码层:通过 @ngrok/webernetes npm 包提供的 API 来定义镜像、创建集群、部署资源。API 设计参考了真实的 Kubernetes YAML,但用 TypeScript 对象表示。
控制平面层:在浏览器内存中实现了 Kubernetes 的核心控制器——Deployment Controller、ReplicaSet Controller、Namespace Controller、垃圾收集器等。这些控制器的行为和上游 Kubernetes 尽量保持一致。
节点模拟层:固定 3 个节点(node-1、node-2、node-3),每个节点有 kubelet 模拟器,负责管理 Pod 生命周期、执行健康检查(liveness/readiness probe)。
通信方面只支持 HTTP 和 DNS,不模拟真实的 TCP/UDP 网络栈。Pod 之间可以通过 DNS 名称或 IP 地址互相访问。
四、支持的 K8s 资源
| 资源类型 | 支持情况 | 说明 |
|---|---|---|
| Pod | 完整支持 | 环境变量、端口监听、健康检查 |
| Service | 部分支持 | ClusterIP 和 NodePort,不支持 LoadBalancer/ExternalName |
| Deployment | 完整支持 | RollingUpdate 和 Recreate 策略 |
| ReplicaSet | 完整支持 | 通常由 Deployment 创建 |
| Namespace | 完整支持 | 包含 Namespace Controller |
| EndpointSlice | 完整支持 | 跟踪 Service 关联的 Pod |
| Event | 基本支持 | 事件消息已实现,但没有聚合 |
不支持的:Init 容器、gRPC 探针、Volume 挂载、亲和性规则、资源限制(resources)。
简单说,核心的编排逻辑都覆盖了,但存储和网络细节做了大幅简化。
五、快速上手
安装只需要一行:
1 | npm install @ngrok/webernetes |
然后用代码定义一个镜像、创建集群、部署 Pod:
1 | import { BaseImage, Cluster, type ProcessContext } from "@ngrok/webernetes"; |
代码里的 API 和真实 Kubernetes 的 YAML 定义几乎一模一样,学习成本很低。
六、真实 K8s vs Webernetes
| 维度 | 真实 Kubernetes | Webernetes |
|---|---|---|
| 实现语言 | Go | TypeScript |
| 运行环境 | 服务器集群 | 浏览器 |
| 容器运行时 | Docker/containerd | 自定义 BaseImage |
| 网络 | 完整 TCP/UDP/CNI | 仅 HTTP 和 DNS |
| 节点数 | 弹性扩展 | 固定 3 个 |
| 部署方式 | kubectl + kubeconfig | npm install |
| 用途 | 生产环境 | 教学、演示、交互内容 |
本质上 Webernetes 不是要替代 Kubernetes,而是用最低的成本让你理解 Kubernetes 的核心机制。
七、社区反响
项目 6 月 16 日上线,到 6 月 22 日已经 497 颗星,日均增长约 100 颗。在 GitHub Trending、中文 AI 日报、日语趋势追踪器上都被收录。
社区已经开始自发扩展:
- 有人用 GitHub Copilot 在 3 天内做出了 Python 封装(通过 JSON-RPC IPC 桥接 JS API)
- 多位开发者提交了无障碍改进和供应链安全加固 PR
- 维护者 samwho 响应速度很快
不过项目本身还很年轻,README 明确标注“实验性项目,API 可能变化”。
八、局限性
- 不能跑真实 Docker 镜像:镜像必须继承 BaseImage,用 JavaScript/TypeScript 实现 exec 方法
- 网络极度简化:只有 HTTP 和 DNS,不支持 TCP/UDP 直连
- 固定 3 节点:不能动态扩缩节点
- 没有存储:不支持 Volume、PV/PVC
- 不适合生产环境:这是教学工具,不是轻量级 K8s 替代品
九、适用场景
- K8s 教学:不需要搭集群就能演示 Pod 调度、Service 路由、Deployment 策略
- 交互式文档:把 Kubernetes 概念做成可操作的网页
- 技术博客/课程:嵌入一个真实可交互的 K8s 环境
- 原型验证:快速测试编排逻辑,不需要等 CI/CD
相关链接
- GitHub:ngrok/webernetes
- npm:@ngrok/webernetes
- 在线 Demo:webernetes-demo.ngrok.app
- ngrok 官网:ngrok.com
- 标题: Webernetes:ngrok 开源浏览器里的 Kubernetes 模拟器,6 天 497 星
- 作者: Seven
- 创建于 : 2026-06-22 16:00:00
- 更新于 : 2026-07-14 00:18:15
- 链接: https://blog.oneiseven.top/2026/06/22/Webernetes-ngrok开源浏览器里的Kubernetes模拟器/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。