作者 | 悟鹏

引子

性能测试在日常的开发工作中是常规需求,用来摸底服务的性能。

那么如何做性能测试?要么是通过编码的方式完成,写一堆脚本,用完即弃;要么是基于平台,在平台定义的流程中进行。对于后者,通常由于目标场景的复杂性,如部署特定的 workload、观测特定的性能项、网络访问问题等,往往导致性能测试平台要以高成本才能满足不断变化的开发场景的需求。

在云原生的背景下,是否可以更好解决这种问题?

先看两个 yaml 文件:

  • performance-test.yaml 描述了在 K8s 中的操作流程:

    1. 创建测试用的 Namespace
    2. 启动针对 Deployment 创建效率和创建成功率的监控
    3. 下述动作重复 N 次:① 使用 workload 模板创建 Deployment;② 等待 Deployment 变为 Ready
    4. 删除测试用的 Namespace
  • basic-1-pod-deployment.yaml 描述使用的 workload 模板

performance-test.yaml :

apiVersion: aliyun.com/v1alpha1
kind: Beidou
metadata:name: performancenamespace: beidou
spec:steps:- name: "Create Namespace If Not Exits"operations:- name: "create namespace"type: Taskop: CreateNamespaceargs:- name: NSvalue: beidou- name: "Monitor Deployment Creation Efficiency"operations:- name: "Begin To Monitor Deployment Creation Efficiency"type: Taskop: DeploymentCreationEfficiencyargs:- name: NSvalue: beidou- name: "Repeat 1 Times"type: Taskop: RepeatNTimesargs:- name: TIMESvalue: "1"- name: ACTIONreference:id: deployment-operation- name: "Delete namespace"operations:- name: "delete namespace"type: Taskop: DeleteNamespaceargs:- name: NSvalue: beidou- name: FORCEvalue: "false"references:- id: deployment-operationsteps:- name: "Prepare Deployment"operations:- name: "Prepare Deployment"type: Taskop: PrepareBatchDeploymentsargs:- name: NSvalue: beidou- name: NODE_TYPEvalue: ebm- name: BATCH_NUMvalue: "1"- name: TEMPLATEvalue: "./templates/basic-1-pod-deployment.yaml"- name: DEPLOYMENT_REPLICASvalue: "1"- name: DEPLOYMENT_PREFIXvalue: "ebm"- name: "Wait For Deployments To Be Ready"type: Taskop: WaitForBatchDeploymentsReadyargs:- name: NSvalue: beidou- name: TIMEOUTvalue: "3m"- name: CHECK_INTERVALvalue: "2s"

basic-1-pod-deployment.yaml:

apiVersion: apps/v1
kind: Deployment
metadata:labels:app: basic-1-pod
spec:selector:matchLabels:app: basic-1-podtemplate:metadata:labels:app: basic-1-podspec:containers:- name: nginximage: registry-vpc.cn-hangzhou.aliyuncs.com/xxx/nginx:1.17.9imagePullPolicy: Alwaysresources:limits:cpu: 2memory: 4Gi

然后通过一个命令行工具执行 performance-test.yaml:

$ beidou server -c ~/.kube/config services/performance-test.yaml

执行效果如下 (每个 Deployment 创建耗时,所有 Deployment 创建耗时的 TP95 值,每个 Deployment 是否创建成功):

这些 metrics 是按照 Prometheus 标准输出,可以被 Prometheus server 收集走,再结合 Grafana 可以可视化展示性能测试数据。

通过在 yaml 中表达想法,编排对 K8s 资源的操作、监控,再也不用为性能测试的实现头疼了

Kubernetes 新玩法:在 yaml 中编程相关推荐

  1. 新玩法,CentOS7中LVM通过扩展逻辑卷扩展swap空间

    在我们日常运维工作中,偶尔也会遇到需要扩展swap空间的操作.扩展swap空间的方法很多,现在让我们一起来探讨一下,在LVM下扩展swap空间的方法. 1.查看一下卷组,是否还有空闲空间能用于扩展sw ...

  2. 森林怎么训练野人_第五人格:野人技能曝光!野猪可以骑,庄园中或将迎来新玩法!...

    欢迎各位小伙伴来到本期的<第五人格不知道多少课>"野人"今天呢~公瑾就和大家来聊一聊<第五人格>中所谓的"野人",近日官方曝光出了我们的 ...

  3. 橡森木业携手中企动力探索家具外贸营销新玩法

    中国已成为全球最大的家具出口国,多年来始终保持出口第一的位置.但由于人民币汇率上升.生产成本增加.贸易摩擦的加剧等原因,中国家具出口的竞争力正在被不断削弱.去年,我国的家具出口额同比下降9.38%,这 ...

  4. 易灵思发力系统级封装SiP,探索FPGA新玩法

    易灵思发力系统级封装SiP,探索FPGA新玩法 随着半导体工艺技术的演进,传统的工艺缩进技术遇到了很大的挑战,一方面是随着芯片制程节点越来越先进,从10nm.7nm.5nm到3nm,1nm,芯片研发生 ...

  5. 卡内基梅隆大学副教授张旆:传感系统新玩法,物理响应分析人的生老病死

    受访者 | 张旆 采访者 | 伍杏玲 出品 | CSDN(ID:CSDNnews) 随着万物相联时代来临,我们身边随处可见物联网技术:我们使用智能门锁进入房间,智能窗帘缓缓拉开,智能扫地机器人开始工作 ...

  6. 对话快手苍鹏:播放器还有什么新玩法?

    2017年,我通过陆其明邀请到了播放器专家金邦飞来LiveVideoStackCon,当时金邦飞告诉我播放器已经没有太多技术突破的可能性了.不过,五年后再看播放器却仍有不少机会.比如通过Webasse ...

  7. 实时风格迁移,移动端运行,人脸特效又有了新玩法

    视学算法报道 转载自:机器之心 编辑:维度 人脸风格迁移出现新玩法!捷克理工大学联合 Snap 公司创建了一个用于视频中人脸风格实时迁移的框架,既不需要大型数据集和冗长训练周期,更能够在移动端运行. ...

  8. 弃 Windows 而拥抱 Linux 之后,这本书教了新玩法

    微软弃 Windows 而拥抱 Linux 之后,国内首本SQL Server On Linux的图书出版,这本书教了很多新玩法. SQL Server作为微软公司著名的数据库管理系统,多年以来一直稳 ...

  9. 微信文件撤回时间多长_微信悄悄上线新玩法:拍了拍、朋友圈可重新编辑

    当当当,我猜大家应该是看到这么吸引人的标题进来的吧,确实这个超级实用的功能你还真的要知道. 今天写的部分内容,其他的全部内容将会在安卓微信7.0.16正式版发布的时候进行一次大汇总. 我猜大家昨天应该 ...

最新文章

  1. Java程序设计学习笔记(四)—— GUI
  2. h3c 链路聚合测试_良无磐石固,虚名复何益?- 链路聚合协议互通测试
  3. python进程通信方式有几种_python全栈开发基础【第二十一篇】互斥锁以及进程之间的三种通信方式(IPC)以及生产者个消费者模型...
  4. java的可变参数介绍_Java基础 可变参数介绍(转载)
  5. CentOS下ELK收集Nginx日志
  6. FJNU 1196 汪老司机(DP or 建图+最短路)
  7. 本地源制作docker镜像
  8. zz Makefile学习教程: 跟我一起写 Makefile
  9. 【引向】全栈开发工程师之路
  10. python输入一个序列_Python序列合并,python
  11. [软件工程] 面向对象方法学引论
  12. 机器学习---数据简介及数据清洗概述
  13. 武汉好地科技为您解析CMMI3和CMMI5的区别
  14. 第一行代码(Android)第二版PDF和源码
  15. 【jdk源码】System.arraycopy()复制
  16. 网易云音乐 网络错误 linux,在Linux下网易云音乐打不开的另一种解决方法
  17. 完美解决MATLAB建立新文件没有权限问题
  18. Kindle系列(二)免费电子书籍
  19. WebRTC源码下载与编译
  20. Linux系统编程——Daemon进程

热门文章

  1. c++反汇编与逆向分析
  2. CSS3学习笔记(一)--2015-12-3
  3. C. Woodcutters【贪心】
  4. HTML设计显示表格
  5. shell脚本if参数太多_Shell脚本用for循环遍历参数的方法技巧
  6. 重磅!阿里发布全新操作系统,这次要干翻 CentOS 了!
  7. 在 SpringBoot 项目中,Spring Security 和 Shiro 该如何选择?
  8. 信息系统项目管理知识--项目沟通管理
  9. BigDecimal add方法问题:调用add后,求和结果没变
  10. jsp中的basePath和path (绝对路径 相对路径)