运用Kubernetes进行分布式负载测试
前言
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-master
和locust-work
使用同样的docker镜像,修改cotnroller中spec.template.spec.containers.env
字段中的value为你sample-webapp
service的名字。
- name: TARGET_HOST value: http://sample-webapp:8000
创建Controller Docker镜像(可选)
locust-master
和locust-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来扩容。
配置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
节点。
执行测试
打开http://traefik.locust.io
页面,点击Edit
输入伪造的用户数和用户每秒发送的请求个数,点击Start Swarming
就可以开始测试了。
在测试过程中调整sample-webapp
的pod个数(默认设置了1个pod),观察pod的负载变化情况。
从一段时间的观察中可以看到负载被平均分配给了3个pod。
在locust的页面中可以实时观察也可以下载测试结果。
参考
Distributed Load Testing Using Kubernetes
本文转自中文社区-运用Kubernetes进行分布式负载测试低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
使用 Docker 和 Node 快速实现一个在线的 QRCode 解码服务
本文使用「署名 4.0 国际 (CC BY 4.0)」许可协议,欢迎转载、或重新修改使用,但需要注明来源。 署名 4.0 国际 (CC BY 4.0) 本文作者: 苏洋 创建时间: 2018年12月09日统计字数: 5453字阅读时间: 11分钟阅读本文链接: https://soulteary.com/2018/12/09/use-docker-and-node-to-quickly-implement-an-online-qrcode-decoding-service.html 使用 Docker 和 Node 快速实现一个在线的 QRCode 解码服务 本文将会介绍如何使用 Docker、Node、JavaScript、Traefik完成一个简单的二维码解析服务,全部代码在 300 行以内。 最近折腾文章相关的东西比较多,其中有一个现代化要素其实挺麻烦的,就是二维码。 不论是“生成动态、静态的二维码”,还是“对已经生成的二维码进行解析”,其实都不难实现。只是在日常工作中如果只是基于命令行去操作,会很不方便。 所以花了点时间,实现了一个简单的 QRCode 在线解析工具,在完成这个...
- 下一篇
Kubernetes 1.6新特性系列 | 高级调度
1、简介 Kubernetes的调度器在大多数情况下能过运行的很好,例如:它能够将Pod调度 到有充足资 源的Node上;它能够将一组Pod(ReplicaSet, StatefulSet,等)均匀的调度到不同的Node上;它尽力平衡各个节点的资源使用率等。 但有些时候您会想控制您的Pod如何调度,例如:可能您想让一些Pod被确定调度到某些使用特殊硬件的节点上,或者您想让交互频繁的服务一起调度,或者您想让一些Node只给特定的一些用户提供服务等等。最终,您对于应用程序调度和部署的需求永远要比Kubernetes提供的多。因此,Kubernetes 1.6提供了四个高级高级调度功能:节点亲和性和反亲和性,污点和容忍,Pod亲和性/反亲和性和自定义调度。这四个特性在Kubernetes 1.6版本中都是beta版。 2、Node亲和性/反亲和性 Node亲和性/反亲和性是在Node上设置如何被Scheduler选择的规则一种方式。此功能是自Kubernetes 1.0版本以来在Kubernetes中的nodeSelector的功能的通用化。规则是使用在Pod中指定和选择器上自定义的标签等用...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS6,CentOS7官方镜像安装Oracle11G
- Red5直播服务器,属于Java语言的直播服务器
- Hadoop3单机部署,实现最简伪集群
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- SpringBoot2整合Redis,开启缓存,提高访问速度
- CentOS6,7,8上安装Nginx,支持https2.0的开启