【将Jenkins部署在kubernetes集群中】学向勤中得,萤窗万卷书。这篇文章主要讲述将Jenkins部署在kubernetes集群中相关的知识,希望能为你提供帮助。
大家好!我是李大白!
本篇文章分享在kubernetes集群中部署Jenkins服务。
目录
- 前言
- 环境说明
- 1、kubernetes集群
- 2、数据持久化
- 使用NFS提供数据持久的配置
- 1)安装NFS服务端
- 2)创建共享目录
- 3)安装客户端驱动
- 创建命名空间
- 创建pv
- 创建PVC
- 创建Sa账号并做RBAC授权
- 通过 deployment 部署 jenkins
- 查看资源状态
- 登录Jenkins
- 1、浏览器访问Jenkins
- 2、管理员密码获取
- 3、重启Jenkins
- Jenkins配置
- 1)安装kubernetes插件
- 2)安装blueocean 插件
- 3)配置Jenkins连接到K8S集群
- 精品文章推荐
前言本文主要介绍在kubernetes集群中部署Jenkins的详细操作步骤。
环境说明1、kubernetes集群
我的kubernetes集群是1master2node的集群
[root@sc-master1 ~]# kubectl get nodes
NAMESTATUSROLESAGEVERSION
sc-master1Readycontrol-plane,master23dv1.20.6
sc-node1Ready< none> 23dv1.20.6
sc-node2Ready< none> 13dv1.20.6
2、数据持久化
本处我使用了NFS来持久化存储Jenkins的数据,NFS的搭建请看我前面的文章:??kubernetes使用NFS作为存储的操作步骤(保姆式分享)??
- NFS服务端地址:192.168.2.212
- 共享目录: /data/nfs/jenkins
[root@nfs-212 ~]# yuminstall -ynfs-utils
[root@nfs-212 ~]# systemctl start nfs
[root@nfs-212 ~]# systemctl enable nfs
[root@nfs-212 ~]# systemctl status nfs
[root@nfs-212 ~]# chkconfig nfs on//设置为开机自启
注意:正在将请求转发到“systemctl enable nfs.service”。
2)创建共享目录
[root@nfs-212 ~]#mkdir-p/data/nfs/efk#创建共享目录
[root@nfs-212 ~]#cat /etc/exports
/data/nfs/jenkins192.168.2.0/24(rw,no_root_squash)
[root@nfs-212 ~]#exportfs -arv//使配置文件生效
exporting 192.168.2.0/24:/data/nfs/jenkins
[root@nfs-212 ~]#systemctl restart nfs
[root@nfs-212 ~]#showmount-e localhost//检查共享目录信息
Export list for localhost:
/data/nfs/jenkins192.168.2.0/24 .
3)安装客户端驱动
客户端即是kubernetes集群中的每个节点,每个节点都需要本步骤操作。
[root@sc-node2 ~]#yum -y install nfs-utils
[root@sc-node2 ~]#systemctl start nfs-utils
[root@sc-node2 ~]# systemctl enable nfs-utils
[root@sc-node2 ~]# systemctl statusnfs-utils
创建命名空间单独创建一个命名空间,将Jenkins相关的资源都放到该命名空间下,方便维护和管理。
[root@sc-master1 ~]#kubectl create namespace jenkins-k8s
[root@sc-master1 ~]#kubectl get ns
NAMESTATUSAGE
jenkins-k8sActive15s
...
.
创建pv
- 编写资源清单文件
[root@sc-master1 ~]#vim jenkins-pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: jenkins-pv
spec:
capacity:
storage: 10Gi# 大小
accessModes:# 访问模式
- ReadWriteMany# 多路读写
nfs:
server: 192.168.2.212#NFS服务器地址
path: /data/nfs/jenkins# 共享目录
- 创建资源对象
[root@sc-master1 ~]#kubectl apply-fjenkins-pv.yaml
创建PVC
[root@sc-master1 ~]#vim jenkins-pvc.yaml
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: jenkins-pvc
namespace: jenkins-k8s
spec:
resources:
requests:
storage: 10Gi
accessModes:
- ReadWriteMany
[root@sc-master1 ~]#kubectl apply -f jenkins-pvc.yaml
[root@sc-master1 ~]#kubectl -n jenkins-k8s get pvc
NAMESTATUSVOLUMECAPACITYACCESS MODESSTORAGECLASSAGE
jenkins-pvcBoundjenkins-pv10GiRWX3m3s
可以看到,创建的PVC跟PV已经成功绑定!
创建Sa账号并做RBAC授权Jenkins使用该sa账号访问kubernetes集群中的资源,需要对该sa账号授予相关的权限。
[root@sc-master1 ~]#vim jenkins-sa.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
name: jenkins-sa# sa名称
namespace: jenkins-k8s
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: jenkins-clusterrole
roleRef:
kind: ClusterRole
name: cluster-admin
apiGroup: rbac.authorization.k8s.io
subjects:
- kind: ServiceAccount
name: jenkins-sa
namespace: jenkins-k8s
- 更新资源对象
[root@sc-master1 ~]#kubectl apply-f jenkins-sa.yaml
[root@sc-master1 ~]#kubectl -n jenkins-k8s get sa
NAMESECRETSAGE
default115d
jenkins-sa112d
通过 deployment 部署 jenkins
- 编写资源清单文件
[root@sc-master1 Jenkins]# vim jenkins-deploy.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: jenkins
namespace: jenkins-k8s
spec:
replicas: 1
selector:
matchLabels:
app: jenkins
template:
metadata:
labels:
app: jenkins
spec:
serviceAccount: jenkins-sa
containers:
- name: jenkins
image: jenkins/jenkins:2.297-alpine
imagePullPolicy: IfNotPresent
ports:
- name: web
containerPort: 8080
protocol: TCP
- name: agent
containerPort: 50000
protocol: TCP
resources:
limits:
cpu: 1000m
memory: 1Gi
requests:
cpu: 500m
memory: 512Mi
livenessProbe:
httpGet:
path: /login
port: 8080
initialDelaySeconds: 60
timeoutSeconds: 5
failureThreshold: 12
readinessProbe:
httpGet:
path: /login
port: 8080
initialDelaySeconds: 60
timeoutSeconds: 5
failureThreshold: 12
volumeMounts:
- name: jenkins-volume
subPath: jenkins-home
mountPath: /var/jenkins_home
volumes:
- name: jenkins-volume
persistentVolumeClaim:
claimName: jenkins-pvc
# 创建Jenkins服务
---
apiVersion: v1
kind: Service
metadata:
name: jenkins-svc
namespace: jenkins-k8s
labels:
app: jenkins
spec:
selector:
app: jenkins
type: NodePort# 使用NodePort类型访问Services服务
ports:
- name: web
port: 8080# service端口
targetPort: web
nodePort: 30003# 映射到主机的端口
- 更新资源对象
[root@sc-master1 Jenkins]# kubectl apply -f jenkins-deploy.yaml
查看资源状态
[root@sc-master1 Jenkins]# kubectl -n jenkins-k8s get pod -owide
NAMEREADYSTATUSRESTARTSAGEIPNODENOMINATED NODEREADINESS GATES
jenkins-56b9748f8b-ct5th1/1Running612s10.244.119.230sc-node1< none> < none>
[root@sc-master1 Jenkins]# kubectl -n jenkins-k8s get services
NAMETYPECLUSTER-IPEXTERNAL-IPPORT(S)AGE
jenkins-svcNodePort10.103.27.77< none> 8080:30003/TCP12d
登录Jenkins1、浏览器访问Jenkins
浏览器输入:
2、管理员密码获取
nfs服务端jenkins-home/secrets/initialAdminPassword文件内容。
或者进入到容器中查看。登录后需要修改密码。
选择“安装推荐的插件”在线安装推荐的插件。
网络有时不稳定会安装失败,重复安装即可。
3、重启Jenkins
浏览器输入:http://192.168.2.11:30003/restart
点击“是”完成重启
Jenkins配置1)安装kubernetes插件
系统管理——> 系统配置——Cloud(云)——kubernetes
安装插件后还需要重启Jenkins服务。重启方法见前面。
2)安装blueocean 插件
Manage Jnekins------> 插件管理------> 可选插件------> 搜索 blueocean
详细操作参考 在Jenkins中安装kubernetes插件。
3)配置Jenkins连接到K8S集群
【系统管理】--> 【系统配置】--> 【Cloud】:
l 添加Pod模板
l 添加容器
l 添加卷
l 添加SA账号
然后点击【应用】
精品文章推荐
- ??kubernetes使用NFS作为存储的操作步骤(保姆式分享)??
- ??harbor密码丢失,忘记Harbor密码???
- ??Helm部署Harbor,实现高可用的镜像仓库(超详细分享)~后附踩坑记录??
- ??Harbor配置优化,配置文件深度解析!??
- ??Prometheus监控Harbor实战(全网首发)??
- ???企业内网如何搭建安全的Harbor服务?(超详细)??
- ??Harbor镜像仓库漏洞扫描_如何检测你的镜像是否安全???
- ??k8s节点如何从Harbor中拉取镜像的?镜像拉取凭证的配置??
- ??Harbor一键部署——初学者如何快速了解它???
- ??【Harbor故障排查篇】docker login连接被拒绝???
- ?? 一图看懂pod亲和性调度策略,再也不担心学不废了!??
- ??如何维护好公司的Harbor服务,看完这篇小白也会维护Harbor了!??
推荐阅读
- Outlook无法启动一直显示“正在启动”的解决方法
- #yyds干货盘点#nginx配置
- 文件和目录读写执行权限的区别
- 坦克综合训练模拟器的系统软件方案
- 使用VMware字符界面设置防火墙实验
- 装甲战斗车辆类综合仿真模拟训练系统软件
- 网络消防作战指挥训练模拟仿真系统软件
- DHCP中继 思科设备
- zabbix-agent自动安装脚本