我想发起一个Kubernetes工作并给它一个固定的截止日期来完成。如果在截止日期之前pod仍在运行,我希望自动将该作业杀死。
这样的事情存在吗? (起初我认为Job规范的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
您可以使用这些数字并查看它是否超时。通常在我的工作站上计算pi的4000个数字需要大约23秒,因此如果你将它设置为5秒,它可能总是会失败,如果你将其设置为120秒,它将始终有效。