本文发布已超过一年。较旧的文章可能包含过时内容。请检查页面信息自发布以来是否已不再准确。
介绍 KWOK: Kubernetes Without Kubelet
你是否曾想过如何在短短几秒钟内搭建一个拥有数千个节点的集群?如何以较低的资源消耗模拟真实节点?如何在不花费大量基础设施成本的情况下大规模测试你的 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,请查阅其文档了解更多详情。
使用 kwokctl 管理模拟集群
参与贡献
如果你有兴趣参与未来与 KWOK 相关的讨论或开发,有几种参与方式:
- Slack:#kwok 用于通用使用讨论,#kwok-dev 用于开发讨论。(访问 slack.k8s.io 获取工作区邀请)
- 在 sigs.k8s.io/kwok 提出问题/PR/讨论
我们欢迎任何希望加入我们这个激动人心项目的人提供反馈和贡献。