如何在 Kubernetes Flink 集群中实现 JobManager 高可用性?



Flink 官方文档为 Standalone 和 Yarn Flink 集群提供了 jobmanager 高可用性解决方案。但是,使用 Kubernetes Flink 集群应该怎么做才能实现高可用性呢?

从文档的 Kubernetes Setup 部分来看,我们似乎在部署到 Kubernetes 集群时只部署了一个 Jobmanager。那么如何为 Kubernetes Flink 集群实现 HA 呢?

官方文档说,作业管理器的高可用性是为了处理作业管理器崩溃的情况。因此,只需要一个作业管理器,但您希望处理它出现故障的情况。在 Kubernetes 上,如果它出现故障,那么 Kubernetes 应该检测到这一点并自动重新启动它。因此,您无需运行它的更多副本。

(文档明确指出,关于使用 yarn 表示 ha。它似乎没有为 Kubernetes 说明它,但重新启动失败的 Pod 是 Kubernetes 的标准行为。

默认情况下,任务管理器配置为在官方 k8s 资源中的 Kubernetes 上运行多个副本(请参阅资源中的"副本"条目(,但作业管理器不是。 (在掌舵图表中也是如此。所以我相信作业管理器不需要它 - 我建议使用单个作业管理器运行,除非您遇到特定问题。

我同意 Ryan 关于 Kubernetes 满足 HA 部署的大部分要求的回答。

使用Kubernetes,您可以使用基于文件的 HA 运行 Flink 作业集群,而不是使用 ZooKeeper 或其等效项。

您可以在此 github 存储库中找到如何正确设置它(带或不带 HA(的示例。

人们可能还会发现那些解释如何在 k8s 上正确部署 flink 作业集群并在没有 zookeeper 的情况下实现基于文件的高可用性的博客文章很有用。

(披露:我写了帖子并设置了回购(

最新更新