当前位置: 首页 > 知识库问答 >
问题:

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

许庆
2023-03-14

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

  • 单个JobManager作为K8S吊舱,无高可用性(HA)设置

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

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

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

>

  • 一种可能的解决方案是:当JobManager(重新)部署时,它将获取最新的作业jar并运行作业。这个解决方案总体上看起来不错。尽管如此,由于我们的作业是在单独的存储库中开发的,因此我们需要一个集群解决方案来在作业发生更改时通知最新的作业,或者JobManager继续轮询最新的作业jar,或者作业存储库部署最新的作业jar。

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

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

  • 共有1个答案

    巢安澜
    2023-03-14

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

    另请注意,Flink 1.10包含对库伯内特斯会话集群的本机支持的beta版本。请参阅文档。

     类似资料:
    • 我正在研究Flink 1.9.1的docker/k8s部署可能性。 我看完了[1][2][3][4]。 目前,我们确实认为,我们将尝试采用工作集群方法,尽管我们想知道社区的这一趋势是什么?我们不希望每个Flink集群部署多个作业。 不管怎样,我想知道一些事情: > 在这两种情况下,Flink的UI都显示每个任务管理器有4个CPU。 如果使用作业群集,如何重新提交作业。我指的是这个用例。你可能会说我

    • 我们目前正在kubernetes上运行flink,作为使用这个helm模板的作业集群:https://github.com/docker-flink/examples/tree/master/helm/flink(带有一些添加的配置)。 如果我想关闭集群,重新部署新映像(由于应用程序代码更新)并重新启动,我将如何从保存点进行恢复? jobManager命令严格设置在standalone-job.s

    • 目前,我正在尝试在Google云上创建一个Kubernetes集群,其中包含两个负载平衡器:一个用于后端(在Spring boot中),另一个用于前端(在Angular中),其中每个服务(负载平衡器)与两个副本(POD)通信。为了实现这一点,我创建了以下入口: 上面提到的入口可以使前端应用程序与后端应用程序提供的REST API进行通信。但是,我必须创建粘性会话,以便每个用户都与同一个POD进行通

    • 我正在尝试在kubernetes上部署高可用的flink集群。在下面的示例中,工作节点被复制,但我们只有一个主pod。 https://github.com/apache/flink-statefun 据我所知,有两种方法可以让job manager成为HA。 https://ci.apache.org/projects/flink/flink-docs-stable/ops/jobmanager

    • 我正在尝试将使用SSIS包创建的数百个feed文件ETL作业替换为apache flink作业(并将kuberentes作为底层infra)的可行性。我在一些文章中看到的一条建议是“为一种工作使用一个flink集群”。 由于我每天都有少量的每种工作类型的工作,那么这意味着对我来说最好的方法是在执行工作时动态创建flinkcluster并销毁它以释放资源,这是正确的方法吗?我正在建立flinkclu

    • 在ResourceManager节点上启动flink作业(查找配置文件) 从ResourceManager下载配置文件到本地。 我想,这两种方式都不太好。如何将作业提交到远程纱线集群。有没有合适的办法?