一.简介
jenkins分布式架构,可一主master多从slave,从slave作为代理,即把jenkins的任务分开执行,如slave1运行maven编译、slave2运行docker build构建镜像、salve3运行ansible剧本等。
master上面安装的docker、maven、ansible,以及hosts配置和私有仓库相关配置,在slave上根据情况也需要相应的配置。
二.从节点部署
1.安装jdk11 因为master安装时是jdk11
#卸载原有的openjdk-1.8
rpm -qa | grep jdk*
yum -y remove java-1.8.0-openjdk*
#安装openjdk 11
yum list | grep java-11
yum -y install java-11
#版本查看
source /etc/profile
java --version
#关闭防火墙和selinux
systemctl stop firewalld
systemctl disable firewalld
sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config
setenforce 0
三.节点加入
系统管理---节点管理
新建节点
自定义名称
填写节点信息
添加凭证
填写相关信息
选中刚创建凭证
保存后 稍等就看到添加成功
点进去 可以看日志和构建的任务执行状态
这样就OK了
四.从节点执行任务呢示例
1.jenkins复制一个原来的任务,放在slave上执行
复制一个原来的项目
2.General---限制项目的运行节点---填写slave1的标签
3.保存后 Build with Parameters---构建历史---控制台输出
五.故障排错
#控制台输出报错1
stderr: No ECDSA host key is known for 192.168.77.147 and you have requested strict checking.
Host key verification failed.
解决:slave1s上手动连接gitlab一次
ssh root@192.168.77.147
#控制台输出报错2
ERROR: Maven Home /app/tools/maven doesnt exist
解决:slave1上安装maven到/app/tools/目录下
#下载maven
wget https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.8.8/binaries/apache-maven-3.8.8-bin.tar.gz
#上传maven安装包到任意目录
rz apache-maven-3.8.8-bin.tar.gz
#解压
mkdir -p /app/tools
tar -xf apache-maven-3.8.8-bin.tar.gz -C /app/tools
#软链接
ln -s /app/tools/apache-maven-3.8.8/ /app/tools/maven
#配置环境变量
echo 'export PATH=/app/tools/maven/bin/:$PATH' >>/etc/profile
source /etc/profile
#版本查看
mvn --version
#修改maven源为国内源 在<mirrors>下一行加入,即写在<mirrors> 中间 </mirrors>
vim /app/tools/maven/conf/settings.xml
<mirror>
<id>maven-aliyun</id>
<mirrorOf>*</mirrorOf>
<name>阿里云仓库</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
#原有的<mirror> </mirror> --> 注释掉
#控制台输出报错3
/tmp/jenkins12374773886147685898.sh:行12: docker: 未找到命令
解决:
#slave安装docker
yum -y install docker
systemctl enable docker
systemctl start docker
#控制台输出报错4
Step 1/8 : FROM alpine:3.20
error pulling image configuration:
解决:
#slave上配置harbor相关信息,基础镜像从私有仓库harbor拉取
#jenkins的slave上配置
echo "192.168.77.133 alibaby007.com" >>/etc/hosts
mkdir -p /etc/docker/certs.d/alibaby007.com/
cd /etc/docker/certs.d/alibaby007.com/
scp root@192.168.77.133:/home/harbor/ssl/alibaby007.com.crt .
#添加harbor仓库地址 可配置可不配置
cat /etc/docker/daemon.json
{
"insecure-registries" : ["alibaby007.com"]
}
#重新加载daemon重启docker
systemctl daemon-reload
systemctl restart docker
#从harbor拉取镜像alpine3.20
#登录harbot
docker login alibaby007.com -ualibaby -pxxxxxxx
#拉取镜像
docker pull alibaby007.com/nginxwebui/alpine:3.20
#重新打tag
docker tag alibaby007.com/nginxwebui/alpine:3.20 alpine:3.20
以上问题,若slave与master配置一样,salve配置改为“尽可能使用这个节点”,同时上面的错误也不存在