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

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐