Политика отказа от откатов Kubernetes Pod
Из документации k8s :
Существуют ситуации, когда вы хотите отказать в заданиипосле некоторого количества повторных попыток из-за логической ошибки в конфигурации и т. д. Для этого установите .spec.backoffLimit, чтобы указать количество повторных попыток, прежде чем рассматривать задание как неудачное. Предел отсрочки по умолчанию установлен равным 6.
Поток данных Spring Cloud:
Когда задание не выполнено, мы на самом деле не хотимповторите попытку. Другими словами, мы хотим установить backoffLimit: 1
в нашем файле конфигурации Sprint Cloud Dataflow.
Мы попытались установить его следующим образом:
deployer.kubernetes.spec.backoffLimit: 1
или даже
deployer.kubernetes.backoffLimit: 1
Но и то, и другое не передается в наш кластер Kubernetes.
После 6 попыток мы видим следующее сообщение:
статус: условия: - lastProbeTime: '2019-10-22T17: 45: 46Z 'lastTransitionTime:' 2019-10-22T17: 45: 46Z 'сообщение: задание достигло указанного предела отката по причине: BackoffLimitExceeded статус:' True 'тип: Сбой: 6 startTime:' 2019-10-22T17: 33: 01Z '
На самом деле мы хотим быстро потерпеть неудачу (максимум 1 или 2 попытки)
Вопрос: Как правильно установить это свойство, чтобы вся задачасработает SCDF, максимум один раз выйдет из строя в Kubernetes?
Обновление (23.10.2019)
Мы также опробовали свойство:
deployer:
kubernetes:
maxCrashLoopBackOffRestarts: Never # No retry for failed tasks
Но задания по-прежнему не работают 6 раз вместо 1.
Обновление (26.10.2019)
FoРади полноты:
- Я планирую задачу в SCDF
- Задача запускается в Kubernetes (точнее Openshift)
- Когда я проверяю конфигурацию наПлатформа K8s, я вижу, что она по-прежнему имеет backoffLimit 6 вместо 1:
Фрагмент конфигурации Yalm, взятый из запущенного модуля:
spec:
backoffLimit: 6
completions: 1
parallelism: 1
В официальном документация , там написано:
`maxCrashLoopBackOffRestarts` - Maximum allowed restarts for app that is in a CrashLoopBackOff. Values are `Always`, `IfNotPresent`, `Never`
Но maxCrashLoopBackOffRestarts
занимает целое число. Поэтому я думаю, что документация не точная.
Затем модуль перезапускается 6 раз.
Я попытался установить эти свойства безуспешно:
spring.cloud.dataflow.task.platform.kubernetes.accounts.defaults.maxCrashLoopBackOffRestarts: 0
spring.cloud.deployer.kubernetes.maxCrashLoopBackOffRestarts: 0
spring.cloud.scheduler.kubernetes.maxCrashLoopBackOffRestarts: 0
Ни одно из нихсработало.
Есть идеи?