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

时间:2020-02-27 07:39:14

标签: kubernetes apache-flink

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

  • 将单个JobManager作为K8S吊舱,没有高可用性(HA)设置
  • 许多TaskManager,每个都是K8S吊舱

我们将在单独的存储库中开发工作,并在合并代码后将其部署到Flink集群。

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

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

  1. 一种可能的解决方案是:(重新)部署JobManager时,它将获取最新的Jobs jar并运行作业。这个解决方案看起来总体不错。但是,由于我们的作业是在单独的存储库中开发的,因此我们需要一个解决方案,让群集在作业发生更改时注意到最新的作业,即JobManager继续轮询最新的作业jar或Jobs仓库部署最新的作业jar。 / p>

  2. 我看到Flink HA功能可以存储检查点/保存点,但是不确定Flink HA是否可以处理此重新部署问题?

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

1 个答案:

答案 0 :(得分:1)

是的,Flink HA将解决您所关注的JobManager故障转移问题。新的作业管理器将从HA存储中获取有关(假设正在)运行哪些作业,其jar,检查点状态等信息。

还请注意,Flink 1.10包括一个Beta版本,其对Kubernetes会话集群的本机支持。参见docs