首页 > 解决方案 > 用于 Kubernetes 的 Jenkins 插件的容器问题

问题描述

我在 jenkins 中使用 kubernetes 插件。我正在尝试将它与 Pipeline 和 Freestyle 作业一起使用。作业正在运行,但仅在具有jnlp-slave:3.35-5-alpine我没有在任何地方定义的名称的容器中运行。

即使在管道中定义图像也没有任何问题,并且仍然在该jnlp-slave:3.35-5-alpine图像中运行。这是我的管道示例:

pipeline {
    agent none
    stages {
        stage ('Stage as dsl') {
            agent {
                kubernetes {
                    cloud 'kubernetes'
                    label 'jnlp-slave'
                    containerTemplate {
                        name 'jnlp-slave'
                        image 'jnlp-slave'
                    }
                }
            }
            steps {
                sh '''
                    pwd; \
                    whoami; \
                    uname -a
                '''
            }
        }
    }
}

我的错误在哪里?

标签: jenkinskubernetesjenkins-pipelinejenkins-pluginsdevops

解决方案


我找到的解决方案是为集群定义任何标签。

在我的jenkinsfile示例中,我正在测试使用 diffrend docker 图像,如下所示:

工作解决方案

def podTemplate = """
apiVersion: v1
kind: Pod
spec:
  containers:
  - name: java-slave
    image: myrepo/java-slave:latest
    command:
    - sleep
    args:
    - infinity
  - name: jenkins-slave-dind
    image: myrepo/jenkins-slave-dind:latest
    command:
    - sleep
    args:
    - infinity
    volumeMounts:
    - name: dockersock
      mountPath: /var/run/docker.sock
  volumes:
  - name: dockersock
    hostPath:
      path: /var/run/docker.sock
"""
pipeline {
    agent {
        kubernetes {
            yaml podTemplate
            defaultContainer 'java-slave'
        }
    }
    stages {
        stage('Main') {
            steps {
                sh 'curl google.com'
            }
        }
        stage ('Stage as dsl 4'){
            steps {
                container('jenkins-slave-dind') {
                    sh '''
                        docker ps -a
                    '''
                }
            }
        }
    }
}

推荐阅读