0

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

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

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

4

1 回答 1

0

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

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

  1. 将 TaskManager 部署、配置映射、服务的所有者引用设置为 JobManager 作业。但是,您仍然需要在应用程序完成后手动删除 Kubernetes 作业。
  2. 尝试原生 Kubernetes 集成。Flink 将有一个嵌入式 Kubernetes 客户端,并且可以在应用程序完成时自动删除资源。
于 2021-02-22T09:57:34.087 回答