Планирование задачи под Kubernetes терпит неудачу - PullRequest
0 голосов
/ 25 октября 2019

Мы развертываем Spring Cloud Flow Data v2.2.1.RELEASE в Кубернетесе. Все или почти кажется, что работает, но планирование не является. На самом деле, даже при запуске задач с помощью ручного запуска с использованием пользовательского интерфейса (или API) мы видим журнал ошибок. Тот же журнал создается при попытке составить расписание, но на этот раз создание расписания завершается неудачно. Вот выдержка из стека:

java.lang.IllegalArgumentException: taskDefinitionName must not be null or empty
    at org.springframework.util.Assert.hasText(Assert.java:284)
    at org.springframework.cloud.dataflow.rest.resource.ScheduleInfoResource.<init>(ScheduleInfoResource.java:58)
    at org.springframework.cloud.dataflow.server.controller.TaskSchedulerController$Assembler.instantiateResource(TaskSchedulerController.java:174)
    at org.springframework.cloud.dataflow.server.controller.TaskSchedulerController$Assembler.instantiateResource(TaskSchedulerController.java:160)
    at org.springframework.hateoas.mvc.ResourceAssemblerSupport.createResourceWithId(ResourceAssemblerSupport.java:89)
    at org.springframework.hateoas.mvc.ResourceAssemblerSupport.createResourceWithId(ResourceAssemblerSupport.java:81)
    at org.springframework.cloud.dataflow.server.controller.TaskSchedulerController$Assembler.toResource(TaskSchedulerController.java:168)
    at org.springframework.cloud.dataflow.server.controller.TaskSchedulerController$Assembler.toResource(TaskSchedulerController.java:160)
    at org.springframework.data.web.PagedResourcesAssembler.createResource(PagedResourcesAssembler.java:208)
    at org.springframework.data.web.PagedResourcesAssembler.toResource(PagedResourcesAssembler.java:120)
    at org.springframework.cloud.dataflow.server.controller.TaskSchedulerController.list(TaskSchedulerController.java:85)
    at sun.reflect.GeneratedMethodAccessor180.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)

...,

Мы посмотрели содержимое таблицы, у задачи есть имя.

Любая идея

1 Ответ

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

Я наконец-то нашел источник ошибки, отладив живой поток данных. Проблема возникает, когда CronJob, которые не созданы потоком данных, присутствуют в пространстве имен, что, по моей оценке, является проблемой. Планировщик запускает процесс, который зацикливается на ресурсах Kubernetes CronJob и пытается их обработать.

Поток данных, безусловно, должен выполнять свою обработку на тех, кто использует метки, как и все собственные инструменты Kubernetes, для выбора только тех элементов, которые его касаются. Любой процесс может использовать CronJob.

Так что Pivotal - люди, работающие с потоками данных, вероятно, было бы неплохо улучшить эту часть и таким образом предотвратить подобные "невидимые" проблемы. Я говорю «невидимый», потому что единственной ошибкой, которую мы получаем, является проверка элемента «Расписание», в которой я жалуюсь на то, что имя пустое, и это потому, что CronJob никоим образом не был связан с задачей SCDF.

Надеждаэто может помочь кому-то в будущем.

...