您没有明确设置 kubernetes 作业中的默认 .spec.activeDeadlineSeconds 是什么

xsq*_*ian 4 kubernetes

在 Kubernetes 作业中,有一个 .spec.activeDeadlineSeconds 规范。如果不明确设置,默认值是多少?600秒?

这是 k8s 文档中的示例

apiVersion: batch/v1
kind: Job
metadata:
  name: pi-with-timeout
spec:
  backoffLimit: 5
  activeDeadlineSeconds: 100
  template:
    spec:
      containers:
      - name: pi
        image: perl
        command: ["perl",  "-Mbignum=bpi", "-wle", "print bpi(2000)"]
      restartPolicy: Never
Run Code Online (Sandbox Code Playgroud)

假设我删除了该行

activeDeadlineSeconds: 100
Run Code Online (Sandbox Code Playgroud)

Jam*_*ang 8

默认情况下,作业将不间断地运行。如果您不设置activeDeadlineSeconds,该作业将没有有效的截止日期限制。这意味着activeDeadlineSeconds没有默认值。

顺便说一句,终止作业的方法有多种。(当然,当作业完成时,不会再创建更多的 Pod。)

  • Pod 退避失败策略( .spec,.backofflimit) 您可以设置.spec.backoffLimit指定在将作业视为失败之前重试的次数。退避限制默认设置为 6。作业控制器将重新创建与作业关联的失败 Pod,并以指数退避延迟(10 秒、20 秒、40 秒...)上限为 6 分钟。当作业的 Pod 被删除或成功且该作业的任何其他 Pod 在此期间失败时,回退计数将被重置。

  • 设置活动截止时间( .spec.activeDeadlineSeconds) activeDeadlineSeconds 适用于作业的持续时间,无论创建了多少个 Pod。一旦作业达到 activeDeadlineSeconds,其所有正在运行的 Pod 都会终止,并且作业状态将变为类型:失败,原因:DeadlineExceeded。

请注意,作业的 .spec.activeDeadlineSeconds 优先于其 .spec.backoffLimit。因此,重试一个或多个失败 Pod 的作业一旦达到 activeDeadlineSeconds 指定的时间限制,即使尚未达到 backoffLimit,也不会部署其他 Pod。