作者:居生扬_977 | 来源:互联网 | 2023-07-16 22:20
jenkinsanget配置Master-Slaves(agent)模式多个任务都在master节点执行,对master节点的性能会造成一定影响,如何将任务分散到不同的节点,做成多
jenkins anget 配置
Master-Slaves(agent)模式
多个任务都在master节点执行,对master节点的性能会造成一定影响,如何将任务分散到不同的节点,做成多slave的方式?
1. 添加slave节点
系统管理 -> 节点管理 -> 新建节点
![image-20220726090053547](https://img8.php1.cn/3cdc5/159cc/c5a/c790aad7ab3a96d9.png)
比如添加172.21.32.5,选择固定节点,保存
![image-20220726090128282](https://img8.php1.cn/3cdc5/159cc/c5a/ba60350037510d06.png)
远程工作目录 /opt/jenkins_jobs
标签为任务选择节点的依据,如172.21.32.5;进行任务分配时的一个依据
启动方式选择通过java web启动代理,代理是运行jar包,通过JNLP(是一种允许客户端启动 托管在远程Web服务器上的应用程序的协议 )启动连接到master节点服务中![image-20220724220331342](https://img8.php1.cn/3cdc5/159cc/c5a/967892daf04c57de.png)
![image-20220726091035097](/Users/liulei/Library/Application Support/typora-user-images/image-20220726091035097.png)
注意:这里 Use WebSocket
一定要点上;
执行java命令启动agent服务
![image-20220724221021986](https://img8.php1.cn/3cdc5/159cc/c5a/41cc5f196fc2da0c.png)
## 登录172.21.32.5,下载agent.jar
# 下载命令在 agnet 节点配置页面可以找到
$ wget http://jenkins.qq.com/jnlpJars/agent.jar
## 会提示找不到agent错误,因为没有配置地址解析,由于连接jenkins master会通过50000端 口,直接使用cluster-ip
$ kubectl -n jenkins get svc #在master节点执行查询cluster-ip地址
NAME TYPE CLUSTER-IP EXTERNAL-IP
jenkins ClusterIP 10.99.204.208
4h8m
PORT(S) AGE
8080/TCP,50000/TCP
## 再次回到131节点
$ wget 10.99.204.208:8080/jnlpJars/agent.jar
$ java -jar agent.jar -jnlpUrl http://10.99.204.208:8080/computer/172.21.32.5/slave-agent.jnlp -secret 4be4d164f861d2830835653567867a1e695b30c320d35eca2be9f5624f8712c8 -workDir "/opt/jenkins_jobs"
...
INFO: Remoting server accepts the following protocols: [JNLP4-connect, Ping] Apr 01, 2020 7:03:51 PM hudson.remoting.jnlp.Main$CuiListener status
INFO: Agent discovery successful
Agent address: 10.99.204.208
Agent port: 50000
Identity: e4:46:3a:de:86:24:8e:15:09:13:3d:a7:4e:07:04:37
Apr 01, 2020 7:03:51 PM hudson.remoting.jnlp.Main$CuiListener status
INFO: Handshaking
Apr 01, 2020 7:03:51 PM hudson.remoting.jnlp.Main$CuiListener status
INFO: Connecting to 10.99.204.208:50000
Apr 01, 2020 7:03:51 PM hudson.remoting.jnlp.Main$CuiListener status
INFO: Trying protocol: JNLP4-connect
Apr 01, 2020 7:04:02 PM hudson.remoting.jnlp.Main$CuiListener status
INFO: Remote identity confirmed:
e4:46:3a:de:86:24:8e:15:09:13:3d:a7:4e:07:04:37
Apr 01, 2020 7:04:03 PM hudson.remoting.jnlp.Main$CuiListener status
INFO: Connected
查看Jenkins节点列表,新节点已经处于可用状态
![image-20220724220422776](https://img8.php1.cn/3cdc5/159cc/c5a/de584210d8526fef.png)
测试使用新节点执行任务
Started by user admin
Running as SYSTEM
Building remotely on 172.21.32.5 in workspace
/opt/jenkins_jobs/workspace/free-demo
using credential gitlab-user
Cloning the remote Git repository
Cloning repository http://152.136.62.143/root/myblog.git
> git init /opt/jenkins_jobs/workspace/free-demo # timeout=10
...
方式二(使用ssh方式添加 salve 节点)
有时候使用 上边方式 配置agent 不好使。可以使用 ssh 方式配置 agent
生成凭据
ssh-keygen -f ~/.ssh/id_rsa -P '' -q
# 将密钥分发到 agent
ssh-copy-id ec2-user@10.23.1.33
# 测试 master 节点 登录 agent 节点
ssh ec2-user@10.23.1.33
在jenkins 中配置凭据
Jenkins选择:系统管理→manage credentials
![image-20220726103446440](https://img8.php1.cn/3cdc5/159cc/c5a/66390948d7c53a44.png)
![image-20220726103606918](https://img8.php1.cn/3cdc5/159cc/c5a/a39e3d343b251c42.png)
然后填入 私钥
username:填写要连接的 agent 服务器的ssh用户
在Jenkins中新建一个节点
![image-20220726103806914](https://img8.php1.cn/3cdc5/159cc/c5a/0fb20e54d5a3642d.png)
启动方式选择 ssh 方式,主机填写 agnet IP地址
![image-20220726103855330](https://img8.php1.cn/3cdc5/159cc/c5a/3a4175c402d225fb.png)
密钥这里选择 上边我们创建的密钥;,Host Key Verification Strategy
选择合适的选项;
保存,接下来点击该节点。
/opt/jenkins_jobs/ 目录准备
在agent 上要准备该目录,然后将该目录 授予 jenkins master 远程用户的 权限
chown ec2-user.ec2-user /opt/jenkins_jobs -R
jenkins 页面启用该节点
![image-20220726104144070](https://img8.php1.cn/3cdc5/159cc/c5a/1ff9f85e45a6b772.png)
jenkins agent 到这里就配置完毕;
总结
两种方式,用那种都可以;本人选择第二种;
作者:Star-Hitian,转载请注明原文链接:https://www.cnblogs.com/Star-Haitian/p/16520100.html