Kubernetes Jenkins Plugin并发奴隶无法正常工作

时间:2018-03-26 21:31:18

标签: jenkins kubernetes

我在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?

2 个答案:

答案 0 :(得分:2)

适用于我们的解决方案是上述JVM参数的组合,以及在kubernetes容器模板部分中选择“仅使用与当前标签匹配的作业”。

我们能够在不同的pod中并行运行所需的作业

答案 1 :(得分:1)

您必须正确配置以下参数,以便按照您的期望并发运行slave:

Kubernetes Pod Template下,

1)为Pod模板正确设置Labels

  • 确保您已为Jenkins Job配置了相同的标签。
  • 在该詹金斯作业的配置中,标记Restrict where this project can be run并提供与在“詹金斯配置”的Labels字段中提供的标签相同的标签。

2)设置Max number of instances。该参数将告诉詹金斯How many maximum slaves it can launch with the given label

3)设置Time in minutes to retain agent when idle。此参数将告诉詹金斯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。此参数将告诉詹金斯How many slaves can be spawned on Kubernetes

  • 这是Jenkins可以在Kubernetes cluster上创建的Pod总数的限制。
  • 此限制累计适用于所有标签。
  • 因此,如果Max number of instances大于Container Cap。詹金斯最多只能为标签创建等于Container Cap的奴隶。
  • 因此,理想情况下,使Container Cap等于Sum of (Max number of instances) of all labels

starting Jenkins时,

  • 默认情况下,詹金斯保守地生成代理。说,如果有2 建立在队列中,它不会立即产生2个执行程序。它会 产生一个执行者并等待一段时间以使第一个执行者成为 在决定生成第二个执行程序之前已释放。詹金斯(Jenkins) 确保它产生的每个执行器都得到最大程度的利用。
  • 如果要覆盖此行为并生成一个执行器,请执行以下操作: 每个构建队列都可以立即进行,而无需等待,您可以使用这些 Jenkins启动期间的标志:
-Dhudson.slaves.NodeProvisioner.initialDelay=0
-Dhudson.slaves.NodeProvisioner.MARGIN=50
-Dhudson.slaves.NodeProvisioner.MARGIN0=0.85

Jenkins Kuberenetes Plugin' Github存储库对所有参数都有很好的单行描述