如何防止Kubernetes Job Pod执行完成后自动删除?含Helm配置方法
保留Job执行完成后的Pod及Helm配置方法
要保留Job执行完成后的Pod,核心是利用Kubernetes Job的ttlSecondsAfterFinished参数,具体配置和Helm集成方式如下:
直接修改Job配置
在Job的spec字段下添加ttlSecondsAfterFinished,设置为-1即可永久保留完成后的Pod;如果只是临时保留,可以设置具体秒数(比如86400表示保留1天)。修改后的Job配置片段:
apiVersion: batch/v1 kind: Job ... spec: backoffLimit: 1 # -1 表示永久保留完成状态的Pod,也可设置具体秒数 ttlSecondsAfterFinished: -1 template: spec: restartPolicy: Never containers: ...
在Helm Chart中做可配置化设置
为了灵活控制Pod保留策略,可以把这个参数抽到Helm的values.yaml中,方便不同环境调整:
- 在
values.yaml中添加配置项:
job: # 配置Job完成后Pod的保留时间,-1=永久保留,单位:秒 ttlSecondsAfterFinished: -1 backoffLimit: 1
- 在
templates/job.yaml的Job spec部分引用该配置:
apiVersion: batch/v1 kind: Job ... spec: backoffLimit: {{ .Values.job.backoffLimit }} ttlSecondsAfterFinished: {{ .Values.job.ttlSecondsAfterFinished }} template: spec: restartPolicy: Never containers: ...
注意事项
如果你的Kubernetes集群版本低于1.21,ttlSecondsAfterFinished属于Beta特性,需要先开启TTLAfterFinished特性门控才能使用。目前主流集群版本都已支持稳定版该特性,无需额外配置。
内容的提问来源于stack exchange,提问作者Dante
相关产品推荐
相关产品推荐

