在 K8s 的使用中,我们会遇到这样一个场景,现有集群只有几个节点,但是我想模拟测试大规模集群时,集群的压力性能会表现如何呢?这里就需要用到 kubemark 了。
原理
kubemark 是 K8s 官方给出的性能测试工具,能够不受任何资源限制,模拟出一个大规模 K8s 集群。其主要架构如图所示:需要一个外部 K8s 集群(external cluster) 以及一个机器节点运行 kubemark master,即另外一个 K8s 集群,但是只有一个 master 节点。我们需要在 external cluster 中部署运行 hollow pod,这些 pod 会主动向 kubemark 集群注册,并成为 kubemark 集群中的 hollow node(虚拟节点)。然后我们就可以在 kubemark 集群中进行 e2e 测试。虽然与真实集群的稍微有点误差,不过可以代表真实集群的数据。
准备
我使用的版本是 v1.14.6
构建 kubemark 镜像
首先需要下载下来 K8s 的源代码,并切换到对应分支上。然后执行
make quick-release
编译出的二进制存储在 _output
目录下。
注意,在编译过程中,需要 pull 一些镜像,可能需要翻墙,建议提前 pull 下来。主要用到的镜像有:
- k8s.gcr.io/kube-cross:v1.12.5-1
- k8s.gcr.io/debian-base-amd64:v1.0.0
- k8s.gcr.io/debian-iptables-amd64:v11.0.2
然后进入到