scdf:pod启动失败时的错误处理

pbgvytdp  于 2021-06-27  发布在  Java
关注(0)|答案(0)|浏览(204)

我正在开发一个服务,它将调用springclouddataflow(scdf),为spring批处理作业派生一个新的k8spod。

Map<String, String> properties = Map.of("testApp.cpu", cpu, "testApp.memory", memory);
LOGGER.info("Create task '{}' with definition '{}'", taskName, taskDefinition);
taskOperations.create(taskName, taskDefinition);

LOGGER.info("Launching task '{}' with properties {} and arguments '{}'", taskName, properties, args);
return taskOperations.launch(taskName, properties, args);

一切正常。问题是,每当我们拉一个不存在的映像时(例如:由于某些连接问题),pod无法启动,我们最终会遇到挂起的任务(没有创建任何批处理作业)
例如,表中有任务 task_execution (scdf表)结束时间为空

但是没有相关的工作 batch_job_execution table。

一开始看起来不错,因为没有创建pod,所以我们不消耗任何资源。但随着“待办工作”的数量达到20个,我们有一个著名的错误:

Cannot launch task testApp. The maximum concurrent task executions is at its limit [20]

我试图找到一种方法来检测pod派生失败(因此我们应该将任务标记为错误),但没有效果。
当任务启动一个新的k8s吊舱时,有没有办法检测任务启动是否失败?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题