如何配置Jenkins优先使用节点空闲执行器再启用空节点?
解决方案
1. 修改Jenkins节点分配策略为「Most Loaded」
Jenkins默认任务分配逻辑可能优先选择空闲节点(即你的备用节点),切换为「Most Loaded」策略后,会优先把任务分配给已有运行任务的节点(只要该节点还有空闲执行器),直到节点的2个执行器被占满,才会启用备用节点或启动新节点。
操作步骤:
- 进入「Manage Jenkins」→「Configure System」
- 找到「Cloud」配置下的EC2 Fleet,展开「Advanced」选项
- 在「Node Selection Strategy」中选择「Most Loaded」
- 保存配置
这个设置直接解决任务优先跑备用节点的问题,让现有节点的执行器尽可能被填满,避免出现大量单执行器运行的节点。
2. 给备用节点添加专属标签+任务约束
如果修改分配策略无效,可给备用节点设置专属标签(比如jenkins-reserve),再通过规则限制任务仅在非备用节点资源耗尽时才使用备用节点:
- 在EC2 Fleet的节点模板中,给备用节点添加
jenkins-reserve标签 - 安装「Job Restrictions」插件,设置全局规则:所有任务默认只使用不带
jenkins-reserve标签的节点;当这些节点的执行器全部占满时,才允许使用带jenkins-reserve标签的节点 - 或者在单个任务的「Restrict where this project can be run」选项中,填写
!jenkins-reserve,确保任务优先使用非备用节点
3. 用「备用执行器阈值」替代备用节点配置
EC2 Fleet插件本身没有直接设置「备用执行器」的选项,但可以通过以下方式实现类似效果:
- 将EC2 Fleet的「Number of spare instances to keep warm」设为0
- 安装「Metrics」插件,监控Jenkins的空闲执行器数量
- 编写Groovy脚本(通过Jenkins Script Console或定时任务),当空闲执行器数量低于2时,调用EC2 Fleet的API启动新节点
- 优化VM镜像:预先安装Jenkins agent及依赖工具,将节点启动时间压缩到1分钟内,缓解无备用节点时的任务延迟
4. 调整EC2 Fleet节点终止策略
为避免大量单执行器节点闲置,可设置节点在空闲一段时间后自动终止:
- 在EC2 Fleet的节点模板中,设置「Idle termination time」为10分钟
- 勾选「Terminate instances when they are idle」选项
内容的提问来源于stack exchange,提问作者Jamie Briers
相关产品推荐
相关产品推荐

