没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
基于 jenkins+gitlab+springcloud+harbor+nexus 构建 Devops
1、安装和配置 jenkins
K8s 集群:
[root@xianchaomaster1 ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
xianchaomaster1 Ready control-plane,master 69d v1.23.1
xianchaonode1 Ready <none> 69d v1.23.1
1.1、安装 Jenkins
在 k8s 集群安装 jenkins
Jenkins 安装 2.328 版本
Kubernetes 集群版本是 1.23.1
1.1.1 安装 nfs 服务,可以选择自己的任意一台机器,我选择的是 k8s 的控制节点 xianchaomaster1
(1)在 xianchaomaster1 和 xianchaonode1 上安装 nfs 服务
注意:如果已经安装过 nfs,这个步骤可以忽略
[root@xianchaomaster1 ~]# yum install nfs-utils -y
[root@xianchaomaster1 ~]# systemctl start nfs
[root@xianchaomaster1 ~]# systemctl enable nfs
[root@xianchaonode1 ~]# yum install nfs-utils -y
[root@xianchaonode1 ~]# systemctl start nfs
[root@xianchaonode1 ~]# systemctl enable nfs
(2)在 xianchaomaster1 上创建一个 nfs 共享目录
[root@xianchaomaster1 ~]# mkdir /data/v2 -p
[root@xianchaomaster1 ~]# vim /etc/exports
/data/v1 *(rw,no_root_squash)
/data/v2 *(rw,no_root_squash)
#新增加一行/data/v2 *
#使配置文件生效
[root@xianchaomaster1 ~]# exportfs -arv
[root@xianchaomaster1 ~]# systemctl restart nfs
1.1.2 在 kubernetes 中部署 jenkins
(1)创建名称空间
[root@xianchaomaster1 ~]# kubectl create namespace jenkins-k8s
(2)创建 pv
#更新资源清单文件
[root@xianchaomaster1]# kubectl apply -f pv.yaml
#查看 pv 是否创建成功
[root@xianchaomaster1]# kubectl get pv
pv.yaml 文件内容如下:
apiVersion: v1
kind: PersistentVolume
metadata:
name: jenkins-k8s-pv
spec:
capacity:
storage: 10Gi
accessModes:
- ReadWriteMany
nfs:
server: 192.168.40.180
path: /data/v2
(3)创建 pvc
#更新资源清单文件
[root@xianchaomaster1]# kubectl apply -f pvc.yaml
#查看 pvc 是否创建成功
[root@xianchaomaster1]# kubectl get pvc -n jenkins-k8s
pvc.yaml 文件内容如下:
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: jenkins-k8s-pvc
namespace: jenkins-k8s
spec:
resources:
requests:
storage: 10Gi
accessModes:
- ReadWriteMany
(4)创建一个 sa 账号
[root@xianchaomaster1]# kubectl create sa jenkins-k8s-sa -n jenkins-k8s
(5)把上面的 sa 账号做 rbac 授权
[root@xianchaomaster1]# kubectl create clusterrolebinding jenkins-k8s-sa-cluster -n
jenkins-k8s --clusterrole=cluster-admin --serviceaccount=jenkins-k8s:jenkins-k8s-sa
(6)通过 deployment 部署 jenkins
[root@xianchaonode1 ~]# docker load -i jenkins-2.328.tar.gz
[root@xianchaonode1 ~]#
docker load -i jenkins-jnlp.tar.gz
#更新资源清单文件
[root@xianchaomaster1]# kubectl apply -f jenkins-deployment.yaml
#查看 jenkins 是否创建成功
[root@xianchaomaster1 jenkins]# kubectl get pods -n jenkins-k8s
NAME READY STATUS RESTARTS AGE
jenkins-74b4c59549-g5j9t 0/1 CrashLoopBackOff 3 67s
#看到 jenkins-74b4c59549-g5j9t 是 CrashLoopBackOff 状态,查看日志:
[root@xianchaomaster1]# kubectl logs jenkins-74b4c59549-g5j9t -n jenkins-k8s
日志信息显示:
touch: cannot touch '/var/jenkins_home/copy_reference_file.log': Permission denied
Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?
#报错显示没有权限操作/var/jenkins_home/copy_reference_file.log 文件,解决办法如下:
[root@xianchaomaster1]# kubectl delete -f jenkins-deployment.yaml
[root@xianchaomaster1]# chown -R 1000.1000 /data/v2
[root@xianchaomaster1]# kubectl apply -f jenkins-deployment.yaml
#查看 pod 是否创建成功:
[root@xianchaomaster1]# kubectl get pods -n jenkins-k8s
显示如下,说明部署成功了:
NAME READY STATUS RESTARTS AGE
jenkins-74b4c59549-6xpnk 1/1 Running 0 66
jenkins-deployment.yaml 文件内容如下:
kind: Deployment
apiVersion: apps/v1
metadata:
name: jenkins
namespace: jenkins-k8s
spec:
replicas: 1
selector:
matchLabels:
app: jenkins
template:
metadata:
labels:
app: jenkins
spec:
serviceAccount: jenkins-k8s-sa
containers:
- name: jenkins
image:
jenkins/jenkins:2.328
imagePullPolicy: IfNotPresent
ports:
- containerPort: 8080
name: web
protocol: TCP
- containerPort: 50000
name: agent
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-k8s-pvc
(7)把 jenkins 前端加上 service,提供外部网络访问
#更新资源清单文件
[root@xianchaomaster1]# kubectl apply -f jenkins-service.yaml
#查看 service 是否创建成功
[root@xianchaomaster1]# kubectl get svc -n jenkins-k8s
#通过上面可以看到 service 的 8080 端口在物理机映射的端口是 30002
jenkins-service.yaml 文件内容如下:
apiVersion: v1
kind: Service
metadata:
name: jenkins-service
namespace: jenkins-k8s
labels:
app: jenkins
spec:
selector:
app: jenkins
type: NodePort
ports:
- name: web
port: 8080
targetPort: web
nodePort: 30002
- name: agent
port: 50000
targetPort: agent
1.2、配置 Jenkins
在浏览器访问 jenkins 的 web 界面:
http://192.168.40.180:30002/login?from=%2F
1.2.1 获取管理员密码
在 nfs 服务端,也就是我们的 master1 节点获取密码:
[root@xianchaomaster1 ~]# cat /data/v2/jenkins-home/secrets/initialAdminPassword
把上面获取到的密码拷贝到上面管理员密码下的方框里
剩余46页未读,继续阅读
资源评论
CodeGolang
- 粉丝: 162
- 资源: 1480
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- libtnc-1.25-6.el7.x64-86.rpm.tar.gz
- libtnc-devel-1.25-6.el7.x64-86.rpm.tar.gz
- libtomcrypt-1.17-26.el7.x64-86.rpm.tar.gz
- libtomcrypt-devel-1.17-26.el7.x64-86.rpm.tar.gz
- libtomcrypt-doc-1.17-26.el7.x64-86.rpm.tar.gz
- libtommath-0.42.0-6.el7.x64-86.rpm.tar.gz
- libtommath-devel-0.42.0-6.el7.x64-86.rpm.tar.gz
- libtommath-doc-0.42.0-6.el7.x64-86.rpm.tar.gz
- libtool-2.4.2-22.el7-3.x64-86.rpm.tar.gz
- libtool-ltdl-2.4.2-22.el7-3.x64-86.rpm.tar.gz
- libtool-ltdl-devel-2.4.2-22.el7-3.x64-86.rpm.tar.gz
- libtranslit-0.0.2-6.el7.x64-86.rpm.tar.gz
- libtranslit-devel-0.0.2-6.el7.x64-86.rpm.tar.gz
- libtranslit-icu-0.0.2-6.el7.x64-86.rpm.tar.gz
- libtranslit-m17n-0.0.2-6.el7.x64-86.rpm.tar.gz
- libtsan-4.8.5-44.el7.x64-86.rpm.tar.gz
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功