Kubernetes中的Flink会话集群和作业提交

Kubernetes中的Flink会话集群和作业提交,kubernetes,apache-flink,Kubernetes,Apache Flink,我们的团队在K8S集群中建立了一个Flink会话集群。我们选择Flink会话集群而不是作业集群,因为我们有许多不同的Flink作业,所以我们希望将Flink的开发和部署与我们的作业分离。我们的Flink设置包含: 单个JobManager作为K8S吊舱,无高可用性(HA)设置 多个TaskManager,每个都作为一个K8S吊舱 我们在一个单独的存储库中开发工作,并在代码合并时部署到Flink集群 现在,我们注意到在K8S中作为pod的JobManager可以随时被K8S重新部署。因此,一旦

我们的团队在K8S集群中建立了一个Flink会话集群。我们选择Flink会话集群而不是作业集群,因为我们有许多不同的Flink作业,所以我们希望将Flink的开发和部署与我们的作业分离。我们的Flink设置包含:

  • 单个JobManager作为K8S吊舱,无高可用性(HA)设置
  • 多个TaskManager,每个都作为一个K8S吊舱
我们在一个单独的存储库中开发工作,并在代码合并时部署到Flink集群

现在,我们注意到在K8S中作为pod的JobManager可以随时被K8S重新部署。因此,一旦重新部署,它就会失去所有工作。为了解决这个问题,我们开发了一个脚本,可以在Flink中持续监视作业,如果作业没有运行,该脚本会将作业重新提交到集群。由于脚本可能需要一些时间来发现并重新提交作业,因此经常会出现一个小的服务中断,我们正在考虑是否可以对此进行改进

到目前为止,我们有一些想法或问题:

  • 一种可能的解决方案是:在(重新)部署JobManager时,它将获取最新的作业并运行作业。这个解决方案总体上看起来不错。尽管如此,由于我们的作业是在一个单独的repo中开发的,因此我们需要一个解决方案,让集群在作业发生变化时注意到最新的作业,JobManager不断轮询最新的作业jar,或者jobs repo部署最新的作业jar

  • 我看到Flink HA特性可以存储检查点/保存点,但不确定Flink HA是否已经可以处理这个重新部署问题


  • 有人对此有任何评论或建议吗?谢谢

    是的,Flink HA将解决您关心的JobManager故障切换问题。新的作业管理器将从HA存储中获取关于正在(应该)运行的作业、它们的JAR、检查点状态等的信息

    还请注意,Flink 1.10包含了对Kubernetes会话集群的本机支持的测试版。看