簡體   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