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

问题描述 投票:1回答:2

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

jenkins kubernetes
2个回答
2
投票

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

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


1
投票

您必须正确配置以下参数,以便根据您的期望同时运行从属:

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

  • 这是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

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

Jenkins Kuberenetes Plugin' Github repo对所有参数都有良好的单行描述

© www.soinside.com 2019 - 2024. All rights reserved.