在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
在Kubernetes上部署k6的详细步骤的更多相关文章
- Kubernetes集群的部署方式及详细步骤
一.部署环境架构以及方式 第一种部署方式 1.针对于master节点 将API Server.etcd.controller-manager.scheduler各组件进行yum install.编译安 ...
- 在 Kubernetes 上部署 OpenStack 是什么体验
红蓝出 CP,OpenStack 和 Kubernetes 在一起会怎样? 背景 从去年开始就想深入地学习 Kubernetes,首先想到是在 OpenStack 上能比较轻松地玩转,所以去 尝试了 ...
- 在Kubernetes上部署应用时我们常忽略的几件事
根据我的经验,大多数人(使用Helm或手动yaml)将应用程序部署到Kubernetes上,然后认为他们就可以一直稳定运行. 然而并非如此,实际使用过程还是遇到了一些"陷阱",我希 ...
- Kubernetes 上部署应用-- 以Wordpress 为例
用一个 Wordpress 示例来尽可能将前面的知识点串联起来,我们需要达到的目的是让 Wordpress 应用具有高可用.滚动更新的过程中不能中断服务.数据要持久化不能丢失.当应用负载太高的时候能够 ...
- Tomcat手动部署Web项目详细步骤
阅读须知:文章基于Tomcat8,其它版本若有差异,请自行辨别.本文为博主原创文章,转载请附原文链接. 不借助任何IDE,这里介绍在Tomcat中手动部署web项目的三种方式: 1.部署解包的weba ...
- Windows Cluster失败后,AlwaysOn在残存Server节点上快速恢复DB的详细步骤
AlwaysOn是一种集合了高可用和灾难恢复两种功能的技术,它支持一个或多个数据库整体的发生故障转移,它实现了一定程度上的负载均衡,减轻了主服务器的压力,是目前最好的一种选择.那么当极端情况发生时,集 ...
- 阿里云服务器上安装mysql的详细步骤
阿里云安装mysql (1)下载mysql安装包,去mysql官网下载对应的包 mysql数据库官方下载网址: https://downloads.mysql.com/archives/commu ...
- linux系统上安装mysql5.6(详细步骤)
为了学习mycat 尝试在虚拟机上装mysql(看了别人的博客比划着安装),但装了两次都没成功.因此总结了如下步骤 有需要的朋友可以试下(linux需要联网) mysql-5.6.26.tar.gz百 ...
- 用lnmp架构部署wordpress网站详细步骤
用lnmp架构部署wordpress网站 ①.下载和上传网站代码 用winscp或者xftp, 或者xshell下执行rz命令进行上传网站的包文件. ②.解压程序代码,并将程序代码保存到站点目录,并进 ...
随机推荐
- CF335E Counting Skyscrapers 题解
提供一种最劣解第一且巨大难写的做法( Bob 显然真正的楼量可以达到 \(314!\),是没办法直接做的,再加上唯一方案的样例,可以猜测有简单的结论. 考虑当楼高度为 \(k(k<h)\) 时, ...
- CentOS 8.0与CentOS7.0 防火墙端口设置
一,开放端口号 firewall-cmd --zone=public --add-port=8080/tcp --permanent #开启8080端口 firewall-cmd --zone=pu ...
- 前端工作中用到的openlayers相关的公共方法
/** * 获取地图上的图层对象 * @param map 地图对象 * @param layerName 实例化图层时的name * @return {null}*/ getLayerByLayer ...
- 集成学习——GBDT(手推公式)
- SAP Web Dynpro-版本管理
您可以使用版本管理来管理对象的旧版本,比较版本,也可以重置它们. 在版本管理中,您可以存储ABAP开发对象的不同版本. 在ABAP工作台中,您可以比较不同版本的- 视图 视窗 控制器 您也可以存储对象 ...
- 无语怎么这么简单!——python实现中文字幕雨+源代码(源码可赠)
大家好鸭,我是小熊猫 最近浏览了很多关于用Python和Pygame实现代码雨的案例,发现很多都是没有深入讲解代码的整个实现过程,从0到1教会你制作中文文字雨(其实啥字好像都可以). 然后在介绍的过程 ...
- 到点了开始网抑云(悲)但是用python(整活)
写在前面的一点网抑云: 爱情不是随便许诺好了不想再说了没错 是我那么多的冷漠 让你感觉到无比的寂寞不过 一个女人的不仅仅渴望得到的一个承诺我害怕欺骗也害怕寂寞更害怕我的心会渐渐地凋落爱情不是随便许诺好 ...
- Java:如何打印整个字符串数组?
例: public static void main(String[] args) { String prodName = "雇员姓名,雇员唯一号"; String[] prodN ...
- Mybatis整合第三方缓存
1) 为了提高扩展性.MyBatis定义了缓存接口Cache.我们可以通过实现Cache接口来自定义二级缓存 2) EhCache 是一个纯Java的进程内缓存框架,具有快速.精干等特点. 3) 整合 ...
- Detecting Rumors from Microblogs with Recurrent Neural Networks(IJCAI-16)
记录一下,很久之前看的论文-基于RNN来从微博中检测谣言及其代码复现. 1 引言 现有传统谣言检测模型使用经典的机器学习算法,这些算法利用了根据帖子的内容.用户特征和扩散模式手工制作的各种特征,或者简 ...