那么我们的jenkins是从k8s去陈设的,所以我们的slave也是从k8s中去思量,就可以将这个slave当成一个pod去处理惩罚,master就拿这个pod去处理惩罚
这个的话也就是可以预先起一些slave,也可以动态的去建设slave,要是预先启动slave的话,大概会耗损一些资源,这些资源也并不是必需要耗损的,所以就要思量动态的去思量slave,也就是即开即用,不消就销毁了,当这个量大的时候,这个就较量明明晰,所以在k8s中去建设署理可以通过插件去做到的
直接去安装一个kubernetes的插件
安装插件的时候我们需要在我们的耐久化目次中去修改我们的海外地点 [root@k8s-node3 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
在jenkins页面上restart,重启jenkins生效
要想动态的去在k8s中建设slave pod,所以要毗连k8s,界说毗连k8s的地点是几多,建设slave pod毗连jenkins的地点是几多
找到打点jenkins 这里,找到系统设置configure system
当安装好插件之后,会在最下面发明一个cloud
这里毗连k8s直接利用service的地点就可以,因为我们陈设了coredns直接可以就要理会到这个k8s,点击毗连测试可以毗连
假如jenkins是在外部去陈设的,也就是单独哪台处事器去陈设的,走的传统陈设,也就是要毗连k8s对外的地点也就是https://10.4.7.11:6443这个端口,而且将它的CA添加进来添加一个根据,这样才气毗连乐成
而且尚有将jenkins的地点也写上,,可能写成毗连ip的地点也可以
此刻jenkins已经知道要毗连哪个k8s,那么再去建设这个slave容器的pod,要建设pod必需就的需要镜像,假如没有镜像,纵然jenkins像k8s提倡建设一个pod,k8s必定不知道去建设哪个pod,必需有镜像,这个镜像也就是slave的镜像,所以下一步我们需要做的就是构建一个镜像。
让k8s利用这个镜像拉取一个pod,而这个镜像建造的话,看需要什么情况的包。
六、自界说构建jenkins-slave镜像
jenkins slave建造这个镜像看需要什么?
1、需要什么开拓语言?因为slave去完成的需要代码的编译,假如是java的语言,那么就需要maven的情况,假如是go就需要去用go去编译,所以开拓语言纷歧样,slave所做的事情况也纷歧样
2、特别情况,好比docker,需要打镜像对微处事,以及推送到镜像客栈都需要docker的情况,还会利用helm,helm是直接将处事陈设到k8s中。
好比就拿java项目为例,一般微处事也都是利用java去写的
代码的编译,一般利用较量多的就是maven,这个maven还依赖jdk,打包镜像需要docker,我们需要利用helm去做一连陈设,所以这也就是这个镜像内里需要封装的依赖
别的尚有一点,这个镜像怎么去做为一个slave去存在呢,传统的在页面添加一个就可以了,当毗连的时候,会毗连到slave节点帮你启动一个agent,也就是下发一个jar包,这个agent就可以直接和master去交互了,那么将这个jar包kill掉,这个slave也就是不行用状态了,所以它们直接的一个交互就是由本身实现的一个措施去完成的,每个slave上面会有一个agent,master与agent去交互,agent去完成这个job任务,那么这个镜像内里也得需要包括这个agent这个jar包,传统的方法会自动的帮你去安装了,可是镜像的还得本身去加上,加上之后才气去毗连jenkins,master才气去下发任务
[root@k8s-master1 jenkins-slave]# ls Dockerfile helm jenkins-slave kubectl settings.xml slave.jar