我想启动一项 Kubernetes 作业并给它一个固定的完成期限。如果截止日期到来时 Pod 仍在运行,我希望该作业自动被终止。
这样的事情存在吗? (起初我以为工作规范是activeDeadlineSeconds
涵盖了这个用例,但现在我看到了activeDeadlineSeconds
仅对重试作业的时间进行限制;它不会主动终止缓慢/失控的工作。)
您可以使用 GNU 对容器的入口点命令自行施加超时timeout
公用事业。
例如,以下计算 pi 前 4000 位数字的作业将在 10 秒后超时:
apiVersion: batch/v1
kind: Job
metadata:
name: pi
spec:
template:
metadata:
name: pi
spec:
containers:
- name: pi
image: perl
command: ["/usr/bin/timeout", "10", "perl", "-Mbignum=bpi", "-wle", "print bpi(4000)"]
restartPolicy: Never
(清单采用自https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/#running-an-example-job https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/#running-an-example-job)
你可以玩一下数字,看看它是否超时。通常,在我的工作站上计算 4000 位 pi 大约需要 23 秒,因此,如果您将其设置为 5 秒,它可能总是会失败,如果您将其设置为 120 秒,它总是会工作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)