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

介绍 KWOK: Kubernetes Without Kubelet

KWOK logo

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

如果你的答案是肯定的,那么你可能会对 KWOK 感兴趣,这是一个可以在几秒钟内创建数千个节点集群的工具包。

KWOK 是什么?

KWOK 代表 Kubernetes WithOut Kubelet(没有 Kubelet 的 Kubernetes)。目前,它提供了两个工具:

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 相关的讨论或开发,有几种参与方式:

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