架构
服务器IP | 服务名称 | 硬件配置 |
192.168.1.100 | k8s-master | 8核、16G、120G |
192.168.1.101 | k8s-node1 | 8核、16G、120G |
192.168.1.102 | k8s-node2 | 8核、16G、120G |
192.168.1.103 | nfs | 2核、4G、500G |
操作系统:Rocky9.3
jenkins版本:2.477
原理
Jenkins Master 接到构建任务后会动态在集群中的一个工作节点上拉起一个Jenkins Slave Pod来干活, 活干完后可及时释放Pod。
Jenkins-slave优势
动态伸缩
合理的使用资源,每次运行 Job 时,会自动创建一个 Jenkins Slave,Job 完成后,Slave 自动注销 并删除容器,资源自动释放,而且 Kubernetes 会根据每个资源的使用情况,动态分配 Slave 到空 闲的节点上创建,降低出现因某节点资源利用率高,还排队等待在该节点的情况。
服务高可用
当 Jenkins Master 出现故障时,Kubernetes 会自动创建一个新的 Jenkins Master 容器,并且将 Volume 分配给新创建的容器,保证数据不丢失,从而达到集群服务高可用。
扩展性好
当 Kubernetes 集群的资源严重不足而导致 Job 排队等待时,可以很容易的添加一个 Kubernetes Node 到集群中,从而实现扩展。
一、部署Jenkins
下载yaml文件
mkdir -p /home/k8s
cd /home/k8s
wget https://xmars-devops.oss-cn-shanghai.aliyuncs.com/AliCloud/jenkins.tar.gz
tar -zxvf jenkins.tar.gz
cd jenkins/
修改jenkins-pvc.yaml
nfs:
server: 192.168.1.103
path: /home/k8s_nfs_data/jekins将server,path更改成正确的即可,记得NFS有挂载/home/k8s_nfs_data/jekins
修改jenkins-ing.yaml
1.更改域名地址
2.ingressClassName:kong更改为nginx
修改jenkins-rbac.yaml
将两个kind类型为ClusterRole,ClusterRoleBinding的apiVersion:rbac.authorization.k8s.io/v1beta1更改为apiVersion:rbac.authorization.k8s.io/v1
部署
kubectl create -f .
二、配置jenkins
在自己的电脑上可以写入hosts文件,进入这个目录C:\Windows\System32\drivers\etc,复制hosts文件到桌面,然后写入你的IP地址和域名,然后再hosts文件粘贴回去
浏览器访问jenkins
密码查询方法,也可以通过日志查询
kubectl exec -it jenkins-xxxxx -n devops -- cat /var/jenkins_home/secrets/initialAdminPassword
或者
kubectl logs jenkins-746c7cb78b-f52ls -n devops
1.把密码粘贴上去
2.选择插件来安装,点击左上角无,再点击安装
3.创建一个用户
4.实列配置是域名地址就行,然后点击保存完成
三、解决403问题
左边点击Manage Jenkins
点击Security
下滑找到跨站请求伪造保护
勾选Enable proxy compatibility
然后点击保存
参考图,不同jenkins版本,设置位置可能不一样