在Kubernetes上部署k6的详细步骤

具体步骤

前置条件

  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,运行成功后得到下图

    在Kubernetes上部署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,然后显示

    在Kubernetes上部署k6的详细步骤

    即压测成功。

问题汇总

  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
    
上一篇:phpstorm 设置本地项目与linux服务器代码自动提交


下一篇:k8s中蓝绿部署、金丝雀发布、滚动更新汇总