Jenkins Kubernetes插件并行构建Slaves失效,求配置解决方案
针对你用Jenkins 2.73.2.1 + Kubernetes插件1.4遇到的并行构建阻塞问题,除了你已经尝试的NodeProvisioner参数,建议重点检查以下插件配置项:
Kubernetes Cloud配置的最大Pod数限制
进入Jenkins全局配置 -> Clouds -> Kubernetes Cloud,找到Max number of pods选项。如果这个值设为1(或者远小于你需要的并发数),Jenkins最多只会创建1个Slave Pod,自然无法并行构建。把这个值调整到你预期的最大并发任务数(比如根据集群资源情况设为5、10等)。Job级别的并行构建权限
每个需要并行执行的Job,都要单独开启并行允许:进入Job配置页面,找到General区域,勾选Execute concurrent builds if necessary选项。如果没开这个,哪怕有空闲Slave,Job也会排队逐个执行。Kubernetes Slave模板的实例上限
在Kubernetes Cloud的Slave模板配置里,检查Instance Cap(实例上限)的值。如果这个模板的实例上限设为1,那么即使Cloud的总Pod数够,这个模板也只能创建1个Slave,限制了并发。确保这个值大于1或者设为0(表示无限制,受Cloud总Pod数约束)。Slave模板的执行器数量
每个Slave模板里的Number of executors(执行器数量)决定了单个Slave Pod能同时跑多少个任务。如果设为1,每个Slave只能跑1个任务;如果你的场景允许,也可以设为更大的值(比如2),这样单个Pod就能并行处理多个任务,提升并发能力。检查是否有全局的并发限制
进入Jenkins全局配置 ->Manage Jenkins->Configure System,找到# of executors(Master的执行器数量)——不过这个主要影响Master本身的任务执行,动态Slave场景下重点还是Cloud配置,但如果这个值设得极低且Job都绑定到Master,也会导致排队,可以作为排查项。
另外,你已经添加的NodeProvisioner参数主要是调整Slave的调度延迟,解决的是“Slave创建不及时”的问题,但如果本身并发数被配置限制住了,这些参数也起不到作用。建议先检查上述配置项,调整后再测试并行构建。
内容的提问来源于stack exchange,提问作者swetad90

