【问题标题】:Best practice to clean up Flink application cluster on Kubernetes when the application is completed应用完成后清理 Kubernetes 上的 Flink 应用集群的最佳实践
【发布时间】:2021-02-20 01:26:39
【问题描述】:

我们在 Kubernetes 上以 Application 模式运行 Flink 作业,问题是当作业完成/停止时,作业管理器容器将退出,但 1. 任务管理器的部署 2. 作业管理器服务 3. configMap 仍然是除非我们运行 kubectl delete 来清理它。

如果我们手动停止作业,这没什么大不了的,但如果我们的 Flink 作业是一个稍后会完成的批处理作业,这意味着我们需要一个外部服务来持续监控作业管理器容器并清理其余部分搞定了资源,不太实用。

我想知道这里的最佳做法是什么?我们是否支持在 Kubernetes 上运行 Flink 批处理作业?如果是,那么 Flink 作业本身应该有一种方法可以在完成时清理所有内容,对吗?

【问题讨论】:

    标签: kubernetes apache-flink flink-batch


    【解决方案1】:

    我假设您在 Kubernetes 上运行 standalone Flink 应用程序。在这种模式下,Flink 不知道 Kubernetes 集群。所以用户必须利用一些外部工具(例如 kubectl、k8s-operator)来管理 Flink 集群的生命周期。这意味着您需要手动删除 TaskManager 部署、配置映射、服务。

    我认为这种情况可以通过以下两种方式得到改善。

    1. 将TaskManager 部署、配置映射、服务的owner reference 设置为JobManager 作业。但是,您仍然需要在应用完成后手动删除 Kubernetes 作业。
    2. 试试native Kubernetes integration。 Flink 将有一个嵌入式 Kubernetes 客户端,并且可以在应用程序完成时自动删除资源。

    【讨论】:

    • 感谢您的回答! 1.是否意味着我们仍然需要一个客户端来持续监控作业状态并在作业完成后删除作业?在这种情况下 ttlSecondsAfterFinished 会帮助自动清理吗?对于 2. 我们当前的框架不支持原生 Kubernetes 集成,因此短期内它可能不是我们的解决方案。
    猜你喜欢
    • 2016-09-08
    • 2020-04-16
    • 1970-01-01
    • 1970-01-01
    • 2019-02-01
    • 1970-01-01
    • 2020-01-15
    • 2020-07-17
    • 1970-01-01
    相关资源
    最近更新 更多