在开发的过程中都会设计到很多的项目的CICD的任务,单台Jenkins的不能完成大量的同时CI/CD的任务。因此需要组件Jenkins集群来实现大量任务同时CI/CD。在企业中大都是都是使用jenkins集群来实现工作。因此学习搭建一个jenkins集群是作为学习jenkins的前提。同时本文将学会使用docker的方式来实现jenkins集群部署操作。
一、Jenkins单节点的安装 1.1 拉取jenkins镜像# 开启docker
systemctl start docker
#查看是否拉取到了
docker images
#拉取jenkins镜像
docker pull jenkins/jenkins:lts
#查看运行转态
docker ps
#查看jenkins的具体的方式
docker inspect jenkins [image id]
#需要先创建一个Jenkins的配置目录,并且挂载到docker 里的Jenkins目录下
mkdir -p /data/jenkins_home/
#修改目录权限
chown -R 1000:1000 /data/jenkins_home/
运行 Jenkins
docker run -d --name jenkins -p 8040:8080 -p 50000:50000 -v /data/jenkins_home:/var/jenkins_home jenkins/jenkins:lts
-d 标识是让 docker 容器在后台运行
--name 定义一个容器的名字,如果没有指定,那么会自动生成一个随机数字符串当做UUID
-p 8040:8080 端口映射,我本地的8080被占用了,所以随便映射了一个8040
-p 50000:50000 端口映射
-v /data/jenkins_home:/var/jenkins_home 绑定一个数据卷,/data/jenkins_home是刚才创建的本地数据卷
# 查询初始登入密码
docker logs (容器ID)
#或者使用的命令
docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword
85770376692448b7b6a8e301fb437848
cd /var/lib/jenkins/updates
sed -i 's/http:\/\/updates.jenkins-ci.org\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' default.json && sed -i 's/http:\/\/www.google.com/https:\/\/www.baidu.com/g' default.json
修改Update Site
# 修改jenkins配置文件,将插件的更新地址更换成能够访问的
vim .jenkins/hudson.model.UpdateCenter.xml
默认:https://updates.jenkins.io/update-center.json
修改:https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
重启jenkins
在浏览器输入 ip:port/restart
二、Jenkins的集群安装
1.1 拉取jenkins镜像
# 开启docker
systemctl start docker
#查看是否拉取到了
docker images
#拉取jenkins镜像
docker pull jenkins/jenkins:lts
#查看运行转态
docker ps
#查看jenkins的具体的方式
docker inspect jenkins [image id]
************************************节点0************************************
#开启jeninks-master
#在每台电脑上创建文件夹
mkdir /home/data/jenkins
#赋予权限
chown -R 1000:1000 /home/data/jenkins
#开启jeninks-master
docker run -d --name jenkins-matser -p 9090:8080 -v /home/data/jenkins:/var/jenkins_home -v /data/run/docker.sock:/var/run/docker.sock jenkins/jenkins:lts
************************************节点1************************************
#开启jeninks-node1
#在每台电脑上创建文件夹
mkdir /home/data/jenkins
#赋予权限
chown -R 1000:1000 /home/data/jenkins
#开启jeninks-master
docker run -d --name jenkins-matser -p 9090:8080 -v /home/data/jenkins:/var/jenkins_home -v /data/run/docker.sock:/var/run/docker.sock jenkins/jenkins:lts
************************************节点2************************************
#开启jeninks-node2
#在每台电脑上创建文件夹
mkdir /home/data/jenkins
#赋予权限
chown -R 1000:1000 /home/data/jenkins
#开启jeninks-master
docker run -d --name jenkins-matser -p 9090:8080 -v /home/data/jenkins:/var/jenkins_home -v /data/run/docker.sock:/var/run/docker.sock jenkins/jenkins:lts
************************************参数说明************************************
-d //启动在后台
--name //容器名字
-p //端口映射(9090:宿主主机端口,8080:容器内部端口)
-v //数据卷挂载映射(/data/jenkins_home:宿主主机目录,另外一个即是容器目录)
************************************参数说明************************************
# 查询初始登入密码
docker logs (容器ID)
#或者使用的命令
docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword
85770376692448b7b6a8e301fb437848
修改default.json
cd /var/lib/jenkins/updates
sed -i 's/http:\/\/updates.jenkins-ci.org\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' default.json && sed -i 's/http:\/\/www.google.com/https:\/\/www.baidu.com/g' default.json
修改Update Site
# 修改jenkins配置文件,将插件的更新地址更换成能够访问的
vim .jenkins/hudson.model.UpdateCenter.xml
默认:https://updates.jenkins.io/update-center.json
修改:https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
重启jenkins
在浏览器输入 ip:port/restart
1.4 选择安装查件安装:
1.在Jenkins网页上新增节点,操作如下图,先进入节点管理页面:
2.如下图,新增一个节点,名为agent1:
3.接下来的节点详情信息如下图,注意四个红框中的内容要和图中保持一致:
4.保存成功后会显示机器列表,如下图,图标上的红叉表示机器不在线(此时agent1还没有接入),点击红框:
5.如下图所示,红框中的命令就是agent1的启动命令,执行该命令的机器会以agent1的身份加入集群:
6.注意上图红框中的agent.jar是个名为agent.jar的文件的下载链接,将此文件下载到agent1电脑的/usr/local/jenkins目录下;
7.ssh登录agent1电脑,执行以下命令,即可将agent1加入Jenkins集群:上述命令中的后半部分,即java -jar ......就是前面图片红框中的agent1启动命令,唯一要改变的是将agent.jar改成绝对路径/usr/local/jenkins/agent.jar
docker run \
-u root \
-idt \
--name agent \
-v /home/data/jenkins:/usr/local/jenkins \
bolingcavalry/openjdk-with-sshpass:8u232 \
java -jar /home/data/jenkins/agent.jar \
-jnlpUrl http://192.168.133.131:8080/computer/agent1/slave-agent.jnlp \
-secret 44c3e8d1531754b8655b53294bbde6dd99b3aaa91a250092d0d3425534ae1058 \
-workDir "/home/data/jenkins"
8.上述命令的镜像是bolingcavalry/openjdk-with-sshpass:8u232,其Dockerfile内容如下,可见非常简单,就是OpenJDK镜像里面安装了sshpass,这样的容器可以在执行ssh命令时带上远程机器的密码,而不用等待用户输入密码,这样便于shell脚本执行ssh命令:
FROM openjdk:8u232
ARG DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install --assume-yes sshpass
去Jenkins的网页上查看节点列表,如下图,可见agent1已经成功加入:
1. agent2加入集群的方式和agent1大部分是一样的,只有以下两点要注意:
- 在Jenkins页面上创建节点,名称是agent2
- agent2的标签是gradle,如下图红框所示:
2. 此时agent2也加入成功
至此,Jenkins集群搭建完成,这两个节点带有不同的标签
博客参考快速搭建Jenkins集群 - 程序员欣宸 - 博客园
掘金