Kubernetes 中的 Apache Flink 部署 - 可用性和可扩展性



我使用 Kubernetes (Openshift( 来部署许多微服务。我希望利用它来部署我的一些 Flink 作业。Flink作业至关重要 - 有些作业是无状态的,可以处理每个数据(恰好处理一次(,有些作业是有状态的,可以在流中查找模式或对时间做出反应。没有作业可以容忍长时间的停机或频繁的关机(由于编程错误,Flink 退出的方式(。

我发现文档大多倾向于在 k8s 中部署 Flink 作业作为Job Cluster。但是,应该如何采取切实可行的方法呢?

  • 虽然 k8s 可以重启失败的 Flinkpod,但 Flink 如何恢复其状态进行恢复?
  • Flinkpod可以复制多个吗?当存在两个或多个 pod 时,JobManager&TaskManager如何工作?如果不是为什么?其他方法?

虽然 k8s 可以重启失败的 Flink pod,但 Flink 如何恢复其状态以进行恢复?

从 Flink 文档中,我们有:

检查点允许 Flink 恢复流中的状态和位置,为应用程序提供与无故障执行相同的语义。

这意味着您需要在 Pod 中挂载检查存储才能恢复状态。

Kubernetes中,您可以使用持久卷在 Pod 之间共享数据。

实际上有很多支持的插件,请参阅此处。

你可以拥有更多的TaskManager副本,但在 Kubernetes 中,你不需要为JobManager照顾 HA,因为你可以使用 Kubernetes自我修复部署。

要在 Kubernetes 中使用自我修复部署,您只需创建一个部署并将replica设置为1,如下所示:

apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
spec:
replicas: 1
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx
ports:
- name: http
containerPort: 80
imagePullPolicy: IfNotPresent

最后,你可以查看以下链接来帮助你在 Kubernetes 中设置 Flink:

running-apache-flink-on-kubernetes

Kubernetes 上的 Flink Job 集群

Flink Kubernetes 部署

使用 KUDO 在 Kubernetes 上运行 Flink

相关内容

  • 没有找到相关文章

最新更新