繁体   English   中英

EKS 上的 Flink 集群

[英]Flink cluster on EKS

我是 Flink 和 kubernetes 的新手。 我计划创建一个 flink 流作业,将数据从 FileSystem 流式传输到 Kafka。

有工作正常的 flink 作业 jar(在本地测试)。 现在我正在尝试在 kubernetes 中托管这项工作,并希望在 AWS 中使用 EKS。

我已经阅读了关于如何设置 flink 集群的官方 flink 文档。 https://ci.apache.org/projects/flink/flink-docs-release-1.5/ops/deployment/kubernetes.html

我尝试使用 minikube 在本地设置它并启动会话集群并提交工作正常的作业。

我的问题:1)在作业集群和会话集群这两个选项中,由于作业是流式作业并且应该保持监视文件系统,并且当任何新文件进来时应该将其流式传输到目的地,在这种情况下我可以使用作业集群吗? 根据文档,作业集群是执行作业并在完成后终止的东西,如果作业在文件夹上有监视器,它会完成吗?

2)我有一个构建 flink jar 的 Maven 项目,想知道在生产中使用这个 jar 旋转会话/作业集群的理想方法吗? 什么是正常的 CI CD 流程? 我应该首先构建一个会话集群并在需要时提交作业吗? 或使用构建的 jar 启动作业集群?

首先,您提供的链接适用于 Flink 1.5。 如果您是新手,我建议您使用 Flink 1.9 或即将推出的 1.10。

对于您的问题:

1) 带有文件监视器的作业永远不会终止。 它无法知道何时没有更多文件到达,因此您必须手动取消它。 作业集群对此很好。

2)对此没有明确的答案,也不是 Flink 特有的。 每个人都有不同的解决方案,有不同的缺点。

我的目标是采用半自动方法,其中一切都是自动的,但您需要明确按下部署按钮(而不仅仅是 git push)。 通常,这些 CI/CD 管道首先部署在测试集群上,并在允许部署到生产之前进行冒烟测试。

如果你完全新鲜,你可以检查AWS codedeploy 但是,我在 Gitlab 和 AWS runner 方面取得了很好的经验。

正常的过程是这样的:

  • 建造
  • 构建机器上的集成/e2e 测试(dockerized)
  • 部署在测试集群/预生产集群上
  • 运行冒烟测试
  • 在产品上部署

我还看到了在 prod 上快速运行的过程,并将时间投入到更好的监控和快速回滚上,而不是 preprod 集群和冒烟测试。 这对于业务不重要的流程以及再处理的成本通常是可行的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM