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

介绍 KWOK:无需 Kubelet 的 Kubernetes

KWOK logo

你有没有想过如何在几秒钟内设置一个拥有数千个节点的集群,如何以低资源占用模拟真实节点,以及如何在不花费大量基础设施费用的情况下大规模测试你的 Kubernetes 控制器?

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

什么是 KWOK?

KWOK 代表 Kubernetes WithOut Kubelet。到目前为止,它提供了两个工具

kwok
kwok 是该项目的基石,负责模拟假节点、Pod 和其他 Kubernetes API 资源的生命周期。
kwokctl
kwokctl 是一个 CLI 工具,旨在简化集群的创建和管理,其中的节点由 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 相关的讨论或开发,可以通过以下几种方式参与

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