为 Jenkins Agent 添加污点(Taint)容忍度(Toleration)

在 Kubernetes(k8s)环境中使用 Jenkins 时,为 Jenkins Agent 添加污点(Taint)容忍度(Toleration)是一种常见的配置操作,它允许 Jenkins Agent Pod 被调度到带有特定污点的节点上。下面为你详细介绍实现步骤及相关示例代码。

为什么要添加污点容忍度

Kubernetes 中的污点和容忍度机制用于控制 Pod 可以调度到哪些节点上。当节点被设置了污点后,默认情况下 Pod 是不能调度到该节点的。通过为 Jenkins Agent 添加容忍度,可以让 Agent Pod 无视节点上的某些污点,从而被调度到这些节点上,这样能更灵活地利用集群资源。

配置步骤

1. 检查节点的污点

首先,你需要查看节点上已经设置的污点。可以使用以下命令查看节点的污点信息:

bash 复制代码
kubectl describe nodes <node-name> | grep Taints

将 <node-name> 替换为你要查看的节点名称。

2. 在 Jenkins 中配置 Agent 的容忍度

在 Jenkins 的 Kubernetes 插件配置中,可以为 Agent 定义容忍度。以下是几种不同的配置方式:

方式一:在 Jenkins UI 中配置
  1. 打开 Jenkins 管理界面,进入"Manage Jenkins" -> "Configure Clouds"。
  2. 找到你的 Kubernetes 云配置,展开"Pod Templates"。
  3. 选择要配置的 Agent Pod Template,在"Tolerations"部分添加容忍度配置。你需要指定容忍的污点键(key)、效果(effect)和操作符(operator)等信息。
方式二:使用 YAML 配置

如果你使用 YAML 文件来定义 Jenkins Agent 的 Pod Template,可以在 YAML 文件中添加容忍度配置。以下是一个示例:

yaml 复制代码
apiVersion: v1
kind: Pod
metadata:
  name: jenkins-agent
spec:
  containers:
    - name: jenkins-agent
      image: jenkins/inbound-agent:alpine
      command: ['/usr/bin/java', '-jar', '/agent.jar']
  tolerations:
    - key: "example-key"
      operator: "Equal"
      value: "example-value"
      effect: "NoSchedule"    

配置解释

  • key :要容忍的污点的键。例如,如果节点上的污点是 example-key=example-value:NoSchedule,那么这里的 key 就是 example-key。
  • operator :操作符,有 Equal 和 Exists 两种。Equal 表示键和值都要匹配;Exists 表示只要存在该键的污点就容忍。
  • value :要容忍的污点的值。当 operator 为 Equal 时,需要指定该值。
  • effect :污点的效果,有 NoSchedule、PreferNoSchedule 和 NoExecute 三种。NoSchedule 表示 Pod 不会被调度到带有该污点的节点上;PreferNoSchedule 表示尽量不调度到带有该污点的节点,但不是强制的;NoExecute 表示如果 Pod 已经在节点上运行,会被驱逐。

也可以参考下面信息:

例如,在 Jenkins 的配置文件中(可能是 values.yaml 等用于 Helm 安装的配置文件),你可以将这个 YAML 模板添加到相应的位置来应用这个污点容忍度配置

yaml 复制代码
jenkins:
  agent:
    podTemplate:
      yaml: |-
        apiVersion: v1
        kind: Pod
        spec:
          tolerations:
          - key: "node-role.kubernetes.io/jenkins"
            operator: "Exists"
            effect: "NoSchedule"

3. 应用配置

完成配置后,保存并应用配置。当 Jenkins 创建新的 Agent Pod 时,会根据配置的容忍度来调度 Pod 到合适的节点上。

通过以上步骤,你就可以为 Jenkins Agent 添加污点容忍度,使其能够在带有特定污点的节点上运行。

相关推荐
小白的码BUG之路5 小时前
linux -- ssh两台机器相连
运维·服务器·ssh
缓慢更新7 小时前
表单引擎的存储建模:宽表与文档库的取舍
运维·服务器·网络·数据库·低代码·oracle·适配器模式
续写烂尾7 小时前
贴片 SD NAND、eMMC、TF 卡规格怎么定?硬件工程师选型清单
运维·服务器·网络
迪康妍妍8 小时前
终端管控实操:封堵网盘与IM外发通道的落地思路
运维·网络·安全·架构·安全性测试
sxgzzn8 小时前
如何选择合适的开关柜在线监测工具?
运维·重构·无人机·开关柜局放在线监测·光伏运维管理系统
zxcvb1539 小时前
运维经验分享:监控网页更新内容的几种思路
运维
云飞云共享云桌面10 小时前
设计师共享单台图形服务器,解决 SolidWorks大装配卡顿难题
运维·服务器·3d·自动化·电脑·制造
无足鸟ICT10 小时前
【RHCA+】RPM包命名规则
linux·运维·服务器
迪康Defender10 小时前
终端安全运维:浅谈迪康端点安全一体化管理系统工具箱实用能力
运维·安全·信息可视化·自动化·运维开发·学习方法·远程工作
广东帝工智能安防10 小时前
航道数智化升级实战:基于“云-网-数-智“架构的信息化基础设施建设方案
大数据·运维·人工智能