kubernetes - 如果已经有作业在运行,如何防止在 Kubernetes 中执行 Cronjob?concurrencyPolicy:Forbid 完全停止 cron 作业执行
问题描述
我需要每 5 分钟运行一次 cron 作业。如果较早的 cron 作业仍在运行,则不应启动另一个 cron 作业。我尝试将并发策略设置为禁止,但是 cron 作业根本没有运行。
- 作业按预期每 5 分钟启动一次,但即使较早的 cron 作业尚未完成,它也会启动
spec:
concurrencyPolicy: Allow
schedule: '*/5 * * * *'
- 这应该可以解决问题,但是 cron 作业永远不会使用这种方法启动
spec:
concurrencyPolicy: Forbid
schedule: '*/5 * * * *'
- 将startingDeadlineSeconds 设置为3600,甚至设置为10,并没有什么不同。
spec:
concurrencyPolicy: Forbid
schedule: '*/5 * * * *'
startingDeadlineSeconds: 10
有人可以在这里帮助我吗?
解决方案
来自 Kubernetes 文档
Concurrency Polic 指定如何处理由该 cron 作业创建的作业的并发执行。规范只能指定以下并发策略之一:
允许(默认):cron 作业允许同时运行的作业
禁止:cron 作业不允许并发运行;如果是运行新作业的时间并且之前的作业运行尚未完成,则 cron 作业会跳过新作业运行
替换:如果是新作业运行的时间,而之前的作业运行尚未完成,则 cron 作业将当前正在运行的作业运行替换为新的作业运行
在您的情况下,“concurrencyPolicy:Forbid”应该可以工作。如果前一个作业仍在运行,它将不允许运行新作业。在您的情况下,问题不在于 concurrencyPolicy 。
它可能与startingDeadlineSeconds 有关。你能把它删掉试试
推荐阅读
- javascript - 如何从呈现本地 HTML 的 WebView 执行跨域请求?
- php - 如何在 PHP/Laravel 中 POST 后保留克隆的字段值
- ios - 结合超时链接
- reactjs - 开玩笑:接听电话数:0
- jquery - 我的 jquery 代码在 safari 旧版本中不支持,但在最新版本和 chrome 上也可以正常工作
- node.js - 服务器响应不需要的响应?
- python-3.x - Python GEKKO 中基于 ODE 或 PDE 的生态系统模型最合适的求解方法是什么?
- python - 如何将用户输入完全转换为用于训练分类器的处理数据?我想对用户输入文本进行情感分析
- python - 向量化双 for 循环
- javascript - Java 通过将零添加到以下格式 XX.xxxxxx 来转换用户的输入