我对Flink和Kubernetes还不熟悉。我计划创建一个flink流作业,将数据从文件系统流到kafka。
有工作正常的flink工作罐(在当地测试)。现在我想在kubernetes主持这项工作,并希望在aws中使用eks。
我已经阅读了有关如何设置flink集群的官方flink文档。https://ci.apache.org/projects/flink/flink-docs-release-1.5/ops/deployment/kubernetes.html
我试着用minikube在本地建立它,并打开sessioncluster并提交了工作正常的作业。
我的问题是:1)在job cluster和session cluster这两个选项中,由于作业是流式作业,因此应该保持对文件系统的监视,当任何新文件传入时,它应该将其流式传输到目标,在这种情况下,我可以使用job cluster吗?根据文档,作业集群是执行作业并在作业完成后终止的东西,如果作业在文件夹上有监视器,它是否完成过?
2) 我有一个maven项目构建了flink jar,想知道在生产中使用这个jar来旋转会话/作业集群的理想方法吗?什么是正常的ci-cd过程?我应该先建立一个会话集群,然后在需要的时候提交作业吗?或者用jar构建工作集群?
1条答案
按热度按时间tjjdgumg1#
首先,您提供的链接是针对Flink1.5的。如果你是从新开始的,我建议你使用Flink1.9或者即将推出的1.10。
对于您的问题:
1) 具有文件监视器的作业从不终止。它无法知道何时不再有文件到达,因此您必须手动取消它。工作集群就可以了。
2) 这个问题没有明确的答案,也不是针对Flink的。每个人都有不同的解决方案,有不同的缺点。
我的目标是一种半自动的方法,其中所有内容都是自动的,但您需要显式地按下deploy按钮(而不仅仅是git按钮)。通常,这些ci/cd管道首先部署在测试集群上,并在允许部署到生产集群之前进行冒烟测试。
如果你是完全新鲜的,你可以检查aws代码部署。不过,我在gitlab和awsrunner方面有很好的经验。
正常过程如下:
建造
构建机上的集成/e2e测试(对接)
部署在测试集群/预部署集群上
运行烟雾测试
在产品上部署
我还看到过一些进程,它们在prod上运行得很快,并将时间花在更好的监视和快速回滚上,而不是预先进行集群和冒烟测试。这通常是可行的业务不关键的过程和多么昂贵的再加工。