在Kubernetes上部署k6的详细步骤
k6介绍
k6是一款使用go语言编写的开源测试工具,支持用户编写测试脚本,解决了JMeter不易代码化的缺点。它的主要特点有
- 提供了友好的 CLI 工具
- 使用 JavaScript 代码编写测试用例
- 可以根据性能条件设置阈值,表明成功还是失败
另外,k6不能直接使用 npm 包以及 Nodejs 提供的一些 API,因为它是通过golang程序包裹了javaScript运行js脚本的。
具体步骤
前置条件
下载kubectl
brew install kubectl
安装helm
brew install helm
新建一个放置k6的文件夹
配置并安装k6
输入
vim k6-deployment.yaml
在里面详细写出对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"接着在k8s上部署k6,namespace的名字自己定义,
kubectl apply -f k6-deployment.yaml -n k6
此时它会显示
deployment.apps/k6-deployment created
说明部署已经成功。
输入
kubectl -n k6 exec -it k6-deployment-57fd465f75-wxfj8 /bin/sh
运行k6,运行成功后得到下图
进行压测
编写脚本
此处使用k6官网上的测试脚本进行一次小压测,在终端输入
vi 脚本名称.js
,并在弹出来的窗口中输入脚本内容,此处使用的脚本为import http from 'k6/http';
import { sleep } from 'k6';
export default function () {
http.get('http://test.k6.io');
sleep(1);运行脚本
输入命令
k6 run 脚本名称.js
,然后显示即压测成功。
问题汇总
如果输入
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
最新文章
- VS 常用高效 快捷键
- 拓扑排序&;&;欧拉(回)路
- 关于JS的总结
- Android ListView自定义Adapter使用误区
- dubug
- MySQL 插入与自增主键值相等的字段 与 高并发下保证数据准确的实验
- angular这个大梗的学习笔记
- Python学习第一周
- JavaScript,只有你想不到
- react系列笔记:第二记-中间件
- js鼠标相关事件
- 用curl模拟夹带cookie的http请求
- JavaScript学习总结(二)——延迟对象、跨域、模板引擎、弹出层、AJAX示例
- 撩课-Java每天5道面试题第19天
- Linux内核分析第一二章读书笔记
- Jquery为动态添加的未来元素绑定事件
- CF 366E - Dima and Magic Guitar 最远曼哈顿距离
- FairyGUI和NGUI对比
- 基于zookeeper简单实现分布式锁
- 理解OpenID和OAuth的区别