KWOK
(K
ubernetes W
ithO
ut K
ubelet) #
KWOK 发音为 /kwɔk/
。
KWOK 是一个工具包,可以在几秒钟内设置一个包含数千个节点的集群。在场景中,所有节点都被模拟为像真实的节点一样,因此整体方法采用了非常低的资源占用,你可以在笔记本电脑上轻松使用。
什么是 KWOK? #
KWOK 代表 Kubernetes WithOut Kubelet。到目前为止,它提供了两个工具
kwok
是此项目的基石,负责模拟假节点、Pod 和其他 Kubernetes API 资源的生命周期。kwokctl
是一个 CLI 工具,旨在简化集群的创建和管理,节点由kwok
模拟。
与kubemark
有什么区别 #
kubemark 是一个实际上并不运行容器的 kubelet。它的行为与 kubelet 完全相同,这意味着模拟大量节点和 Pod 需要大量的内存。
然而,kwok
仅模拟节点的行为。因此,它可以使用极少的内存模拟大量节点和 Pod。
与 kind
有什么区别 #
kind 在 Docker 中运行 Kubernetes,创建真正的集群。如果你将 nginx Pod 部署到 kind 集群,你可以 curl 到其 IP 地址并获取包含其 HTML 页面的 HTTP 响应。但在 KWOK 集群中,你什么都得不到,因为 Pod 不是真实的。
在某些情况下,你可以将 kwokctl
用作 kind 的替代品,在这些情况下,你无需实际运行任何 Pod。
为什么选择 KWOK? #
- 轻量级:你可以在笔记本电脑上模拟数千个节点,而不会显著消耗 CPU 或内存资源。目前,KWOK 可以轻松可靠地维护 1k 个节点和 100k 个 Pod。
- 快速:你可以几乎立即创建和删除集群和节点,而无需等待启动或预配。目前,KWOK 每秒可以创建 20 个节点或 Pod。
- 兼容性:KWOK 与符合 Kubernetes API 的任何工具或客户端配合使用,例如 kubectl、helm、kui 等。
- 可移植性:KWOK 没有特定的硬件或软件要求。一旦安装了 Docker/Podman/Nerdctl,你就可以使用预构建的镜像运行它。或者,也可以为所有平台提供二进制文件,并且可以轻松安装。
- 灵活性:你可以配置不同的节点类型、标签、污点、容量、条件等,并且可以配置不同的 Pod 行为、状态等,以测试不同的场景和边缘情况。
入门 #
下面的动画展示了一个测试过程,用于使用最新版本的 kwok
/kwokctl
。
欢迎开始使用安装、基本用法、自定义配置以及对 KWOK 的贡献。
kwokctl
运行时支持矩阵 #
运行时表示 kwokctl
将使用哪个介质来启动集群
\ | linux/ amd64 | linux/ arm64 | darwin/ amd64 | darwin/ arm64 | windows/ amd64 | windows/ arm64 |
---|---|---|---|---|---|---|
二进制文件 ⭐️ | 🟢 | 🔵 | 🟢 | 🟢 | 🟢 | 🟣 |
docker ⭐️ | 🟢 | 🔵 | 🔵 | 🔵 | 🟣 | 🟣 |
podman ⭐️ | 🟢 | 🔵 | 🔵 | 🔵 | 🟣 | 🟣 |
nerdctl | 🟢 | 🔵 | 🔴 | 🔴 | 🔴 | 🔴 |
lima ⚠️ | 🟣 | 🟣 | 🟣 | 🟣 | 🔴 | 🔴 |
finch ⚠️ | 🔴 | 🔴 | 🟣 | 🟣 | 🟣 | 🟣 |
kind | 🟢 | 🔵 | 🔵 | 🔵 | 🟣 | 🟣 |
kind-podman | 🟢 | 🔵 | 🔵 | 🔵 | 🟣 | 🟣 |
kind-nerdctl ⚠️ | 🟣 | 🟣 | 🔴 | 🔴 | 🔴 | 🔴 |
kind-lima ⚠️ | 🟣 | 🟣 | 🟣 | 🟣 | 🔴 | 🔴 |
kind-finch ⚠️ | 🔴 | 🔴 | 🟣 | 🟣 | 🟣 | 🟣 |
- ⭐️ 推荐
- ⚠️ 正在进行中
- 🟢 CI 支持和测试
- 🔵 手动支持和测试
- 🟣 支持但未完全测试
- 🔴 尚未支持
社区 #
参见我们自己的 贡献者指南 和 Kubernetes 社区页面。
参与 #
如果您有兴趣参与与 KWOK 相关的未来讨论或开发,有几种参与方式
- Slack:#kwok 用于一般用法讨论,#kwok-dev 用于开发讨论。(访问 slack.k8s.io 以获取工作区邀请)
- 在 sigs.k8s.io/kwok 中打开问题/PR/讨论
行为准则 #
参与 Kubernetes 社区受 Kubernetes 行为准则 管辖。