有时我需要保持k8s CronJob运行,因此临时将通用调试命令添加到模板中:
tail -f /dev/null
字符串
规格为:
backoffLimit: 3
template:
spec:
restartPolicy: Never
型
然后我调试并修改模板,然后删除tail
,运行helm apply
,然后运行kubectl delete <cronjob pod>
,这样我就可以应用我的新设置。然而,k8s只是重新生成了旧的cronjob,其中包含tail
。我可以删除它几十次,但它没有出现backoffLimit
计数器增加,因为cronjob永远不会停止重生。
我试过在cronjob模板中使用suspend: true
,这确实会暂时停止作业重新生成,但只要我再次设置suspend: false
,其中包含调试tail
的旧模板就会开始重新生成。
最后,我必须向模板中添加一个installed: false
以完全删除cronjob,然后将其添加回去以清除旧的调试模板中的tail
。
有没有一种方法可以让kubectl delete
的cronjob停止重生,或者有一种更好的方法来调试cronjob?
1条答案
按热度按时间5vf7fwbs1#
正如你尝试使用suspend:真的,请注意,根据这个官方文档:
在其计划时间内挂起的执行将计为错过的作业。当.spec.suspend在没有开始截止日期的现有CronJob上从true更改为false时,错过的作业将立即计划。
因此,某些作业可能会重新创建,因此在挂起作业检查后:
第一个月
kubectl delete job <jobname>
手动删除现有作业如果上述步骤不能解决您的问题,请尝试使用
.spec.successfulJobsHistoryLimit
和.spec.failedJobsHistoryLimit
作为:字符串
此字段将确保作业在完成后将被删除,您可以从文档中找到有关它的更多详细信息。