前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Jenkins 中的系统,主节点,节点,执行器等概念解释

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

作者头像
zinyan.com
发布2023-02-24 10:10:11
1.2K0
发布2023-02-24 10:10:11
举报
文章被收录于专栏:zinyanzinyan

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的系统管理进行配置,如下图所示:

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

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

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

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

5.1 新建节点

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

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

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

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

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

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

6. 小结

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

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

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

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

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

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

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

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

PS:小公司,小团队,小项目。我们其实使用一个master节点进行各种构建已经能够满足需求了。 只有那种大公司,上百个项目构建开发的。还是在一个master中进行构建,效率和性能就很容易受限

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-12-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 zinyan 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 前言
  • 2. 系统-System
  • 3. 节点-Node
    • 3.1 主节点-Master
      • 3.2 代理节点-Agent
      • 4. 执行器-Executor
      • 5. 节点管理
        • 5.1 新建节点
        • 6. 小结
        相关产品与服务
        容器服务
        腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档