Kubernetes Jenkins插件并发从属不工作
Posted
技术标签:
【中文标题】Kubernetes Jenkins插件并发从属不工作【英文标题】:Kubernetes Jenkins Plugin concurrent slaves not working 【发布时间】:2018-03-26 21:31:18 【问题描述】:我在 Jenkins 2.73.2.1 上并使用 Kubernetes-jenkins 插件 1.4 来启动动态从属。但是,我无法启动并行构建。 Jenkins 总是将其放入构建队列并一次执行一个。
我在启动 jenkins 时尝试过设置,但也无济于事:
-Dhudson.slaves.NodeProvisioner.initialDelay=0
-Dhudson.slaves.NodeProvisioner.MARGIN=50
-Dhudson.slaves.NodeProvisioner.MARGIN0=0.85
在插件配置结束时我们还需要为并行 pod 运行做其他设置吗?
【问题讨论】:
【参考方案1】:对我们有用的解决方案是结合上述 JVM 参数以及在 kubernetes 容器模板部分选择“仅使用与当前标签匹配的作业”。
我们能够在不同的 pod 中并行运行所需的作业
【讨论】:
【参考方案2】:您必须正确配置以下参数才能按照您的期望同时运行从站:
在Kubernetes Pod Template
下,
1) 为 Pod 模板正确设置 Labels
。
Jenkins Job
并配置了相同的标签。
在该 jenkins 作业的配置中,标记 Restrict where this project can be run
并提供与您在 Jenkins 配置的 Labels
字段中提供的相同标签。
2) 设置Max number of instances
。这个参数会告诉 Jenkins How many maximum slaves it can launch with the given label
3) 设置Time in minutes to retain agent when idle
。这个参数会告诉 Jenkins Till how much time to retain slave (with the given label) on which no build is running
。
Kubernetes Pod
Creation time
。
确保Pod Retention
策略为Default
。
在Cloud
部分下,
1) 设置Container Cap
。这个参数会告诉 Jenkins How many slaves can be spawned on Kubernetes
。
Kubernetes cluster
上创建的 Pod 总数的限制。
此限制累积适用于所有标签。
因此,如果Max number of instances
大于Container Cap
。 Jenkins 最多只能为标签创建等于 Container Cap
的 slave。
所以理想情况下保持Container Cap
等于Sum of (Max number of instances) of all labels
而starting Jenkins
,
-Dhudson.slaves.NodeProvisioner.initialDelay=0 -Dhudson.slaves.NodeProvisioner.MARGIN=50 -Dhudson.slaves.NodeProvisioner.MARGIN0=0.85
Jenkins Kuberenetes Plugin' Github repo 对所有参数都有很好的一行描述
【讨论】:
是否可以自动扩展从属 pod?以上是关于Kubernetes Jenkins插件并发从属不工作的主要内容,如果未能解决你的问题,请参考以下文章
在 Jenkins 上使用 Groovy 配置 amazon-ecs 从属插件
使用 Jenkins 中的 Kubernetes 插件未进行卷挂载
如何在 Jenkins ECS 插件中使用 ECR Image
使用 Jenkins ECS 插件生成多个代理(等待下一个可用的执行程序)