侧边栏壁纸
  • 累计撰写 402 篇文章
  • 累计创建 63 个标签
  • 累计收到 122 条评论

目 录CONTENT

文章目录

Jenkins 中的系统,主节点,节点,执行器等概念解释

Z同学
2022-12-02 / 0 评论 / 1 点赞 / 167 阅读 / 1,719 字
温馨提示:
本文最后更新于 2022-12-02,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

1. 前言

本篇内容,介绍Jenkins中的系统System,主节点Master,节点Node,代理节点Agent和执行器Executor等概念。

更多的通过一些概念性的文字进行介绍,内容比较抽象。

2. 系统-System

我们在使用流水线时,不管是脚本式流水线还是声明式流水线,每一条Jenkins的流水线都是必须具备一个或多个System用于执行代码。

简单理解,这个系统是一个概念。所有的脚本和代码都是运行在系统中的。

3. 节点-Node

在Jenkins中节点是一个基本概念。所有可以执行Jenkins任务的系统都可以叫做节点。节点分为主节点和代理节点。

此外节点也可以是一个容器(例如:Docker)。

3.1 主节点-Master

Jenkins中的主节点就是一个Jenkins实例的主要控制系统。它能够完全访问所有的Jenkins配置选项和任务(Job)列表。如果我们没有指定其他System,那么默认的主节点Master就是默认的任务执行节点。

同时,不推荐在主节点master中执行比较高负载的任务,任何需要大量处理的任务都应该在主节点之外的系统中运行。

PS:简单理解就是,我们Android开发中的UI主线程和网络请求子线程,复制操作在子线程,主线程不做高负载运行。否则会卡死。

限制我们在主节点master中执行任务有两个核心:

  • 主节点执行的任务具有访问所有数据和配置的权限,会有潜在的安全风险。
  • 耗时的复杂的操作,会容易造成主节点阻塞,但主节点需要持续响应和管理各项操作过程。

当我们把握这两点,就知道哪些操作可以放在主节点中执行了。

3.2 代理节点-Agent

在老版本的Jenkins中代理节点叫做从节点(slave)。所有非主节点的系统都叫做代理节点。

这类节点是指有主系统管理,按需分配或指定执行特定的任务,例如:分配不同的代理节点针对不同的配置执行构建任务,或分配多个代理节点并发执行测试任务等等。

在脚本式流水线中,节点特指一个运行代理节点的系统,而在声明式流水线中,指代一个特定的代理节点来分配节点。

PS:节点概念如果没有弄明白,只需要知道:关键字node用于脚本式流水线,关键字agent用于声明式流水线。

4. 执行器-Executor

简单来说,执行器只是节点/代理节点用于执行任务的一个插槽。一个节点可以有任意多个执行器。执行器的数量定义了该节点可以执行的并发数量。

当一个主节点将任务分配给特定节点之后,这个节点必须有可以使用的执行器来立即执行该任务。否则任务会一直处于等待状态,直到有一个执行器可以用于执行为止。

同时,执行器的数量和其他参数可以在创建节点的时候进行配置。

5. 节点管理

在老版Jenkins中,任务可以在主节点实例或从节点实例上执行,而在Jenkins2的定义中。这些实例被统一成通用术语:节点。

节点的创建维护,可以通过Jenkins的系统管理进行配置,如下图所示:

image-20221129170751588

在系统配置项中有一个:节点管理

我们可以通过这个节点管理进行:添加,删除,控制和监视系统运行任务的节点。

默认情况下只有一个master主节点

image-20221129170930019

我们可以通过左侧的菜单面板实现节点添加和监控配置:

image-20221129171100164

5.1 新建节点

当我们通过节点管理,进入节点列表界面时,可以使用左侧的新建节点菜单进行创建新的节点。

image-20221129171414519

创建节点名称后,就可以点击 create创建按钮了。然后会出现配置界面。

描述和名称比较简单就省略了。

其中Number of executors 执行器数量,也就是这个节点下允许并发执行的数量。

image-20221129171723722

基本配置完毕后,就可以创建一个节点对象了。

image-20221129172037398

PS: 由于没有配置好访问SSH,所以我的节点获取不了系统信息,内容都显示为N/A

6. 小结

其实,如果理解还存在问题的话,jenkins是支持分布式构建的,我们每个节点其实就是一个虚拟机和运行环境。

整个jenkins是属于一个System对象,它可以链接多个节点,而jenkins系统安装所在的节点就是主节点默认叫做master。

我们可以将其他系统环境配置到主节点下,作为代理节点。每个代理节点在运行过程中耗费的都是其他主机系统资源。

每个节点下,我们可以创建多个item也就是任务。

而每次能够执行多少种任务,就是通过修改节点的并发数量也就是执行器来实现的。

image-20221129172442726

我们每个创建的任务,不管是流水线还是自由软件。最后都是通过在某个节点下进行构建运行的。

当我们有多个节点时,我们可以选择任务的构建节点。

通过流水线创建的任务,我们可以在代码中使用抽象后的节点对象。进行定义当前流水线的任务在哪个节点中执行。

PS:小公司,小团队,小项目。我们其实使用一个master节点进行各种构建已经能够满足需求了。

只有那种大公司,上百个项目构建开发的。还是在一个master中进行构建,效率和性能就很容易受限

当我们了解了实际jenkins中的节点概念。才能比较顺畅的在流水线脚本中创建和使用节点关键字

1

评论区