Kubernetes 新玩法:在 yaml 中编程
本文插图
引子
性能测试在日常的开发工作中是常规需求 , 用来摸底服务的性能 。
那么如何做性能测试?要么是通过编码的方式完成 , 写一堆脚本 , 用完即弃;要么是基于平台 , 在平台定义的流程中进行 。 对于后者 , 通常由于目标场景的复杂性 , 如部署特定的 workload、观测特定的性能项、网络访问问题等 , 往往导致性能测试平台要以高成本才能满足不断变化的开发场景的需求 。
在云原生的背景下 , 是否可以更好解决这种问题?
先看两个 yaml 文件:
- performance-test.yaml 描述了在 K8s 中的操作流程:
2.启动针对 Deployment 创建效率和创建成功率的监控
3.下述动作重复 N 次:① 使用 workload 模板创建 Deployment;② 等待 Deployment 变为 Ready
4.删除测试用的 Namespace
- basic-1-pod-deployment.yaml 描述使用的 workload 模板
apiVersion: aliyun.com/v1alpha1 kind: Beidou metadata: name: performance namespace: beidou spec: steps: - name: ''Create Namespace If Not Exits'' operations: - name: ''create namespace'' type: Task op: CreateNamespace args: - name: NS value: beidou - name: ''Monitor Deployment Creation Efficiency'' operations: - name: ''Begin To Monitor Deployment Creation Efficiency'' type: Task op: DeploymentCreationEfficiency args: - name: NS value: beidou - name: ''Repeat 1 Times'' type: Task op: RepeatNTimes args: - name: TIMES value: ''1'' - name: ACTION reference: id: deployment-operation - name: ''Delete namespace'' operations: - name: ''delete namespace'' type: Task op: DeleteNamespace args: - name: NS value: beidou - name: FORCE value: ''false'' references: - id: deployment-operation steps: - name: ''Prepare Deployment'' operations: - name: ''Prepare Deployment'' type: Task op: PrepareBatchDeployments args: - name: NS value: beidou - name: NODE_TYPE value: ebm - name: BATCH_NUM value: ''1'' - name: TEMPLATE value: ''./templates/basic-1-pod-deployment.yaml'' - name: DEPLOYMENT_REPLICAS value: ''1'' - name: DEPLOYMENT_PREFIX value: ''ebm'' - name: ''Wait For Deployments To Be Ready'' type: Task op: WaitForBatchDeploymentsReady args: - name: NS value: beidou - name: TIMEOUT value: ''3m'' - name: CHECK_INTERVAL value: ''2s''basic-1-pod-deployment.yaml:
apiVersion: apps/v1 kind: Deployment metadata: labels: app: basic-1-pod spec: selector: matchLabels: app: basic-1-pod template: metadata: labels: app: basic-1-pod spec: containers: - name: nginx image: registry-vpc.cn-hangzhou.aliyuncs.com/xxx/nginx:1.17.9 imagePullPolicy: Always resources: limits: cpu: 2 memory: 4Gi然后通过一个命令行工具执行 performance-test.yaml:
$ beidou server -c ~/.kube/config services/performance-test.yaml执行效果如下 (每个 Deployment 创建耗时 , 所有 Deployment 创建耗时的 TP95 值 , 每个 Deployment 是否创建成功):
本文插图
这些 metrics 是按照 Prometheus 标准输出 , 可以被 Prometheus server 收集走 , 再结合 Grafana 可以可视化展示性能测试数据 。
推荐阅读
- 木木不哭助手|虎牙《CS?GO》一哥发现另类新玩法,全程尬舞秀出天际
- CSGO|打打杀杀太无聊,CSGO出了新玩法?QUQU中路直接邀人尬舞
- 王者荣耀|王者荣耀:“七命复活流”玩法到底是什么?复活甲被限制复活次数
- 电信诈骗|市民赵女士遭遇电信诈骗新玩法:靠“绑架”讹钱
- 直播超级夜、总裁直播、省长直播......京东直播创新玩法引爆11.11
- 天涯明月刀|天涯明月刀:提升功力不用愁!装备琢磨系统玩法详解
- 闽南网|导能绘卷玩法攻略分享,《原神》导能绘卷获取方法
- 玩加电竞APP|LOL游戏玩法感想:商店中新增超过60个全新或更新的图标
- 九游网|《原神》导能绘卷获取方法 导能绘卷玩法分享
- 追狐狸的人呐|简单的玩法,不简单的表达,最好的反战游戏之一
