Webernetes:ngrok 开源浏览器里的 Kubernetes 模拟器,6 天 497 星

Webernetes:ngrok 开源浏览器里的 Kubernetes 模拟器,6 天 497 星

Seven

如果 Kubernetes 集群能直接在浏览器里跑起来,不需要任何服务器、不需要 kubectl、不需要 kubeconfig——打开网页就能看到 Pod 在节点间调度、Service 在做负载均衡、Deployment 在执行滚动更新,你会不会觉得这是在开玩笑?

ngrok 用一个叫 Webernetes 的项目告诉你:这不是玩笑,而且 6 天就拿到了 497 颗星。

Webernetes 在线 Demo 界面

一、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 架构图

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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
import { BaseImage, Cluster, type ProcessContext } from "@ngrok/webernetes";

// 定义镜像
class MyImage extends BaseImage {
static readonly imageName = "my-image";
static readonly imageVersion = "1.0";
readonly defaultCommand = ["server"];

override async exec(ctx: ProcessContext, argv: readonly string[]): Promise<number> {
if (argv[0] !== "server") {
return await super.exec(ctx, argv);
}

ctx.listenHttp(8080, async (request) => {
return { statusCode: 200, body: "hello, world\n" };
});

return await ctx.waitUntilKilled();
}
}

// 创建集群并注册镜像
const cluster = new Cluster();
cluster.registerImage(MyImage);
await cluster.init();

// 部署 Pod
await cluster.apply([{
apiVersion: "v1",
kind: "Pod",
metadata: { name: "my-pod", labels: { app: "my-pod" } },
spec: { containers: [{ name: "my-container", image: "my-image:1.0" }] },
}]);

// 创建 Service 访问 Pod
await cluster.apply([{
apiVersion: "v1",
kind: "Service",
metadata: { name: "my-service" },
spec: {
type: "NodePort",
ports: [{ port: 80, targetPort: 8080, nodePort: 31000, protocol: "TCP" }],
selector: { app: "my-pod" },
},
}]);

const resp = await cluster.fetch("http://node-1:31000");
console.log(await resp.text()); // hello, world

代码里的 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 可能变化”。

八、局限性

  1. 不能跑真实 Docker 镜像:镜像必须继承 BaseImage,用 JavaScript/TypeScript 实现 exec 方法
  2. 网络极度简化:只有 HTTP 和 DNS,不支持 TCP/UDP 直连
  3. 固定 3 节点:不能动态扩缩节点
  4. 没有存储:不支持 Volume、PV/PVC
  5. 不适合生产环境:这是教学工具,不是轻量级 K8s 替代品

九、适用场景

  • K8s 教学:不需要搭集群就能演示 Pod 调度、Service 路由、Deployment 策略
  • 交互式文档:把 Kubernetes 概念做成可操作的网页
  • 技术博客/课程:嵌入一个真实可交互的 K8s 环境
  • 原型验证:快速测试编排逻辑,不需要等 CI/CD

相关链接

  • 标题: 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 进行许可。
评论