K8s官方推出集群模拟工具包KWOK,方便用户开发与测试集群

Kubernetes特别兴趣小组(Special Interest Group,SIG)发布了一个称为KWOK(Kubernetes WithOut Kubelet)的模拟测试工具包,使得用户可以在数秒钟内,以低资源模拟创建具有数千节点的集群,在不占用大量基础设施的情况,大规模测试Kubernetes控制器。

Kubernetes是一个容器化应用程序调度工具,让用户能够在节点之间方便地管理Pod,每个节点都需要一个管理员,那便是Kubelet的工作,而KWOK便是“没有Kubelet的Kubernetes”英文缩写。

由于消除Kubelet,KWOK以模拟的方式创建节点、Pod和Kubernetes资源,因此不会消耗大量CPU和内存资源,用户在单一笔记本上就可以模拟出数千节点,而且KWOK操作迅速,能够立刻创建和删除集群和节点,不需要等待或是进行额外配置。

KWOK可以和任何支持Kubernetes API的工具和客户端搭配使用,像是kubectl、helm和kui等都没问题,同时KWOK也可以配置不同的节点类型、标签、容量和条件等,借由设置不同的Pod行为、状态,用户能够测试不同的场景和特殊情况。由于KWOK具有可移植性,没有特殊的硬件或是软件要求,因此安装Docker或Nerdctl后,用户便可以使用预构建的镜像文件执行,或是以二进制文件在各种平台安装。

该项目目前有两个主要的工具,分别是kwok和kwokctl,kwok负责模拟假节点、Pod和Kubernetes API的资源生命周期,而kwokctl则是命令行工具,供用户简单地以kwok模拟的节点,创建和管理集群。

虽然KWOK没办法实际创建节点,但是由于能够模拟各种Kubernetes资源,且执行速度很快,所以方便用于学习、开发和测试等非生产用途。但也因为KWOK不是Kubelet,因此在Pod生命周期管理、磁盘区挂载和设备组件等方面行为不同,KWOK主要的功能只是模拟节点和Pod的状态更新。

由于KWOK仅使用简单的公式来模拟逼近部分Kubelet行为,因此并无法反映实际节点和工作负载的性能和行为,而且KWOK不会在模拟节点上强制执行任何安全策略和机制,会假设kube-apiserver的所有请求,都是经过授权且有效的,因此在学习、开发和测试之外的用途使用,将会有安全性的问题。