jenkins基于k8s动态增减jnlp-slave节点进行构建

本文介绍如何配置 Jenkins 以实现与 Kubernetes 的集成,包括 Jenkins Master 的配置、Kubernetes 云设置、自定义镜像及挂载目录等。同时提供了一个具体的 Pipeline 脚本示例,并列举了构建过程中可能遇到的问题及其解决方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.配置jenkins-master

1.打开jenkins系统管理–>全局安全配置–>代理
代理
这里指定的端口是jnlp-slave链接master使用的端口
注意:如果jenkins-master是在容器中启动的一定要记得将这个端口暴露到外部,不然jenkins-master会不知道slave是否已经启动,会反复去创建pod只到超过重试次数。

2.打开jenkins系统管理–>系统设置–>新增一个云–>Kubernetes
Kubernetes
3.也可以自定义镜像,这里使用的是maven构建镜像
podTmp
4.挂载目录[‘/var/run/docker.sock’,’/usr/bin/docker’,’/root/.m2’]
挂载目录
5.新建一个 pipeine 任务,下面是流水线脚本

/* 
 1. cloud字段指定系统设置里配置的Kubernetes云的名字,本例用的是:k8s_115
 2. label和node中的字段是pod模板中的label值,本例用的是:jenkins-jnlp-slave
 */
def label = "maven-tmp"
podTemplate(label: label, cloud: 'k8s_115') {
    node(label){
        stage('checkout git') {
            checkout([$class: 'GitSCM', branches: [[name: '*/master']], userRemoteConfigs: [[credentialsId: '69c0dbf0-f786-4aa0-975a-76528f10de8b', url: 'http://127.0.0.1/xxx/devops_test.git']]])
        }
        container('maven') {
            stage('maven build') {
                sh 'cd WebTest && mvn clean package'
            }
            stage('docker build') {
                sh 'cd WebTest && mvn docker:build'
            }
        }
    }
}

4.开始构建
构建历史

遇到的错误

Jenkins doesn’t have label jenkins-jnlp-slave
如果提示Jenkins doesn’t have label jenkins-jnlp-slave
1.因为slave节点无法链接到jenkins节点开放端口50000导致
2.因为slave镜像中slave启动失败导致的
3.因为jenkins-master和k8s通信有延时导致超时jenkins会反复创建pod
4.因为slave pod启动失败
5.因为pipeline中指定的label与配置中的不一致导致

参考文档:https://github.com/jenkinsci/kubernetes-plugin/blob/master/README.md

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值