博客
关于我
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/

你可能感兴趣的文章
python 安装 easy_install 和 pip 流程
查看>>
python 安装echarts
查看>>
python 安装opencv及问题解决
查看>>
Python 安装程序:“写入文件 C:\Python27\pythonw.exe 时出错“
查看>>
Python 安装避坑指南:从入门到进阶
查看>>
Python 安装配置详解
查看>>
python 实现儿童算术游戏
查看>>
python 实现字符串转整型
查看>>
Python 实现定时任务的八种方案!
查看>>
python 实现将RGBA 转换为RGB
查看>>
Python 实现自动化测试 dubbo 协议接口
查看>>
python编程基础之十六
查看>>
python字符串input输入_Python input()函数:获取用户输入的字符串
查看>>
python 对json数据读取及保存与读取,对dump,dumps,load,loads的理解
查看>>
Python 对mysql数据库的操作
查看>>
Python 对象数据库列表
查看>>
Python 导入requests报错No module named requests
查看>>
Python 将JPEG图片批量改成jpg并删除JPEG图片
查看>>
python 将函数加到列表中进行调用
查看>>
python 将图片与字符串相互转换
查看>>