Jenkins动态slave

目录

所需环境

安装nfs

部署Jenkins

安装插件

​编辑添加凭据

配置动态slave

连接kubernetes集群

​编辑配置Jenkins地址

​编辑配置Pod模板

​编辑确认代理端口

创建任务测试


在当今软件开发生命周期中,持续集成/持续部署(CI/CD)已成为提高开发效率、确保软件质量的关键环节。Jenkins作为一款开源的自动化服务器软件,凭借其丰富的插件生态和灵活的扩展性,在CI/CD领域占据了举足轻重的地位。然而,随着软件开发项目的日益复杂和团队规模的逐渐扩大,传统的静态slave配置方式已经难以满足快速变化的需求。

为了应对这一挑战,Jenkins动态slave应运而生。它利用Kubernetes等容器编排工具,实现了slave节点的动态创建、销毁和调度,从而提高了资源利用率、处理能力和系统稳定性。本文旨在深入探讨Jenkins动态slave的优势、配置方法以及在实际项目中的应用,为开发者提供一个全面、系统的解决方案。

所需环境

Kubernetes集群,本案例使用的是1.23版本

安装nfs

部署Jenkins的时候使用nfs存储了所以需要部署nfs

bash 复制代码
yum -y install nfs-utils rpcbind

mkdir -p /data/k8s

echo '/data 192.168.207.0/24(rw,no_root_squash)' >> /etc/exports

systemctl start nfs rpcbind

systemctl enable nfs rpcbind

chmod -R 777 /data

k8s所有节点安装nfs软件包

bash 复制代码
yum -y install nfs-utils rpcbind

部署Jenkins

上传yaml文件jenkins-yaml

bash 复制代码
# 修改pvc.yaml文件的ip地址,修改为nfs节点的IP

# 因为命名空间没有创建,所以第一次执行可能会有失败的,可以在执行一遍或者提前把命名空间创建出来

kubectl apply -f jenkins-yaml



# 查看Jenkins是否运行起来

[root@master ~]# kubectl get pod -n kube-ops

NAME                        READY   STATUS    RESTARTS   AGE

jenkins2-5959957d7d-4sp9d   1/1     Running   0          4h14m



# 查看Jenkins的service

[root@master ~]# kubectl get svc -n kube-ops

NAME       TYPE       CLUSTER-IP    EXTERNAL-IP   PORT(S)                          AGE

jenkins2   NodePort   10.1.203.46   <none>        8080:30002/TCP,50000:32090/TCP   4h14m

安装插件

浏览器访问http://<K8S节点的任意节点IP>:30002

安装推荐插件

登录Jenkins

安装kubernetes插件

点击Available plugins 在搜索框里面搜索kubernetes,点击勾选,然后点击安装,安装好以后可以重启Jenkins

添加凭据

添加K8S的凭据,把K8S的master节点下的/root/.kube目录下的config文件复制到本地

配置动态slave

连接kubernetes集群

配置Jenkins地址

Jenkins地址填写 http://jenkins2.kube-ops.svc.cluster.local:8080

这里的格式为:

服务名.namespace.svc.cluster.local:8080

Jenkins通道填写:jenkins2.kube-ops.svc.cluster.local:50000

配置Pod模板

这里名称就写jnlp,镜像填写jenkins/inbound-agent

运行的命令和命令参数为空

确认代理端口

确认 全局安全配置 下的 代理 是 指定端口50000

创建任务测试

构建的时候K8S会自动创建pod,构建完成以后自动销毁

bash 复制代码
[root@master ~]# kubectl get pod -n kube-ops

NAME                        READY   STATUS    RESTARTS   AGE

jenkins2-5959957d7d-4sp9d   1/1     Running   0          4h41m

jnlp-8r324                  1/1     Running   0          16s

[root@master ~]# kubectl get pod -n kube-ops

NAME                        READY   STATUS    RESTARTS   AGE

jenkins2-5959957d7d-4sp9d   1/1     Running   0          4h41m
相关推荐
糖豆豆今天也要努力鸭18 分钟前
torch.__version__的torch版本和conda list的torch版本不一致
linux·pytorch·python·深度学习·conda·torch
烦躁的大鼻嘎27 分钟前
【Linux】深入理解GCC/G++编译流程及库文件管理
linux·运维·服务器
乐大师27 分钟前
Deepin登录后提示“解锁登陆密钥环里的密码不匹配”
运维·服务器
bug管理者32 分钟前
UI自动化测试中公认最佳的设计模式-POM
jenkins·策略模式
ac.char34 分钟前
在 Ubuntu 上安装 Yarn 环境
linux·运维·服务器·ubuntu
敲上瘾34 分钟前
操作系统的理解
linux·运维·服务器·c++·大模型·操作系统·aigc
长弓聊编程1 小时前
Linux系统使用valgrind分析C++程序内存资源使用情况
linux·c++
cloud studio AI应用1 小时前
腾讯云 AI 代码助手:产品研发过程的思考和方法论
人工智能·云计算·腾讯云
cherub.1 小时前
深入解析信号量:定义与环形队列生产消费模型剖析
linux·c++
梅见十柒1 小时前
wsl2中kali linux下的docker使用教程(教程总结)
linux·经验分享·docker·云原生