Облачный поток данных Sprint с Kubernetes: BackoffLimit - PullRequest
0 голосов
/ 22 октября 2019

Политика отказа от откатов 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Ради полноты:

  1. Я планирую задачу в SCDF
  2. Задача запускается в Kubernetes (точнее Openshift)
  3. Когда я проверяю конфигурацию наПлатформа 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

Ни одно из нихсработало.

Есть идеи?

Ответы [ 2 ]

0 голосов
/ 01 ноября 2019

Благодаря ilayaperumalg гораздо понятнее, почему он не работает:

Похоже, свойство maxCrashLoopBackOffRestarts применимо для определения состояния экземпляра приложения времени выполнения, а свойство, которое вы называете backoffLimit, применимо. в JobSpec, который в настоящее время не поддерживается. Мы можем добавить это как функцию для поддержки вашего дела.

Github Link

0 голосов
/ 22 октября 2019

Чтобы переопределить лимит перезапуска по умолчанию, вам нужно будет использовать свойство maxCrashLoopBackOffRestarts deployer в SCDF. Все поддерживаемые свойства описаны в справочнике . guide .

Вы можете настроить переопределение этого свойства "глобально" в SCDF или индивидуально переопределить его на каждом уровне развертывания потока / задачи. Подробнее здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...