kubernetes 手动删除时停止k8s cronjob重新启动

noj0wjuj  于 2023-08-03  发布在  Kubernetes
关注(0)|答案(1)|浏览(194)

有时我需要保持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?

5vf7fwbs

5vf7fwbs1#

正如你尝试使用suspend:真的,请注意,根据这个官方文档:
在其计划时间内挂起的执行将计为错过的作业。当.spec.suspend在没有开始截止日期的现有CronJob上从true更改为false时,错过的作业将立即计划。
因此,某些作业可能会重新创建,因此在挂起作业检查后:

  • 对于任何使用

第一个月

  • 使用kubectl delete job <jobname>手动删除现有作业

如果上述步骤不能解决您的问题,请尝试使用.spec.successfulJobsHistoryLimit.spec.failedJobsHistoryLimit作为:

spec:
  schedule: "*/1 * * * *"
  successfulJobsHistoryLimit: 0
  failedJobsHistoryLimit: 0
  jobTemplate:
    Spec:

字符串
此字段将确保作业在完成后将被删除,您可以从文档中找到有关它的更多详细信息。

相关问题