一、Jenkins的Master/Slave机制
Jenkins采用Master/Slave架构。Master/Slave相当于Server和agent的概念,Master提供web接口让用户来管理Job和Slave,Job可以运行在Master本机或者被分配到Slave上运行。一个Master可以关联多个Slave用来为不同的Job或相同的Job的不同配置来服务。
Jenkins的Master/Slave机制除了可以并发的执行构建任务,加速构建以外。还可以用于分布式自动化测试,当自动化测试代码非常多或者是需要在多个浏览器上并行的时候,可以把测试代码划分到不同节点上运行,从而加速自动化测试的执行。
二、集群角色功能
**Master:**Jenkins服务器。主要是处理调度构建作业,把构建分发到Slave节点实际执行,监视Slave节点的状态。当然,也并不是说Master节点不能跑任务。构建结果和构建产物最后还是传回到Master节点,比如说在jenkins工作目录下面的workspace内的内容,在Master节点照样是有一份的。
**Slave:**执行机(奴隶机)。执行Master分配的任务,并返回任务的进度和结果。
Jenkins Master/Slave的搭建需要至少两台机器,一台Master节点,一台Slave节点(实际生产中会有多个Slave节点)。
三、搭建步骤
Master不需要主动去建立,安装Jenkins,在登录到主界面时,这台电脑就已经默认为master。
选择“Manage Jenkins”->“Manage Nodes and Clouds”,可以看到Master节点相关信息:
四、为Jenkins添加Slave Node
4.1开启tcp代理端口
jenkins web代理是指slave通过jenkins服务端提供的一个tcp端口,与jenkins服务端建立连接,docker版的jenkins默认开启web tcp代理,端口为50000,而自己手动制作的jenkins容器或者在物理机环境部署的jenkins,都需要手动开启web代理端口,如果不开启,slave无法通过web代理的方式与jenkins建立连接。
jenkins web代理的tcp端口不是通过命令启动的而是通过在全局安全设置中配置的,配置成功后会在系统上运行一个指定的端口
4.2添加节点信息
在Jenkins界面选择“Manage Jenkins”->“Manage Nodes and Clouds”->“New Node
配置Agent信息
Name:Slave机器的名字
Description:描述 ,不重要 随意填
Number of excutors:允许在这个节点上并发执行任务的数量,即同时可以下发多少个Job到Slave上执行,一般设置为 cpu 支持的线程数。[注:Master Node也可以通过此参数配置Master是否也执行构建任务、还是仅作为Jenkins调度节点]
Remote root directory:用来放工程的文件夹,jenkins master上设置的下载的代码会放到这个工作目录下。
Lables:标签,用于实现后续Job调度策略,根据Jobs配置的Label选择Salve Node
Usage:支持两种模式“Use this Node as much as possible”、“Only build Jobs with Label expressiong matching this Node”。选择“Only build Jobs with Label expressiong matching this Node”,
添加完毕后,在Jenkins主界面,可以看到新添加的Slave Node,但是红叉表示此时的Slave并未与Master建立起联系。
4.3slave节点配置
安装jdk
#dnf -y install java-17-openjdk
root@k8s-02:~# java -version
openjdk version "17.0.16" 2025-07-15 LTS
OpenJDK Runtime Environment Corretto-17.0.16.8.1 (build 17.0.16+8-LTS)
OpenJDK 64-Bit Server VM Corretto-17.0.16.8.1 (build 17.0.16+8-LTS, mixed mode, sharing)
安装agent
点击节点信息,根据控制台提示执行安装agent命令
root@k8s-02:~# curl -sO http://192.168.30.180:31530/jnlpJars/agent.jar
root@k8s-02:~# java -jar agent.jar -url http://192.168.30.180:31530/ -secret 6e87c37900dfbdcff98099f6681f7b195a141de1cacb157679efc98f8fec2644 -name "k8s-02" -webSocket -workDir "/opt/jenkins"
Aug 03, 2025 12:52:47 PM org.jenkinsci.remoting.engine.WorkDirManager initializeWorkDir
INFO: Using /opt/jenkins/remoting as a remoting work directory
Aug 03, 2025 12:52:47 PM org.jenkinsci.remoting.engine.WorkDirManager setupLogging
INFO: Both error and output logs will be printed to /opt/jenkins/remoting
Aug 03, 2025 12:52:47 PM hudson.remoting.Launcher createEngine
INFO: Setting up agent: k8s-02
Aug 03, 2025 12:52:47 PM hudson.remoting.Engine startEngine
INFO: Using Remoting version: 3309.v27b_9314fd1a_4
Aug 03, 2025 12:52:47 PM org.jenkinsci.remoting.engine.WorkDirManager initializeWorkDir
INFO: Using /opt/jenkins/remoting as a remoting work directory
Aug 03, 2025 12:52:47 PM hudson.remoting.Launcher$CuiListener status
INFO: WebSocket connection open
Aug 03, 2025 12:52:47 PM hudson.remoting.Launcher$CuiListener status
INFO: Connected
4.4查看agent状态
指定Node调度策略
创建Job的页面,“General”下勾选“Restric where this project can be run”,填写Label Expression。
评论 (0)