【问题标题】:Spring Cloud Data Flow Pod CleanupSpring Cloud 数据流 Pod 清理
【发布时间】:2021-03-01 10:57:43
【问题描述】:

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

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

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

【问题讨论】:

    标签: spring-cloud-dataflow spring-cloud-task spring-cloud-dataflow-ui


    【解决方案1】:

    方法 - 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
    

    Delete Task Execution

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

    CLEANUP:清理资源

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

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

    方法 - 2

    使用spring cloud dataflow shell。

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

    task execution cleanup --id <task-id>
    
    eg: task execution cleanup --id 1
    

    Cleanup task execution from spring-cloud-dataflow shell

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

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

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

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

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

    【讨论】:

    • 是否有一种全面的方法来定位所有已完成的 pod 而不是按 id?
    • 是的,我们可以使用 kubectl 工具删除。
    猜你喜欢
    • 2021-10-20
    • 1970-01-01
    • 2018-04-16
    • 2020-11-22
    • 2019-03-02
    • 1970-01-01
    • 1970-01-01
    • 2019-07-23
    • 2016-10-13
    相关资源
    最近更新 更多