在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命令进行上传网站的包文件. ②.解压程序代码,并将程序代码保存到站点目录,并进 ...
随机推荐
- MySql笔记Ⅱ
MySql笔记2: part3:(table相关的操作) 数据的增删改 create table t1( id int primary key auto_increment, username cha ...
- ML第3周学习小结
本周收获 总结一下本周学习内容: 1.学习了<深入浅出Pandas>的第五章:Pandas高级操作的三个内容 复杂查询 数据类型转换 数据排序 我的博客链接: Pandas复杂查询.数据类 ...
- 省HVV初体验(edu)
浙江省HVV初体验 此次参加的HVV是edu分会场,总的来说是对HVV有了一个初步的认识,了解实战和靶场练习之间存在的巨大鸿沟. 经历了这次HVV,对于渗透测试有了更深一步的理解.渗透测试的本质就是信 ...
- .NET中按预定顺序执行任务
更新记录 本文迁移自Panda666原博客,原发布时间:2021年7月1日. 一.说明 在.NET中线程可以定义按先后顺序进行执行,适合部分有先后次序的业务逻辑.Task也可以按照预定义的先后顺序执行 ...
- php类精确验证身份证号码
<?php // check class check{ // $num为身份证号码,$checkSex:1为男,2为女,不输入为不验证 public function checkIdentity ...
- 13.LAMP架构介绍及配置
LAMP架构介绍及配置 LAMP简介与概述 LAMP概述 LAMP架构是目前成熟的企业网站应用模式之一,指的是协同工作的一整套系统和相关软件,能够提供动态Web站点服务及其应用开发环境. LAMP是一 ...
- 推荐一款M1芯片电脑快速搭建集群的虚拟机软件
虚拟机软件太多了,出名的莫过于VMware,VirutlaBox以及Parallels Desktop. 我们使用虚拟机软件一般有两种用途: 安装不同于宿主机系统的拥有用户界面的操作系统,比如Wind ...
- MYSQL的事务和索引
事务 什么是事务 事务就是将一组SQL语句放在同一批次内去执行 如果一个SQL语句出错,则该批次内的所有SQL都将被取消执行 MySQL事务处理只支持InnoDB和BDB数据表类型 事务的ACID原则 ...
- 自建批量更改标准BO数据程序
by zyi
- Tomcat深入浅出——Servlet(二)
一.Servlet简介 Servlet类最终开发步骤: 第一步:编写一个Servlet类,直接继承HttpServlet 第二步:重写doGet方法或者doPost方法,重写哪个我说的算! 第三步:将 ...