我们的团队在我们的K8S集群中建立了Flink会话集群。我们选择Flink会话群集而不是作业群集,因为我们有许多不同的Flink作业,因此我们希望将Flink的开发和部署与我们的作业分离。我们的Flink设置包含:
我们将在单独的存储库中开发工作,并在合并代码后将其部署到Flink集群。
现在,我们注意到JobManager作为K8S中的pod可以由K8S随时重新部署。因此,一旦重新部署,它将失去所有工作。为了解决此问题,我们开发了一个脚本,该脚本可以持续监视Flink中的作业,如果作业未运行,则该脚本会将作业重新提交给群集。由于脚本可能需要一些时间来发现并重新提交作业,因此经常会出现一个很小的服务中断,我们正在考虑是否可以对此进行改进。
到目前为止,我们有一些想法或问题:
一种可能的解决方案是:(重新)部署JobManager时,它将获取最新的Jobs jar并运行作业。这个解决方案看起来总体不错。但是,由于我们的作业是在单独的存储库中开发的,因此我们需要一个解决方案,让群集在作业发生更改时注意到最新的作业,即JobManager继续轮询最新的作业jar或Jobs仓库部署最新的作业jar。 / p>
我看到Flink HA功能可以存储检查点/保存点,但是不确定Flink HA是否可以处理此重新部署问题?
有人对此有任何评论或建议吗?谢谢!
答案 0 :(得分:1)
是的,Flink HA将解决您所关注的JobManager故障转移问题。新的作业管理器将从HA存储中获取有关(假设正在)运行哪些作业,其jar,检查点状态等信息。
还请注意,Flink 1.10包括一个Beta版本,其对Kubernetes会话集群的本机支持。参见docs。