1. KWOK 是一个工具包
可在数秒内建立一个由数千个节点组成的集群。在场景下,所有节点的行为都是模拟的,与真实节点无异,因此整个方法占用的资源非常少,你可以在笔记本电脑上轻松玩转。
KWOK 是 Kubernetes WithOut Kubelet 的缩写。到目前为止,它提供了两种工具:
kwok 是这个项目的基石,负责模拟假节点、pod 和其他 Kubernetes API 资源的生命周期。
kwokctl 是一种 CLI 工具,旨在简化集群的创建和管理,节点由 kwok 模拟。
安装
# 1. mac
brew install kwok
# 2. go install
# KWOK repository
# KWOK_REPO=kubernetes-sigs/kwok
# Get latest
# KWOK_LATEST_RELEASE=$(curl "https://api.github.com/repos/${KWOK_REPO}/releases/latest" | jq -r '.tag_name')
# go install sigs.k8s.io/kwok/cmd/{kwok,kwokctl}@${KWOK_LATEST_RELEASE}
# 当前最新 ## [v0.3.0](https://github.com/kubernetes-sigs/kwok/releases/tag/v0.3.0)
go install sigs.k8s.io/kwok/cmd/{kwok,kwokctl}@v0.3.0
# 3. 二进制安装
参考: kwok.sigs.k8s.io/docs/user/i…
2. 为什么选择 KWOK?
- 轻便:您可以在笔记本电脑上模拟数千个节点,而无需大量消耗 CPU 或内存资源。目前,KWOK 可轻松可靠地维护 1k 个节点和 100k 个 pod。
- 快速:您几乎可以立即创建和删除群集和节点,无需等待启动或配置。目前,KWOK 每秒可创建 20 个节点或 pod。
- 兼容性强:KWOK 可与任何符合 Kubernetes API 的工具或客户端配合使用,如 kubectl、helm、kui 等。
- 可移植性:KWOK 没有特定的硬件或软件要求。只要安装了 Docker 或 Nerdctl,就可以使用预制镜像运行它。此外,二进制文件也适用于所有平台,可以轻松安装。
- 灵活性:你可以配置不同的节点类型、标签、污点、容量、条件等,还可以配置不同的 pod 行为、状态等,以测试不同的场景和边缘情况。
3. 和 kind 有什么区别 ?
kind在 Docker 中运行 Kubernetes,创建一个真正的集群。
kwokctl在某些不需要实际运行任何 pod 的场景中,可以用作 kind的替代方案。
5. 个人使用 kwok
12万 pod 也只用了近 1Gi 的内存
6. 对比使用 kind
环境是一个 16G 的笔记本
0 业务 pod, 32 node, 准备创建 3k pod
6.1 部署 kube-ovn cni 后
cni 本身总共耗费了约 3G
第一批 1k
实际用了两个小时 只创建了200个pod,创建速度很慢
1.8G 200 个 pod, 1k pod 大概耗费9-10G, 会超出实际物理内存,由于创建速度太慢,遂放弃测试
总结:
- kwok 只能模拟压测控制面,无法测试 kubelet cni 等功能
我测试了一个肯定会失败的 pod,但是依然是 running 的
参考:
githuab: github.com/kubernetes-…
官方文档: kwok.sigs.k8s.io/