backoffLimit / maxCrashLoopBackOffRestarts的用法

问题描述

我正在从在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项目application.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

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

解决方法

这些值未正确缩进。他们需要是这样的:

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