专栏首页云原生压测团队在Kubernetes上部署k6的详细步骤
原创

在Kubernetes上部署k6的详细步骤

k6介绍

k6是一款使用go语言编写的开源测试工具,支持用户编写测试脚本,解决了JMeter不易代码化的缺点。它的主要特点有

  • 提供了友好的 CLI 工具
  • 使用 JavaScript 代码编写测试用例
  • 可以根据性能条件设置阈值,表明成功还是失败

另外,k6不能直接使用 npm 包以及 Nodejs 提供的一些 API,因为它是通过golang程序包裹了javaScript运行js脚本的。

具体步骤

前置条件

  1. 下载kubectl

brew install kubectl

2. 安装helm

brew install helm

3. 新建一个放置k6的文件夹

配置并安装k6

  1. 输入vim k6-deployment.yaml
  2. 在里面详细写出对k6的配置
apiVersion: apps/v1
kind: Deployment
metadata:
name: k6-deployment
labels:
   app: k6
   spec:
replicas: 1
selector:
   matchLabels:
     app: k6
template:
   metadata:
     labels:
       app: k6
spec:
     containers:
     - name: k6
       image: loadimpact/k6
       command: ["tail","-f","/dev/null"]
       resources:
         requests:
           memory: "64Mi"
           cpu: "250m"
         limits:
           memory: "128Mi"
           cpu: "500m"
           

3. 接着在k8s上部署k6,namespace的名字自己定义,kubectl apply -f k6-deployment.yaml -n k6

此时它会显示

   deployment.apps/k6-deployment created

说明部署已经成功。

4. 输入kubectl -n k6 exec -it k6-deployment-57fd465f75-wxfj8 /bin/sh运行k6,运行成功后得到下图

进行压测

  1. 编写脚本

此处使用k6官网上的测试脚本进行一次小压测,在终端输入vi 脚本名称.js,并在弹出来的窗口中输入脚本内容,此处使用的脚本为

   import http from 'k6/http';

   import { sleep } from 'k6';

   export default function () {


 http.get('http://test.k6.io');

 sleep(1);
 

2. 运行脚本

输入命令k6 run 脚本名称.js,然后显示

即压测成功。

问题汇总

  1. 如果输入kubectl get pods -n k6,却显示
   NAME                                         READY   STATUS             RESTARTS   AGE

   k6-deployment-84f77b464f-2qjkb   0/1     CrashLoopBackOff   1          23s

说明这个pod一直在重复着【启动,崩溃,再次启动,然后再次崩溃】的过程。

解决方法:

k6-deployment.yaml文件里的container里加上command: ["tail","-f","/dev/null"],这条命令的作用是保持容器一直处于运行状态,上面的yaml文件里已经加好了。

注:此命令一般用于【 docker 容器中的进程(pid 1)没有在前台运行,如果前台没有任何进程运行,docker 会自动关闭自己】的情况

此时输入kubectl get pods -n k6,可以得到

   NAME                                         READY   STATUS        RESTARTS   AGE

   k6-deployment-57fd465f75-wxfj8   1/1     Running       0          9s

   k6-deployment-84f77b464f-2qjkb   0/1     Terminating   6          7m15s

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 社区精华文章目录

    小余同学
  • 【必看】社区文章目录

    Nanako
  • 开源TBase编译部署详细步骤

    很多学员想学习TBase数据库,但是苦于没有企业版的授权文件,在编译部署开源版本的时候又遇到诸多问题,因此我写下这篇文章供大家参考。

    腾讯云数据库 TencentDB
  • 在CentOS中部署多节点Citus集群的详细步骤

    本文主要介绍了关于CentOS中部署多节点Citus集群的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。

    砸漏
  • 使用docker部署spring cloud项目详细步骤

    (1)到Oracle官网下载好 jdk-8u181-linux-x64.tar.gz 备用 (2)卸载系统自带的java

    lyb-geek
  • 使用docker部署spring cloud项目详细步骤

    (1)到Oracle官网下载好 jdk-8u181-linux-x64.tar.gz 备用 (2)卸载系统自带的java

    java思维导图
  • 使用docker部署spring cloud项目详细步骤

    (1)到Oracle官网下载好 jdk-8u181-linux-x64.tar.gz 备用 (2)卸载系统自带的java

    JAVA葵花宝典
  • IntelliJ IDEA 热部署插件JRebel 的详细安装步骤

    IDEA本身没有集成热部署工具,一开始改动代码之后,都需要重新run或者debug,让开发效率大打折扣,而JRebel是一个很好的热部署工具。 安装和使用JR...

    魏晓蕾
  • K6 在 Nebula Graph 上的压测实践

    对于数据库来说,性能测试是一个非常频繁的事情。优化查询引擎的规则,调整存储引擎的参数等,都需要通过性能测试,查看系统在不同场景下的影响。

    NebulaGraph
  • 梦开始的地方 | 部署Oracle 11g单实例详细步骤

    本文来自一位网友的投稿,该网友初入职场,带着对未来的憧憬,踏上梦想的征程;从他的身上,我看到了曾今的自己;不悔梦归处,只恨太匆匆!本文主要内容是关于Oracle...

    SEian.G
  • 使用Nginx配置TCP负载均衡

    Nginx是比较不错的开源Web服务器之一,但它也可以用作TCP和UDP负载均衡器。使用Nginx作为HAProxy的负载均衡器的主要好处之一是,它还可以负载均...

    用户1685462
  • Centos7.2/7.3集群安装Kubernetes 1.8.4 + Dashboard

    1.环境配置 结点数量:3 结点系统:CentOS 7.2 / 7.3 ---- 2.效果展示 ? ? ---- 3.搭建Kubernetes环境【1】 3.1...

    昊楠Hacking
  • 通过二进制包一键部署 Kubernetes v1.15.0 集群

    版权声明:署名,允许他人基于本文进行创作,且必须基于与原先许可协议相同的许可协议分发本文 (Creative Commons)

    耕耘实录
  • 使用Prometheus Operator监控集群

    据Sysdig发布的容器报告,容器以及如Kubernetes等编排工具的使用增长了51%以上,大家开始将工作负载在集群中进行托管并管理。鉴于集群中短暂的状态,对...

    CNCF
  • 简介Kube-liveboard——一款可视化操作工具

    Kubernetes这个自动化容器操作的开源平台,这些操作包括部署,调度和节点集群间扩展。因其具有对容器集群的方便部署,自动伸缩扩容,以及便于维护等功能和特性,...

    CNCF
  • 业界 | 谷歌发布机器学习工具库Kubeflow:可提供最佳OSS解决方案

    选自GitHub 机器之心编译 Kubeflow 是谷歌发布的一个机器学习工具库,致力于使运行在 Kubernetes 上的机器学习变的更轻松、便捷和可扩展;K...

    机器之心
  • Nginx+uWSGI部署Django网站的详细步骤,脱坑必备,值得收藏!

    对于Django部署来说,选择nginx和uWSGI是一个不错的选择,此教程旨在将Django部署到生产环境的服务器中。当然你也可以使用Apache或者其他的服...

    Python中文社区
  • redis学习(十二)

    什么是Jedis 是 Redis 官方推荐的 java连接开发工具! 使用Java 操作Redis 中间件!如果你要使用 java操作redis,那么一定要对...

    崔笑颜
  • 在K8s上轻松部署Tungsten Fabric的两种方式

    首先介绍下如何在AWS上使用Kubernetes编排的Tungsten Fabric集群部署沙盒,15分钟就可以搞定。Tungsten Fabric集群由部署节...

    Tungsten Fabric

扫码关注云+社区

领取腾讯云代金券