先决条件

kubernetes 集群 > Kubernetes 1.8 或 OpenShift 版本 > 3.5 在裸机、虚拟机或任何其他云提供商上运行。

 

简单介绍


       负载测试是对软件系统或计算设备提出需求并测量其响应的过程。执行负载测试以确定系统在正常和预期峰值负载条件下的行为。它有助于识别应用程序的最大运行容量以及任何瓶颈,并确定导致性能下降的元素。当施加在系统上的负载超出正常使用模式以测试系统在异常高或峰值负载下的响应时,称为压力测试。负载通常如此之大,以至于错误条件是预期的结果,但是当活动不再是负载测试并成为压力测试(来自维基百科的定义)时,没有明确的界限。

Apache Jmeter 是使用最广泛的开源负载测试框架,它是用 Java 编写的,因此它需要您安装 Java 运行时软件。该项目已经成熟,并为其开发了多个贡献和插件。

它几乎可以测试各种应用程序。

结构图

 

上面显示了分布式负载测试的概念,您可以从中央节点(称为 Jmeter 主节点)启动测试,该节点又将测试脚本发送到从节点,从节点是执行负载测试的节点/pod。如果您想执行可以模拟成百上千并发用户的密集负载测试,您将使用这样的分布式架构,这就是我们将在这篇博文中看到的场景

 

Kubernetes 部署

 

使用上图,我们将使用 Inluxdb 存储负载测试的结果,然后使用 Grafana 查看测试继续的趋势以及历史数据。
jmeter_cluster_create.sh——这个脚本将要求一个唯一的租户名称(命名空间),然后它会继续创建命名空间和所有组件(jmeter master、slave、influxdb和grafana)。
注意 - 在开始之前,在 jmeter_slaves_deploy.yaml 文件中设置要用于从属节点的副本数量,通常副本应与您拥有的工作节点数量相匹配。
jmeter_master_configmap.yaml — Jmeter 主部署的配置映射
jmeter_master_deployment.yaml — jmeter master 的部署清单。
jmeter_slaves_deploy.yaml — jmeter 从站的部署清单。
jmeter_slave_svc.yaml — jmeter 从站的服务清单。它使用无头服务,这使我们能够直接获取 jmeter slaves POD ip 地址,为此我们不需要 DNS 或循环。我们创建它是为了更容易地将 slave pod IP 地址直接提供给 jmeter master,稍后将展示这样做的优势。
jmeter_influxdb_configmap.yaml — influxdb 部署的配置映射。如果你想在默认的 influxdb 端口之外使用石墨存储方法,这将配置 influxdb 暴露端口 2003 以支持石墨。因此,您可以使用 influxdb 部署来支持 jmeter 后端侦听器方法(graphite 和 influxdb)。
jmeter_influxdb_deploy.yaml — Influxdb 的部署清单
jmeter_influxdb_svc.yaml — Influxdb 的服务清单。
jmeter_grafana_deploy.yaml — grafana 部署清单。
jmeter_grafana_svc.yaml — grafana 部署的服务清单,它默认使用 NodePort,如果您在公共云中运行它,您可以将其更改为 LoadBalancer(并且可能设置一个 CNAME 以使用 FQDN 缩短名称)。
jmeter_grafana_reporter.yaml — 报告模块的部署和服务清单。
仪表板.sh — 此脚本用于自动创建以下内容: (1) influxdb pod 中的一个 influxdb 数据库 (jmeter)。 (2)grafana pod中的一个数据源(jmeterdb)
start_test.sh — 该脚本用于自动运行 Jmeter 测试脚本,无需您手动登录 Jmeter 主 shell,它会询问 jmeter 测试脚本的位置,然后将其复制到 jmeter 主 pod 并启动自动测试 jmeter 从站。
GrafanaJMeterTemplate.json — 预构建的 jmeter grafana 仪表板,也可以在 jmeter 安装文件夹(extras 文件夹)中找到。


Kubernetes > 1.16

OpenShift version > 3.5

## TL;DR

```bash
./dockerimages.sh
./jmeter_cluster_create.sh
./dashboard.sh
./start_test.sh
```

Please follow the guide "Load Testing Jmeter On Kubernetes" on our medium blog 

如果用windows 会提示:

./dashboard.sh
Creating Influxdb jmeter Database
Unable to use a TTY - input is not a terminal or the right kind of file
Error from server: error dialing backend: open /run/config/pki/apiserver-kubelet-client.crt: no such file or directory
Creating the Influxdb data source
Unable to use a TTY - input is not a terminal or the right kind of file
Error from server: error dialing backend: open /run/config/pki/apiserver-kubelet-client.crt: no such file or directory
Unable to use a TTY - input is not a terminal or the right kind of file
Error from server: error dialing backend: open /run/config/pki/apiserver-kubelet-client.crt: no such file or directory
Unable to use a TTY - input is not a terminal or the right kind of file
Error from server: error dialing backend: open /run/config/pki/apiserver-kubelet-client.crt: no such file or directory


 

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐