首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >kubernetes的平行jenkins代理与kubernetes插件

kubernetes的平行jenkins代理与kubernetes插件
EN

Stack Overflow用户
提问于 2019-10-31 15:38:28
回答 3查看 2.5K关注 0票数 0

我使用Jenkins版本2.190.2和Kubernetes插件1.19.0,我在AWS的kubernetes集群中使用了这个jenkins。这个jenkins配置了kubernetes插件,并且运行正常。我已经配置了一些正在运行的pod模板和容器。我能够运行指定代理和容器的声明性管道。

我的问题是我无法并行运行作业。当多个作业同时执行时,第一个作业就开始了,pod就会被创建并执行。第二个作业等待到第一个作业结束,即使使用不同的代理。

例子:

管道1

代码语言:javascript
复制
pipeline {
    agent { label "bash" }

    stages {
        stage('init') {
            steps {
                container('bash') {
                    echo 'bash'
                    sleep 300
                }
            }
        }
    }
}

管道2

代码语言:javascript
复制
pipeline {
    agent { label "bash2" }

    stages {
        stage('init') {
            steps {
                container('bash2') {
                    echo 'bash2'
                    sleep 300
                }
            }
        }
    }
}

这是org.csanchez.jenkins.plugins.kubernetes日志。我已经上传到wetransfer -> we.tl/

我已经阅读了很多这个问题,并且配置了jenkins,从这个JAVA_OPTS开始,但是问题没有解决。

代码语言:javascript
复制
-Dhudson.slaves.NodeProvisioner.initialDelay=0 
-Dhudson.slaves.NodeProvisioner.MARGIN=50 
-Dhudson.slaves.NodeProvisioner.MARGIN0=0.85

Kubernetes插件配置如下:

  • Kubernetes云/并发极限= 50。我配置没有值,但问题仍然发生
  • Kubernetes云/ Pod保留度=从不
  • 没有值的Pod模板/并发限制。我已经配置了10,但问题仍然发生
  • Pod模板/ Pod保留=默认

我缺少什么配置,或者正在做什么错误?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-11-15 12:56:10

由于另一个问题,我终于解决了我的问题。因为aws的kubernetes节点没有足够的空闲ip,所以我们开始在创建普通吊舱时出现错误。由于这个错误,我们缩放了节点,现在jenkins管道可以与不同的容器、吊舱和容器并行运行。

票数 1
EN

Stack Overflow用户

发布于 2019-11-01 12:13:22

你的吊舱是并行创建的

代码语言:javascript
复制
Oct 31, 2019 3:13:30 PM INFO org.csanchez.jenkins.plugins.kubernetes.KubernetesLauncher launch
Created Pod: default/bash-4wjrk
...
Oct 31, 2019 3:13:30 PM INFO org.csanchez.jenkins.plugins.kubernetes.KubernetesLauncher launch
Created Pod: default/bash2-3rxck

但是你的bash2吊舱失败了

代码语言:javascript
复制
Caused by: java.net.UnknownHostException: jenkins-jnlp.default.svc.cluster.local
票数 0
EN

Stack Overflow用户

发布于 2019-11-01 12:45:44

您应该使用平行级。您可以在管道语法的Jenkins文档中找到它。

声明性管道中的阶段可以声明parallel块中的多个嵌套阶段,这些嵌套阶段将并行执行。请注意,一个舞台必须有一个并且只有一个stepsstagesparallel。嵌套阶段不能包含更多的parallel阶段本身,但在其他情况下,它们的行为与任何其他stage相同,包括stages中的顺序阶段列表。任何包含parallel的阶段都不能包含agenttools,因为如果没有steps,这些阶段就不相关了。 此外,您还可以通过将parallel添加到包含failFast truestage中,强制在其中一个阶段失败时中止所有parallel阶段。添加failfast的另一个选项是在管道定义中添加一个选项:parallelsAlwaysFailFast()

一个示例管道可能如下所示:

代码语言:javascript
复制
Jenkinsfile
pipeline {
    agent none
    stages {
        stage('Run pod') {
            parallel {
                stage('bash') {
                    agent {
                        label "init"
                    }
                    steps {
                        container('bash') {
                            echo 'bash'
                            sleep 300
                        }
                    }
                }
                stage('bash2') {
                    agent {
                        label "init"
                    }
                    steps {
                        container('bash') {
                            echo 'bash'
                            sleep 300
                        }
                    }
                }
            }
        }
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58646823

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档