gpt4 book ai didi

kubernetes - 重试一定次数后如何使(cron)作业失败?

转载 作者:行者123 更新时间:2023-12-04 03:56:19 34 4
gpt4 key购买 nike

我们设置了一个 Kubernetes 网络抓取 cron 作业集群。一切似乎都很顺利,直到 cron 作业开始失败(例如,当站点结构发生变化并且我们的抓取工具不再工作时)。看起来时不时有一些失败的 cron 作业会继续重试,直到它导致我们的集群崩溃。运行 kubectl get cronjobs (在集群故障之前)将显示为失败的作业运行的作业太多。

我已经尝试按照说明 here 进行操作关于 Pod 退避失败策略的已知问题;然而,这似乎不起作用。

这是我们的配置供引用:

apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: scrape-al
spec:
schedule: '*/15 * * * *'
concurrencyPolicy: Allow
failedJobsHistoryLimit: 0
successfulJobsHistoryLimit: 0
jobTemplate:
metadata:
labels:
app: scrape
scrape: al
spec:
template:
spec:
containers:
- name: scrape-al
image: 'govhawk/openstates:1.3.1-beta'
command:
- /opt/openstates/openstates/pupa-scrape.sh
args:
- al bills --scrape
restartPolicy: Never
backoffLimit: 3

理想情况下,我们希望 cron 作业在 N 次重试后终止(例如,在 kubectl delete cronjob my-cron-job 失败 5 次后,类似 my-cron-job 的内容)。任何想法或建议将不胜感激。谢谢!

最佳答案

您可以使用 backoffLimit 告诉您的作业停止重试.

Specifies the number of retries before marking this job failed.



在你的情况下
spec:
template:
spec:
containers:
- name: scrape-al
image: 'govhawk/openstates:1.3.1-beta'
command:
- /opt/openstates/openstates/pupa-scrape.sh
args:
- al bills --scrape
restartPolicy: Never
backoffLimit: 3

您将 3 设置为 backoffLimit你的工作。这意味着当 CronJob 创建 Job 时,如果失败,它将重试 3 次。这控制了 Job,而不是 CronJob

当 Job 失败时,另一个 Job 将重新创建作为您的预定时间段。

您要:
如果我没猜错,当你的计划任务失败 5 次时,你想停止计划新的任务。对?

答案:
在这种情况下,这不能自动进行。

可能的解决方案:
您需要 suspend CronJob 所以它停止调度新的 Job。
Suspend: true

您可以手动执行此操作。如果您不想手动执行此操作,则需要设置一个观察器,它将监视您的 CronJob 状态,并在必要时更新 CronJob 以暂停。

关于kubernetes - 重试一定次数后如何使(cron)作业失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48505972/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com