1

我们在日志中反复看到资源配额限制问题,并且任务作业在 Kubernetes 上运行的 SCDF 上失败。问题是,即使完成后,仍有许多处于“运行”状态的 pod。我了解,SCDF 不会删除 pod,清理是开发人员的责任。

即使我从 SCDF 仪表板 UI 运行任务执行清理,它也只会清理执行日志和任务表单 UI,但该任务创建的 pod 仍然存在。这是预期的吗?任务执行清理不应该也删除 pod 吗?我们正在使用 Spring-Cloud-Dataflow-Server 2.4.2 版本。

有没有办法在执行完成后立即清理 pod?这里有什么最佳实践吗?

4

1 回答 1

2

方法 - 1

您可以使用 spring-cloud-dataflow 提供的 restful api 来清理任务执行。

请求结构

DELETE /tasks/executions/{ids}?action=CLEANUP,REMOVE_DATA HTTP/1.1
Host: localhost:9393

触发 DELETE 请求。

http://<stream-url>/tasks/executions/<task-ids-seperated-by-coma>?action=CLEANUP,REMOVE_DATA

eg: http://localhost:9393/tasks/executions/1,2?action=CLEANUP,REMOVE_DATA

删除任务执行

注意:上面的 api 将清理用于部署任务的资源,并从底层持久性存储中删除与任务执行相关的数据。

CLEANUP:清理资源

REMOVE_DATA:从持久存储中删除数据。

您可以同时传递两个操作或单个操作,具体取决于您的用例。

方法 - 2

使用弹簧云数据流外壳。

进入 spring-cloud-dataflow shell 并执行以下命令。

task execution cleanup --id <task-id>

eg: task execution cleanup --id 1

从 spring-cloud-dataflow shell 清理任务执行

其他选项(仅适用于 kubernetes 平台)

如果您不想删除所有已完成的 pod,则可以使用 kubectl 工具删除。

kubectl delete pod --field-selector=status.phase==Succeeded -l role=spring-app -n <namespace-where-tasks-launched>

如果您不想删除所有带有错误状态的 pod,请执行以下命令

kubectl delete pod --field-selector=status.phase==Failed -l role=spring-app -n <namespace-where-tasks-launched>
于 2021-02-08T15:32:50.980 回答