Kubernetes 作业退避限制等待时间

Kubernetes Job backoff limit wait time

我正在尝试创建一个 backofflimit 值设置为 4 的 Kubernetes 作业。所以我想知道如果 Job 中有一个 Pod 失败了,我想等待 n 分钟或 n 秒才能创建第二个 pod。有什么办法可以做到吗?

apiVersion: batch/v1
kind: Job
metadata:
  name: pi-test
spec:
  template:
    spec:
      containers:
      - name: pi
        image: bitnami/git:latest
        command: ["/bin/bash",  "-c", "gits clone ls -b master"]
      restartPolicy: OnFailure
  backoffLimit: 4
  activeDeadlineSeconds: 120

您可以使用 liveness probe

来实现

示例 Yaml #您可以根据需要进行更改。

apiVersion: batch/v1
kind: Job
metadata:
  name: pi-test
spec:
  template:
    spec:
      containers:
        - name: pi
          image: bitnami/git:latest
          args:
            - /bin/sh
            - -c
            - touch /tmp/healthy; sleep 30; rm -rf /tmp/healthy; sleep 600
          livenessProbe: # Check if healthy
            exec:
              command:
                - cat
                - /tmp/healthy
            initialDelaySeconds: 5
            periodSeconds: 5
          command: ["/bin/bash",  "-c", "gits clone ls -b master"]
      restartPolicy: OnFailure
  backoffLimit: 4
  activeDeadlineSeconds: 120

initialDelaySeconds的注意事项:如果不设置初始延迟,prober一启动就会开始探测容器,这通常会导致探测失败,因为应用程序尚未准备好开始接收请求。如果失败次数超过失败阈值,容器将在它甚至能够开始正确响应请求之前重新启动。

Pod 退避失败策略注意事项: 与作业关联的失败 Pods 由作业控制器以指数 back-off 延迟(10 秒, 20 秒、40 秒...)以 6 分钟为上限。 Ref: