为 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 :操作符,有 EqualExists 两种。Equal 表示键和值都要匹配;Exists 表示只要存在该键的污点就容忍。
  • value :要容忍的污点的值。当 operatorEqual 时,需要指定该值。
  • effect :污点的效果,有 NoSchedulePreferNoScheduleNoExecute 三种。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 添加污点容忍度,使其能够在带有特定污点的节点上运行。

相关推荐
是火云哦7 分钟前
打包你的开发环境:Docker 从入门到上瘾
运维·docker·容器
我送炭你添花15 分钟前
树莓派 3B+ 部署 TR-069 ACS(自动配置服务器)GenieACS 实录
运维·服务器·网络协议
扫地生大鹏24 分钟前
阿里云大模型服务器安装SNMP包启发
运维·服务器
今晚打佬虎28 分钟前
精准阻断 Docker 容器映射端口:流量路径诊断与 iptables 配置
运维·docker·容器
Dxy123931021629 分钟前
告别重启!Elasticsearch 8.10 杀手级特性:动态同义词(Dynamic Synonyms)深度解析
大数据·elasticsearch·jenkins
honsor33 分钟前
机房/档案室专用以太网温湿度传感器:智能监控赋能环境安全
运维·网络·物联网·安全
晚风吹长发1 小时前
初步了解Linux中的信号捕捉
linux·运维·服务器·c++·算法·进程·x信号
herinspace1 小时前
管家婆分销软件中如何进行现金流量分配
运维·服务器·数据库·学习·电脑
(Charon)1 小时前
【网络编程】从零开始理解 io_uring:Linux 网络编程的“核动力”引擎
linux·运维·服务器
麦聪聊数据1 小时前
LiveOps事故零容忍:游戏行业数据库的细粒度权限管控与审计实践
运维·数据库·后端·sql