首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >在Kubernetes上部署k6的详细步骤

在Kubernetes上部署k6的详细步骤

原创
作者头像
Nanako
修改2021-03-25 18:59:34
1.7K0
修改2021-03-25 18:59:34
举报

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

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • k6介绍
  • 具体步骤
    • 前置条件
      • 配置并安装k6
        • 进行压测
        • 问题汇总
        相关产品与服务
        容器镜像服务
        容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档