博客
关于我
k8s如何部署分布式jenkins
阅读量:664 次
发布时间:2019-03-15

本文共 3955 字,大约阅读时间需要 13 分钟。

在Kubernetes集群上部署Jenkins

安装前提条件

本指南将引导您在Kubernetes集群上部署并配置Jenkins_master和 Slave。以下是必要条件:

  • 存储类:确保集群中存在适用于Jenkins数据存储的StorageClass
  • Persistent Volume Claim (PVC):创建持久化存储资源以支持Jenkins工作流程。
  • Kubernetes命名空间:创建kube-ops命名空间用于Jenkins组件的部署。

存储与权限配置

创建PVC

确保存储资源可用并创建PVC:

kubectl create persistentvolumeclaim opspvc --storage-class 
<存储类名称>

紧接在创建PVC后,将accessMode设置为readWriteMany,以支持多个Pod的并发读写。

Jenkins访问权限

为Jenkins Master配置读写权限:

# 在你选择的命名空间(如kube-ops)中创建ServiceAccountkubectl create serviceaccount jenkins -n kube-ops

配置RBAC角色:

# 在kube-ops命名空间中创建角色kubectl create role jenkins -n kube-ops

创建角色绑定:

kubectl bind role jenkins --to-serviceaccount jenkins -n kube-ops

Jenkins Master部署

部署Jenkins Master:

# 配置Jenkins Master Deployment在kube-ops命名空间kubectl apply -n kube-ops -f deployment.yml

deployment.yml示例:

apiVersion: extensions/v1beta1kind: Deploymentmetadata:  name: jenkins  namespace: kube-opsspec:  template:    metadata:      labels:        app: jenkins    spec:      terminationGracePeriodSeconds: 10      serviceAccountName: jenkins      containers:        - name: jenkins          image: jenkins/jenkins:lts          imagePullPolicy: IfNotPresent          ports:            - containerPort: 8080              name: web              protocol: TCP            - containerPort: 50000              name: agent              protocol: TCP          resources:            limits:              cpu: 2000m              memory: 4Gi            requests:              cpu: 1000m              memory: 2Gi          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: jenkinshome            subPath: jenkins            mountPath: /var/jenkins_home          env:          - name: LIMITS_MEMORY            valueFrom: resourceFieldRef: resource: limits.memory divisor: 1Mi          - name: JAVA_OPTS            value: -Xmx$(LIMITS_MEMORY)m -XshowSettings:vm -Dhudson.slaves.NodeProvisioner.initialDelay=0 -Dhudson.slaves.NodeProvisioner.MARGIN=50 -Dhudson.slaves.NodeProvisioner.MARGIN0=0.85 -Duser.timezone=Asia/Shanghai      securityContext:        fsGroup: 1000      volumes:        - name: jenkinshome          persistentVolumeClaim: claimName: opspvc

配置Service

创建Jenkins服务:

kubectl apply -n kube-ops -f service.yml

service.yml示例:

apiVersion: v1kind: Servicemetadata:  name: jenkins  namespace: kube-opslabels:  app: jenkinsspec:  selector:    app: jenkins  ports:  - name: web    port: 8080    targetPort: web  - name: agent    port: 50000    targetPort: agent

Jenkins Slave配置

在 Slave所在Kubernetes集群中标注节点:

kubectl label nodes 
<节点名称>
jenkins=slave

配置Jenkins Slave Pod:

apiVersion: v1kind: Podmetadata:  labels:    jenkins: slave  annotations:    jenkins SlaveID: 
<自定义id>
spec: containers: - name: jenkins-slave image: jenkins/jenkins-slave:lts imagePullPolicy: IfNotPresent volumeMounts: - name: jenkinshome subPath: jenkins-slave mountPath: /var/jenkins_home - name: jenkins-slave-config subPath: jenkins-slave mountPath: /var/jenkins/slave_config

Job配置

在Jenkins中创建Python构建Job时,勾选“此Job只能在特定节点上运行”,并选择标签jenkins_slave。确保Slave对应的Kubernetes标签已正确配置。

使用Kubernetes插件

安装Jenkins插件(如SonarQube插件):

kubectl apply -n jenkins -f https://github.com/jenkinsci/kubernetes-plugin-deployment files

高级集群配置

由于Jenkins和Kubernetes集成,确保集群的SSL配置正确。由于腾讯云未提供TLS客户端认证,建议直接使用账号密码认证,并禁用证书检查。

集群远程连接

Jenkins Master和Slave分别在不同的Kubernetes集群中运行。确保Jenkins Master的UI通过Ingress服务外露,访问地址为Jenkins外TERNAL IP和端口8080(或其他配置的端口)。Slave构建任务将自动尝试Kubernetes私有云内的节点。

Troubleshooting

  • 确保Jenkins Master和Slave有适当的权限访问PVC存储。
  • 检查Jenkins服务和Pod日志,确保其能够正确挂载存储且没有网络连接问题。
  • 请确保Jenkins Slave节点在可接触的Kubernetes集群中运行,并且Pod的容器安全组允许通信。

转载地址:http://uztmz.baihongyu.com/

你可能感兴趣的文章
Open-Sora代码详细解读(2):时空3D VAE
查看>>
Open-Source Service Discovery
查看>>
open-vm-tools-dkms : 依赖: open-vm-tools (>= 2:9.4.0-1280544-5ubuntu3) 但是它将不会被安装
查看>>
open3d-Dll缺失,未找到指定模块解决
查看>>
openai Midjourney代理服务 gpt大模型第三方api平台汇总 支持国内外各种大模型 持续更新中...
查看>>
OpenAll:Android打开组件新姿势【仅供用于学习了解ButterKnife框架基本原理】
查看>>
OpenASR 项目使用教程
查看>>
Openbox-桌面图标设置
查看>>
opencart出现no such file or dictionary
查看>>
OpenCV 3.1 imwrite()函数写入异常问题解决方法
查看>>
OpenCV 4.1.0版drawContours
查看>>
Opencv cv2.putText 函数详解
查看>>
opencv glob 内存溢出异常
查看>>
opencv Hog Demo
查看>>
opencv Hog学习总结
查看>>
opencv Mat push_back
查看>>
opencv putText中文乱码
查看>>
OpenCV Python围绕特定点将图像旋转X度
查看>>
opencv resize
查看>>
Opencv Sift和Surf特征实现图像无缝拼接生成全景图像
查看>>