基于kubernetes搭建分布式压测系统是怎样的

发布时间:2021-12-10 19:05:31 作者:柒染
来源:亿速云 阅读:158

这篇文章将为大家详细讲解有关基于kubernetes搭建分布式压测系统是怎样的,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

分布式压测方案借助的三个技术

原理上来讲,需要借助三方面的技术:

编程技术

这里我们选择了我们团队较熟悉的python,不同团队可以有不同的选择;

压测引擎

我们用的是Locust,因为它是用python写脚本,其实也可以更换成jmeter之类的其它压测引擎,

kubernetes

主要利用它的服务编排技术来进行一个资源上的调度,经过我们测试,如果是普通集群,在需要弹出集群物理节点的情况下,全部就绪需要90秒,但是使用弹性集群,则可以压缩到15~20秒,所以推荐使用弹性集群。 整个技术框架原理上,压测节点分为主节点(master)、从节点 (slave)和监控节点(monitor)三种类型:

基于kubernetes搭建分布式压测系统是怎样的

主节点

负责任务管理和数据采集聚合,本身不进行压测任务

从节点

负责压测任务

监控节点

从主节点将结果通过webhook传递给web服务处理端;

另外这些节点的状态、日志都会通过k8s的api进行采集。 根据压测任务里主从节点所申请的资源,集群将提前伸缩好节点,并将任务分配到不同节点,以达到动态提高压测能力的目的。

压测流程

基于kubernetes搭建分布式压测系统是怎样的

右边为用户所感知到的过程,压测集中包括多个压测场景,通过编写压测脚本和配置压测参数的方式生成压测任务,并最终生成压测报告。

左边为python控制集群来生成任务的过程,具体是渲染生成不同任务的yaml文件后,生成相应的 job pod,然后持续将 pod 状态 、日志和压测曲线结果反馈在页面上。

整个过程所使用的技术并没有多高深,主要是在集群应用上的一种探索。

实现方法

使用yaml编排job服务,举例slave节点来说,主要是声明一个job类型的工作负载,将生成的任务从节点名以及任务生成的命名空间渲染上去,然后设置我们的压测基础镜像以及启动命令,这里我们用到了 kubernetes 的几个技巧,一个是通过hostAliases进行内部解析,这样可以对一些内网代理进行压测,另一个是声明申请资源CPU,以便在任务启动前提前伸缩好物理节点提供资源,还有一个是通过configmap挂载可执行文件,这样可以注入参数在变化的启动命令,而不需要重新构建镜像。

基于kubernetes搭建分布式压测系统是怎样的

然后说一下我们的代码框架,主要是分为这几个模块: 基于kubernetes搭建分布式压测系统是怎样的

然后最后我们来看下效果: 基于kubernetes搭建分布式压测系统是怎样的

这是我们压测系统的管理界面,现在看到的是压测集,方便集中管理。

基于kubernetes搭建分布式压测系统是怎样的

这是创建压测场景,并基于该场景编写python压测脚本,并可设置我们的任务参数。

基于kubernetes搭建分布式压测系统是怎样的

这是压测任务详情页,可以看到压测参数、状态以及节点情况和查看日志。

基于kubernetes搭建分布式压测系统是怎样的

这是压测过程中实时生成的图表,可以基于图表情况进行分析。

未来改进方向

关于基于kubernetes搭建分布式压测系统是怎样的就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

推荐阅读:
  1. 怎么搭建fastDFS分布式系统
  2. 搭建Kubernetes,基于Kubeadm

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

kubernetes

上一篇:spring boot搭建个人博客中如何实现列表,详情,分页功能

下一篇:怎么实现Zynq-7000开发环境的搭建

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》