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

在Kubernetes上部署k6的详细步骤的更多相关文章

  1. Kubernetes集群的部署方式及详细步骤

    一.部署环境架构以及方式 第一种部署方式 1.针对于master节点 将API Server.etcd.controller-manager.scheduler各组件进行yum install.编译安 ...

  2. 在 Kubernetes 上部署 OpenStack 是什么体验

    红蓝出 CP,OpenStack 和 Kubernetes 在一起会怎样? 背景 从去年开始就想深入地学习 Kubernetes,首先想到是在 OpenStack 上能比较轻松地玩转,所以去 尝试了 ...

  3. 在Kubernetes上部署应用时我们常忽略的几件事

    根据我的经验,大多数人(使用Helm或手动yaml)将应用程序部署到Kubernetes上,然后认为他们就可以一直稳定运行. 然而并非如此,实际使用过程还是遇到了一些"陷阱",我希 ...

  4. Kubernetes 上部署应用-- 以Wordpress 为例

    用一个 Wordpress 示例来尽可能将前面的知识点串联起来,我们需要达到的目的是让 Wordpress 应用具有高可用.滚动更新的过程中不能中断服务.数据要持久化不能丢失.当应用负载太高的时候能够 ...

  5. Tomcat手动部署Web项目详细步骤

    阅读须知:文章基于Tomcat8,其它版本若有差异,请自行辨别.本文为博主原创文章,转载请附原文链接. 不借助任何IDE,这里介绍在Tomcat中手动部署web项目的三种方式: 1.部署解包的weba ...

  6. Windows Cluster失败后,AlwaysOn在残存Server节点上快速恢复DB的详细步骤

    AlwaysOn是一种集合了高可用和灾难恢复两种功能的技术,它支持一个或多个数据库整体的发生故障转移,它实现了一定程度上的负载均衡,减轻了主服务器的压力,是目前最好的一种选择.那么当极端情况发生时,集 ...

  7. 阿里云服务器上安装mysql的详细步骤

    阿里云安装mysql (1)下载mysql安装包,去mysql官网下载对应的包 mysql数据库官方下载网址:   https://downloads.mysql.com/archives/commu ...

  8. linux系统上安装mysql5.6(详细步骤)

    为了学习mycat 尝试在虚拟机上装mysql(看了别人的博客比划着安装),但装了两次都没成功.因此总结了如下步骤 有需要的朋友可以试下(linux需要联网) mysql-5.6.26.tar.gz百 ...

  9. 用lnmp架构部署wordpress网站详细步骤

    用lnmp架构部署wordpress网站 ①.下载和上传网站代码 用winscp或者xftp, 或者xshell下执行rz命令进行上传网站的包文件. ②.解压程序代码,并将程序代码保存到站点目录,并进 ...

随机推荐

  1. elementUI 函数自定义传参

    <div v-for="(item,i) in ruleContent" :key="i"> <!-- eg:想通过循环将[i]传进函数rul ...

  2. Three.js 打造缤纷夏日3D梦中情岛 🌊

    声明:本文涉及图文和模型素材仅用于个人学习.研究和欣赏,请勿二次修改.非法传播.转载.出版.商用.及进行其他获利行为. 背景 深居内陆的人们,大概每个人都有过大海之梦吧.夏日傍晚在沙滩漫步奔跑:或是在 ...

  3. 关于Dotween旋转以及OnValidate函数的解读

    在DoTween中可以选择do旋转.但是旋转模式分成四种,且又有DoLocalRotate和DoRotate的区别,所以在此记录一下. DoLocalRotate和DoRotate的区别在于,前者是基 ...

  4. Linux Cgroup v1(中文翻译)(2):CPUSETS

    英文原文:https://www.kernel.org/doc/html/latest/admin-guide/cgroup-v1/cpusets.html Copyright (C) 2004 BU ...

  5. Improved Security for a Ring-Based Fully Homomorphic Encryption Scheme-2013:解读

    本文记录阅读此论文的笔记 摘要 (1)1996年,HPS三人提出一个格上的高效加密方案,叫做NTRUEncrypt,但是没有安全性证明:之后2011年,SS等人修改此方案,将其安全规约到标准格上的困难 ...

  6. MySQL 8.0 Undo Tablespace管理

    目录 1. UNDO 基础概念 2. UNDO 相关参数 2.1 参数含义 3. UNDO 表空间运维 3.1 查看UNDO的基本信息 3.2 添加/active/inactive/删除UNDO表空间 ...

  7. 为什么 C# 访问 null 字段会抛异常?

    一:背景 1. 一个有趣的话题 最近在看 硬件异常 相关知识,发现一个有意思的空引用异常问题,拿出来和大家分享一下,为了方便讲述,先上一段有问题的代码. namespace ConsoleApp2 { ...

  8. docker 部署 minio

    1.下载镜像 docker pull minio/minio 2.启动 docker run -p 9000:9000 --name minio \ -d --restart=always \ -e ...

  9. 方法引用(Method References)

    * 方法引用的使用 * * 1.使用情境:当要传递给Lambda体的操作,已经有实现的方法了,可以使用方法引用! * * 2.方法引用,本质上就是Lambda表达式,而Lambda表达式作为函数式接口 ...

  10. Java8 函数式【1】:一文读懂逆变

    Java8 函数式[1]:一文读懂逆变 禁止转载 pure function 协变 逆变 Java8 引入了函数式接口,从此方法传参可以传递函数了,有人说: 不就是传一个方法吗,语法糖! lambda ...