本文发表于一年多前。旧文章可能包含过时内容。请检查页面中的信息自发布以来是否已变得不正确。

介绍 KWOK:Kubernetes WithOut Kubelet

KWOK logo

你是否曾想过如何在几秒钟内搭建一个包含数千个节点的集群,如何以低资源占用模拟真实节点,以及如何在不花费大量基础设施成本的情况下大规模测试你的 Kubernetes 控制器?

如果你对以上任何一个问题的回答是“是”,那么你可能会对 KWOK 感兴趣,这是一个能让你在几秒钟内创建一个包含数千个节点的集群的工具包。

什么是 KWOK?

KWOK 是 Kubernetes WithOut Kubelet 的缩写。到目前为止,它提供了两种工具:

kwok
kwok 是这个项目的基石,负责模拟假节点、Pod 和其他 Kubernetes API 资源的生命周期。
kwokctl
kwokctl 是一个命令行工具,旨在简化由 kwok 模拟节点的集群的创建和管理。

为什么使用 KWOK?

KWOK 有几个优点:

  • 速度:你可以几乎瞬间创建和删除集群和节点,无需等待启动或配置。
  • 兼容性:KWOK 可与任何符合 Kubernetes API 的工具或客户端配合使用,例如 kubectl、helm、kui 等。
  • 可移植性:KWOK 没有特定的硬件或软件要求。一旦安装了 Docker 或 Nerdctl,你就可以使用预构建的镜像来运行它。此外,也提供了适用于所有平台的二进制文件,并且可以轻松安装。
  • 灵活性:你可以配置不同的节点类型、标签、污点、容量、状况等,并且可以配置不同的 Pod 行为、状态等,以测试不同的场景和边界情况。
  • 性能:你可以在你的笔记本电脑上模拟数千个节点,而不会大量消耗 CPU 或内存资源。

有哪些使用场景?

KWOK 可用于各种目的:

  • 学习:你可以使用 KWOK 学习 Kubernetes 的概念和功能,而无需担心资源浪费或其他后果。
  • 开发:你可以使用 KWOK 为 Kubernetes 开发新功能或工具,而无需访问真实集群或需要其他组件。
  • 测试:
    • 你可以衡量你的应用程序或控制器在不同数量的节点和/或 Pod 下的扩展性能。
    • 你可以通过创建许多具有不同资源请求或限制的 Pod 或服务,在你的集群上产生高负载。
    • 你可以通过更改节点状况或随机删除节点来模拟节点故障或网络分区。
    • 你可以通过启用不同的功能门或 API 版本来测试你的控制器如何与 Kubernetes 的其他组件或功能交互。

有哪些限制?

KWOK 并非旨在完全取代其他工具。它有一些你应该注意的局限性:

  • 功能性:KWOK 不是 kubelet,在 Pod 生命周期管理、卷挂载和设备插件等方面可能表现出不同的行为。其主要功能是模拟节点和 Pod 状态的更新。
  • 准确性:需要注意的是,KWOK 并不能准确反映真实节点在各种工作负载或环境下的性能或行为。相反,它使用简单的公式来近似某些行为。
  • 安全性:KWOK 不对模拟节点强制执行任何安全策略或机制。它假定所有来自 kube-apiserver 的请求都是经过授权且有效的。

开始使用

如果你有兴趣尝试 KWOK,请查看其文档以获取更多详细信息。

Animation of a terminal showing kwokctl in use

使用 kwokctl 管理模拟集群

参与其中

如果你有兴趣参与未来与 KWOK 相关的讨论或开发,有几种方式可以参与进来:

我们欢迎任何想要加入我们这个激动人心的项目的人提供反馈和贡献。