我正在开发一个服务,它将调用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吊舱时,有没有办法检测任务启动是否失败?
暂无答案!
目前还没有任何答案,快来回答吧!