运用Kubernetes进行分布式负载测试

栏目: 编程工具 · 发布时间: 5年前

内容简介:Github地址https://github.com/rootsongjc/distributed-load-testing-using-kubernetes该教程描述如何在Kubernetes中进行分布式负载均衡测试,包括一个web应用、docker镜像和Kubernetes controllers/services。更多资料请查看Distributed Load Testing Using Kubernetes 。如果你还没有kubernetes集群,可以参考kubernetes-handbook部署

Github地址https://github.com/rootsongjc/distributed-load-testing-using-kubernetes该教程描述如何在Kubernetes中进行分布式负载均衡测试,包括一个web应用、 docker 镜像和Kubernetes controllers/services。更多资料请查看Distributed Load Testing Using Kubernetes 。

注意:该测试是在我自己本地搭建的kubernetes集群上测试的,不需要使用Google Cloud Platform。

准备

不需要GCE及其他组件,你只需要有一个kubernetes集群即可。

如果你还没有kubernetes集群,可以参考kubernetes-handbook部署一个。

部署Web应用

sample-webapp 目录下包含一个简单的web测试应用。我们将其构建为docker镜像,在kubernetes中运行。你可以自己构建,也可以直接用这个我构建好的镜像 index.tenxcloud.com/jimmy/k8s-sample-webapp:latest

在kubernetes上部署sample-webapp。

$ cd kubernetes-config
$ kubectl create -f sample-webapp-controller.yaml
$ kubectl create -f kubectl create -f sample-webapp-service.yaml

部署Locust的Controller和Service

locust-masterlocust-work 使用同样的docker镜像,修改cotnroller中 spec.template.spec.containers.env 字段中的value为你 sample-webapp service的名字。

- name: TARGET_HOST
  value: http://sample-webapp:8000

创建Controller Docker镜像(可选)

locust-masterlocust-work controller使用的都是 locust-tasks docker镜像。你可以直接下载 gcr.io/cloud-solutions-http://olz1di9xf.bkt.clouddn.com/locust-tasks ,也可以自己编译。自己编译大概要花几分钟时间,镜像大小为820M。

$ docker build -t index.tenxcloud.com/jimmy/locust-tasks:latest .
$ docker push index.tenxcloud.com/jimmy/locust-tasks:latest

注意:我使用的是时速云的镜像仓库。

每个controller的yaml的 spec.template.spec.containers.image 字段指定的是我的镜像:

image: index.tenxcloud.com/jimmy/locust-tasks:latest

部署Locust-Master

$ kubectl create -f locust-master-controller.yaml
$ kubectl create -f locust-master-service.yaml

部署Locust-Worker

Now deploy locust-worker-controller :

$ kubectl create -f locust-worker-controller.yaml

你可以很轻易的给work扩容,通过命令行方式:

$ kubectl scale --replicas=20 replicationcontrollers locust-worker

当然你也可以通过WebUI:Dashboard – Workloads – Replication Controllers – ServiceName – Scale来扩容。

运用Kubernetes进行分布式负载测试

配置Traefik

参考kubernetes的traefik ingress安装,在 ingress.yaml 中加入如下配置:

- host: traefik.locust.io
    http:
      paths:
      - path: /
        backend:
          serviceName: locust-master
          servicePort: 8089

然后执行 kubectl replace -f ingress.yaml 即可更新traefik。

通过Traefik的dashboard就可以看到刚增加的 traefik.locust.io 节点。

运用Kubernetes进行分布式负载测试

执行测试

打开 http://traefik.locust.io 页面,点击 Edit 输入伪造的用户数和用户每秒发送的请求个数,点击 Start Swarming 就可以开始测试了。

运用Kubernetes进行分布式负载测试

在测试过程中调整 sample-webapp 的pod个数(默认设置了1个pod),观察pod的负载变化情况。

运用Kubernetes进行分布式负载测试

从一段时间的观察中可以看到负载被平均分配给了3个pod。

在locust的页面中可以实时观察也可以下载测试结果。

运用Kubernetes进行分布式负载测试

来源:  https://www.kubernetes.org.cn/1895.html


以上所述就是小编给大家介绍的《运用Kubernetes进行分布式负载测试》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Beginning ARKit for iPhone and iPad

Beginning ARKit for iPhone and iPad

Wallace Wang / Apress / 2018-11-5 / USD 39.99

Explore how to use ARKit to create iOS apps and learn the basics of augmented reality while diving into ARKit specific topics. This book reveals how augmented reality allows you to view the screen on ......一起来看看 《Beginning ARKit for iPhone and iPad》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换