推出 KWOK:无 Kubelet 的 Kubernetes

推出 KWOK:无 Kubelet 的 Kubernetes

2023-03-01

镜像自 k8s.io/blogk8s.dev/blog

作者:张诗明(道云)、黄伟(Apple)、庄一博(Apple)

KWOK logo

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

如果您对其中任何一个问题回答“是”,那么您可能会对 KWOK 感兴趣,它是一个工具包,使您能够在几秒钟内创建一个包含数千个节点的集群。

什么是 KWOK? #

KWOK 代表无 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 相关的未来讨论或开发,有几种参与方式

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