Bos*_*osh 7 jobs containers docker kubernetes kubernetes-jobs
我想启动Kubernetes工作,并给它一个固定的截止日期。如果在截止日期到来之前吊舱仍在运行,我希望该作业自动终止。
是否存在这样的东西?(起初我以为Job规范activeDeadlineSeconds涵盖了这个用例,但现在我看到这activeDeadlineSeconds仅限制了重试作业的时间;它不会主动杀死慢速/失控的工作。)
小智 16
根据我对activeDeadlineSeconds部分文档的理解,它指的是作业的活动时间,并且在该时间之后考虑作业Failed。
官方文档声明:
activeDeadlineSeconds 适用于作业的持续时间,无论创建了多少个 Pod。一旦 Job 达到 activeDeadlineSeconds,其所有正在运行的 Pod 都会被终止,并且 Job 状态将变为 type: Failed with Reason: DeadlineExceeded
https://kubernetes.io/docs/concepts/workloads/controllers/job/#job-termination-and-cleanup
您可以使用GNU timeout实用程序在容器的entrypoint命令上自定义超时。
例如,以下计算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
Run Code Online (Sandbox Code Playgroud)
您可以玩数字游戏,看看它是否超时。通常,在我的工作站上计算pi的4000位数字需要大约23秒,因此,如果将其设置为5秒,则可能始终会失败,而如果将其设置为120秒,它将始终可以工作。
| 归档时间: |
|
| 查看次数: |
2363 次 |
| 最近记录: |