【问题标题】:Jenkins slave pod keeps always runningJenkins slave pod 一直在运行
【发布时间】:2020-01-21 14:52:07
【问题描述】:

我试图让从属 pod 始终运行。不幸的是,在管道中使用 Kubernetes 代理,我仍然像往常一样努力添加“podRetention”

【问题讨论】:

    标签: jenkins kubernetes jenkins-pipeline


    【解决方案1】:

    对于声明式管道,您可以使用 idleMinutes 来延长 pod

    pipeline {
        agent {
           kubernetes {
                label "myPod"
                defaultContainer 'docker'
                yaml readTrusted('kubeSpec.yaml')
                idleMinutes 30
            }
        }
    

    这个想法是让 pod 为经常触发的作业保持一段时间的活动,例如监视 master 分支的作业。这样,如果开发人员疯狂推动 master,构建将很快。开发完成后,我们不需要 pod 永远启动,我们也不想白白支付额外的资源,所以我们让 pod 自己杀死

    【讨论】:

    • 在 podTemplate 中添加 idleMinutes 30 后,它会在每次构建时创建新的 slave(pod)-NAME READY STATUS RESTARTS AGE jenkins-6d44798b69-tr8tb 1/1 Running 0 44h worker-bf23af92-2159-4a09-84ae-b277db073aab-756bc-9sgcw 2/2 Running 0 33s worker-be4c3286-e3a3-46f1-9cde-56761ad1a33b-2d0f6-2d65x 2/2 Running 0 3m worker-dc99e7e8-b890-4315-99b4-72391799f60a-nc4l4-18ldv 2/2 Running 0 4m
    • 还注意到一件事,工作节点(slave/pod)仍在运行超过 30 分钟,这是 aginst podTemplate 规范-```NAME READY STATUS RESTARTS AGE jenkins-6d44798b69-tr8tb 1/1 Running 0 45h worker-bf23af92-2159-4a09-84ae-b277db073aab-756bc-9sgcw 1/2 运行 0 31m worker-be4c3286-e3a3-46f1-9cde-56761ad1a33b-2d0f6-2d65x 1/27 运行 0 33m worker-dc9e89 4315-99b4-72391799f60a-nc4l4-18ldv 1/2 运行 0 34m
    • 成功了。谢谢。通过应用这种方法,如果我们在 podTemplate 中添加另一个容器并且计划在该容器上执行的那些步骤(管道阶段),我们可能会陷入这种情况,它肯定会失败。如果在 podTemplate 中进行任何修改,如果 Jenkins master 强制重新创建 slave(pod),那就太好了。
    • 确实会发生这样的情况。例如,如果您使用 github,您可以做的是锁定 pod 规范文件以要求您在合并之前进行验证。这样,如果其他人更新了文件,您就会被注意到,并且您会知道您需要重新创建 pod。您还可以将日期作为变量放入标签中,这样 jenkins 将每天创建一个新 pod
    • 我得到了这个案例,为了克服这个问题,我们将 Jenkins 作业配置为“管道脚本”而不是“来自 SCM 的管道脚本”。如果在 Jenkins (UI) 中更改了配置本身,是否有任何方法可以向 Jenkins master 发送“警报”以使用更新的 podTempalte 重新创建空闲的 slave(pod)。
    猜你喜欢
    • 1970-01-01
    • 2021-04-26
    • 1970-01-01
    • 1970-01-01
    • 2016-07-20
    • 2021-07-13
    • 1970-01-01
    • 2016-11-25
    • 1970-01-01
    相关资源
    最近更新 更多