You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

EKS集群Helm部署Jenkins:流水线失败时Agent Pod保留配置求助

Jenkins Agent Pod 失败后保留且禁止复用的配置方案

核心配置思路

这个需求完全可以实现,之前配置失效大概率是细节没做对。下面分全局和单流水线两种场景给出具体配置方法:

1. 全局层面配置(对所有流水线生效)

通过Jenkins系统配置里的Kubernetes插件设置:

  • 进入Manage Jenkins → Manage Nodes and Clouds → Configure Clouds,找到你的Kubernetes云配置项
  • 展开Pod Retention模块,选择On failure,设置保留时长(比如30分钟)
  • 必须勾选Never reuse pods,这是防止闲置Pod被复用的关键
  • 保存配置后,新触发的流水线如果失败,对应的Agent Pod会按设定时长保留,且不会被任何任务复用

2. 单流水线层面配置(仅对指定流水线生效)

如果只需要特定流水线生效,直接在Jenkinsfile里定义Pod模板的retention策略:

pipeline {
  agent {
    kubernetes {
      yaml '''
        apiVersion: v1
        kind: Pod
        metadata:
          labels:
            pipeline: demo
        spec:
          containers:
          - name: jnlp
            image: jenkins/inbound-agent:latest
            args: ['${computer.jnlpmac}', '${computer.name}']
      '''
      retentionStrategy {
        onFailure()
        idleMinutes 30
        neverReuse()
      }
    }
  }
  stages {
    stage('Test Failure') {
      steps {
        sh 'exit 1' // 模拟流水线失败场景
      }
    }
  }
}

排查之前配置失效的常见原因

  • 只设置了保留时长,但未开启Never reuse pods,导致闲置Pod被后续任务复用
  • 若用Helm部署,检查values.yaml里的Kubernetes插件配置是否覆盖了Web UI设置,示例配置如下:
    controller:
      cloud:
        kubernetes:
          podRetention: "OnFailure"
          idleMinutes: 30
          neverReuse: true
    
    修改后执行helm upgrade jenkins jenkins/jenkins -f values.yaml让配置生效
  • 确认Kubernetes插件版本过低,旧版本可能存在Pod retention功能的bug,建议升级到最新稳定版

验证配置有效性

流水线失败后,在EKS集群执行kubectl get pods,能看到状态为Completed或Error的Agent Pod,且不会被自动删除;同时新启动的流水线会创建全新的Agent Pod,不会复用之前保留的闲置Pod。

内容的提问来源于stack exchange,提问作者Akita

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 06:42:01