Jenkins利用k8s集群实现动态Slave并发构建

Jenkins利用k8s集群实现动态Slave并发构建

环境

Jenkins Master采用war包直接jar -jar jenkins.war本地服务器运行
Jenkins安装Kubernetes Plugin插件
K8S集群

正常设置Jenkins -> Configure System -> “云” -> kubernetes相关配置。

问题

不能并发创建Slave Pod进行并发构建

触发多个Maven项目Job构建时,前一个Job正常分配1个Slave Pod,后一个Job在“构建队列”一直处于“Waiting for next available executor”状态几分钟。偶尔Jenkins会分配1个新Slave Pod,大部分时候会等待前一个Job完成后重用Slave Pod。无法满足并发创建Slave Pod进行并发构建的需求。

不能并发创建Slave Pod进行并发构建,是Jenkins的调度策略问题

默认情况下,Jenkins创建Slave Pod很保守。假设当前有2个Job等待执行,Jenkins会先创建1个Slave Pod执行第一个Job,然后等待这个Slave Pod执行完Job,等待一定时间如果这个Slave Pod还未空闲,则再创建1个Slave Pod执行第二个Job。Jenkins调度策略尝试最大化利用每个Slave Pod。

可以通过调整一些参数来改变Jenkins的默认调度策略:
-Dhudson.model.LoadStatistics.clock=2
-Dhudson.slaves.NodeProvisioner.initialDelay=0
-Dhudson.slaves.NodeProvisioner.MARGIN_DECAY=0.1
-Dhudson.slaves.NodeProvisioner.MARGIN=50
-Dhudson.slaves.NodeProvisioner.MARGIN0=0.85

如上参数设置可以加快Jenkins调度Slave Pod,提高效率。

具体Jenkins调度策略这里没有深究,感兴趣可以查看Jenkins源码

jar命令运行,
java -jar -Dhudson.model.LoadStatistics.clock=2 -Dhudson.slaves.NodeProvisioner.initialDelay=0 -Dhudson.slaves.NodeProvisioner.MARGIN_DECAY=0.1 -Dhudson.slaves.NodeProvisioner.MARGIN=50 -Dhudson.slaves.NodeProvisioner.MARGIN0=0.85 jenkins.war

参考资料

Jenkins K8S Slave 调度效率优化

Kubernetes Jenkins Plugin concurrent slaves not working

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值