
【集群】云原生批调度实战:Volcano 自定义镜像与二次压测

本系列《云原生批调度实战:Volcano 监控与性能测试》计划分为以下几篇,点击查看其它内容。
- 云原生批调度实战:调度器测试与监控工具 kube-scheduling-perf
- 云原生批调度实战:调度器测试与监控工具 kube-scheduling-perf 实操注意事项说明
- 云原生批调度实战:调度器测试监控结果
- 云原生批调度实战:本地环境测试结果与视频对比分析
- 监控与测试环境解析:测试流程拆解篇
- 监控与测试环境解析:指标采集与可视化篇
- 监控与测试环境解析:自定义镜像性能回归测试
- 监控与测试环境解析:数据收集方法深度解析与Prometheus Histogram误差问题
- 云原生批调度实战:Volcano调度器enqueue功能禁用与性能测试
- 云原生批调度实战:Volcano Pod创建数量不足问题排查与Webhook超时修复
- 云原生批调度实战:Volcano版本修改与性能测试优化
- 云原生批调度实战:Volcano Webhook禁用与性能瓶颈分析
(在未来)优化时,在调度器源码中加入 新算法 后,我们最关心的就是:
「我改的逻辑到底是否提升了吞吐量?」
本篇将手把手演示 本地构建自定义 Volcano Scheduler 镜像 → 替换到 Kind 集群 → 重跑 Benchmark 的全流程,帮助大家 快速验证改动效果。
1️⃣ Fork & 修改源码
- Fork Volcano 仓库;
- 切分支
feat/my-algorithm
; - 在
pkg/scheduler/plugins/
新增/修改调度逻辑; - 本地单元测试通过后,进入构建阶段。
示例改动:在
allocate.go
打印每次selectBestNode
结果。
2️⃣ 本地构建镜像 & 推送 Registry
项目脚本已自带 本地 5000 端口 Registry,无需额外安装。关键脚本:
1 | # Create local registry container if not running |
构建 & 推送命令:
1 | # 假设当前位于 volcano 仓库根目录 |
若在国内环境,可通过
IMAGE_PREFIX
拉取基础镜像,详见上文 Metrics 篇。
Mermaid 流程一览:
graph TD; A[源码改动] --> B("Docker build") B --> C("本地镜像 kind-registry:5000") C --> D("kustomize build → kubectl apply") D --> E("Kind 集群调度性能测试")
3️⃣ 替换 Deployment 中的镜像
调度器 Deployment 位于:
1 | ... |
只需把 image:
行替换为新镜像:
1 | - image: kind-registry:5000/docker.io/volcanosh/vc-scheduler:v1.11.0 |
4️⃣ 重新压测 & 对比指标
- 启动集群 & 压测
1 | make prepare-volcano start-volcano \ |
- 结束测试 & 保存面板
1 | make end-volcano |
- 查看结果目录(假设时间戳
1690300000
):
1 | results/ |
- 希望这篇博客对你有帮助!如果你有任何问题或需要进一步的帮助,请随时提问。
- 如果你喜欢这篇文章,欢迎动动小手给我一个follow或star。
🗺参考文献
- 标题: 【集群】云原生批调度实战:Volcano 自定义镜像与二次压测
- 作者: Fre5h1nd
- 创建于 : 2025-08-08 18:13:02
- 更新于 : 2025-08-21 19:57:50
- 链接: https://freshwlnd.github.io/2025/08/08/k8s/k8s-scheduler-performance-volcano-custom/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
推荐阅读
评论