# 介绍 KWOK
**作者:** Shiming Zhang (DaoCloud), Wei Huang (Apple), Yibo Zhuang (Apple)
**译者:** Michael Yao (DaoCloud)
是什么项目会被 Apple、IBM、腾讯、华为纷纷使用?
你是否曾想过在几秒钟内搭建一个由数千个节点构成的集群,如何用少量资源模拟真实的节点,
如何不耗费太多基础设施就能大规模地测试你的 Kubernetes 控制器?
如果你曾有过这些想法,那你可能会对 KWOK 有兴趣。
KWOK 是一个工具包,能让你在几秒钟内创建数千个节点构成的集群。
## 什么是 KWOK?
KWOK 是 Kubernetes WithOut Kubelet 的缩写,即没有 Kubelet 的 Kubernetes。
到目前为止,KWOK 提供了两个工具:
__kwok__
: __kwok__ 是这个项目的基石,负责模拟伪节点、Pod 和其他 Kubernetes API 资源的生命周期。
__kwokctl__
: __kwokctl__ 是一个 CLI 工具,设计用于简化创建和管理由 __kwok__ 模拟节点组成的集群。
## 为什么使用 KWOK?
KWOK 具有下面几点优势:
- **速度**:你几乎可以实时创建和删除集群及节点,无需等待引导或制备过程。
- **兼容性**:KWOK 能够与兼容 Kubernetes API 的所有工具或客户端(例如 kubectl、helm、kui)协同作业。
- **可移植性**:KWOK 没有特殊的软硬件要求。一旦安装了 Docker 或 Nerdctl,你就可以使用预先构建的镜像来运行 KWOK。
另外,二进制文件包适用于所有平台,安装简单。
- **灵活**:你可以配置不同类型的节点、标签、污点、容量、条件等,还可以配置不同的 Pod 行为和状态来测试不同的场景和边缘用例。
- **性能**:你在自己的笔记本电脑上就能模拟数千个节点,无需大量消耗 CPU 或内存资源。
## 使用场景是什么?
KWOK 可用于各种用途:
- **学习**:你可以使用 KWOK 学习 Kubernetes 概念和特性,无需顾虑资源浪费或其他后果。
- **开发**:你可以使用 KWOK 为 Kubernetes 开发新特性或新工具,无需接入真实的集群,也不需要其他组件。
- **测试**:
- 你可以衡量自己的应用程序或控制器在使用节点和 Pod 时的扩缩表现如何。
- 你可以用不同的资源请求或限制创建大量 Pod 或服务,在集群上营造高负载的环境。
- 你可以通过更改节点状况或随机删除节点来模拟节点故障或网络分区。
- 你可以通过启用不同的特性门控或 API 版本来测试控制器如何与其他组件交互。
## 有哪些限制?
KWOK 并非试图完整替代其他什么。当然也有一些限制需要你多加注意:
- **功能性**:KWOK 不是 kubelet。KWOK 在 Pod 生命周期管理、卷挂载和设备插件方面所展现的行为与 kubelet 不同。
KWOK 的主要功能是模拟节点和 Pod 状态的更新。
- **准确性**:需要重点注意 KWOK 还不能确切地反映各种工作负载或环境下真实节点的性能或行为。
KWOK 只能使用一些公式来逼近真实的节点行为。
- **安全性**:KWOK 没有对模拟的节点实施任何安全策略或安全机制。
KWOK 假定来自 kube-apiserver 的所有请求都是经过授权且是有效的。
## 入门指导
如果你对试用 KWOK 感兴趣,请查阅 [KWOK 文档](https://kwok.sigs.k8s.io/)了解详情。
![在终端上使用 kwokctl 的动图](https://docs.daocloud.io/daocloud-docs-images/docs/blogs/images/manage-clusters.svg)
## 欢迎参与
如果你想参与讨论 KWOK 的未来或参与开发,可通过以下几种方式参与进来:
- Slack [#kwok] 讨论一般用法,Slack [#kwok-dev] 讨论开发问题(访问 [slack.k8s.io] 获取 KWOK 工作空间的邀请链接)
- 在 [sigs.k8s.io/kwok] 上提出 Issue/PR/Discussion
我们欢迎所有想要加入这个项目的贡献者,欢迎任何形式的反馈和贡献。
## 参考链接
- KWOk 代码仓库:
- KWOk 文档:
- KWOK slack 频道:
[sigs.k8s.io/kwok]: https://sigs.k8s.io/kwok/
[#kwok]: https://kubernetes.slack.com/messages/kwok/
[#kwok-dev]: https://kubernetes.slack.com/messages/kwok-dev/
[slack.k8s.io]: https://slack.k8s.io/