繁体   English   中英

如何为 Kube.netes 作业设置时间限制?

[英]How to set a time limit for a Kubernetes job?

我想启动一个 Kube.netes 作业并给它一个固定的完成期限。 如果截止日期到来时 pod 仍在运行,我希望该工作自动终止。

这样的东西存在吗? (起初我认为 Job 规范的activeDeadlineSeconds涵盖了这个用例,但现在我看到activeDeadlineSeconds只对重试作业的时间设置了限制;它不会主动终止缓慢/失控的作业。)

您可以使用 GNU timeout实用程序在容器的入口点命令上自行设置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采用的清单)

您可以玩数字并查看它是否超时。 通常在我的工作站上计算 4000 位 pi 需要大约 23 秒,因此如果将其设置为 5 秒,它可能总是失败,如果将其设置为 120 秒,它将始终有效。

从我理解activeDeadlineSeconds部分的文档的方式activeDeadlineSeconds ,它指的是 Job 的活动时间,在此之后 Job 被视为Failed

官方文档声明:

无论创建了多少 Pod,activeDeadlineSeconds 都适用于作业的持续时间。 一旦 Job 达到 activeDeadlineSeconds,其所有正在运行的 Pod 都会终止,并且 Job 状态将变为类型:Failed with reason: DeadlineExceeded

https://kubernetes.io/docs/concepts/workloads/controllers/job/#job-termination-and-cleanup

您可以改为将 activeDeadlineSeconds 添加到定义为作业一部分的 pod 模板中的 pod spec。 这样,作业产生的 pod 会受到超时限制。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM