backoffLimit/maxCrashLoopBackOffRestarts 的使用

Posted

技术标签:

【中文标题】backoffLimit/maxCrashLoopBackOffRestarts 的使用【英文标题】:Usage of backoffLimit/maxCrashLoopBackOffRestarts 【发布时间】:2020-12-01 03:51:41 【问题描述】:

我正在从在 OPenshift 环境中运行的 SCDF 启动 Spring 批处理作业。我想在 Spring 批处理作业失败时将 POD 重新启动限制为 1(而不是默认限制 6)。 所以我将 backoffLimit 作为 1 添加到 scdf-server-config.yaml。但是当作业失败时,POD 仍然会重新启动 6 次。在 SCDF 中添加 backoffLimit 的正确属性是什么?甚至 maxCrashLoopBackOffRestarts 也不起作用。

以下是我尝试过的。

scdf-config.yaml

spring:
  cloud:
    dataflow:
      task:
        platform:
          kubernetes:
            accounts:
              k8sp:
                limits:
                    memory: 512Mi
                    cpu: 1
            entry-point-style: exec
            image-pull-policy: always
            backoffLimit: 1
            maxCrashLoopBackOffRestarts: 1

更新 1:

如下所述,我在 scdf 服务器的 server-config.yaml 中进行了适当的缩进,并尝试将 Kubernetes 部署程序属性添加到我的批处理 application.properties 中,

scdf-config.yaml

spring:
  cloud:
    dataflow:
      task:
        platform:
          kubernetes:
            accounts:
              default:
                limits:
                    memory: 1024Mi
                    cpu: 2
                entry-point-style: exec
                image-pull-policy: always
                backoffLimit: 0
                max-terminated-error-restarts: 0

BatchJob 项目应用程序.properties

spring.cloud.deployer.kubernetes.backoff-limit=0
spring.cloud.deployer.kubernetes.max-terminated-error-restarts=0
spring.cloud.deployer.kubernetes.max-crash-loop-back-off-restarts=0

当作业失败时,pod 会重新启动 6 次。缺少什么?

【问题讨论】:

【参考方案1】:

这些值没有正确缩进。它们需要是这样的:

spring:
  cloud:
    dataflow:
      task:
        platform:
          kubernetes:
            accounts:
              k8sp:
                limits:
                    memory: 512Mi
                    cpu: 1
                entry-point-style: exec
                image-pull-policy: always
                backoffLimit: 1
                maxCrashLoopBackOffRestarts: 1

【讨论】:

我现在尝试使用正确的缩进,但我仍然看到 Pod 在失败后立即启动,尽管 backoffLimit 和 maxCrashLoopBackOffRestarts 为 1。此配置应该放在 SCDF 服务器配置级别还是浴缸应用程序级别?

以上是关于backoffLimit/maxCrashLoopBackOffRestarts 的使用的主要内容,如果未能解决你的问题,请参考以下文章