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: truehelm 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
相关产品推荐
相关产品推荐

