簡體   English   中英

Kubernetes 中的 Flink 會話集群和作業提交

[英]Flink session cluster and jobs submission in Kubernetes

我們的團隊在我們的 K8S 集群中建立了一個 Flink Session Cluster。 我們選擇了 Flink Session Cluster 而不是 Job Cluster,因為我們有許多不同的 Flink Job,所以我們希望將 Flink 的開發和部署與我們的作業解耦。 我們的 Flink 設置包含:

  • 單個 JobManager 作為 K8S pod,沒有高可用性 (HA) 設置
  • 多個 TaskManager,每個都作為一個 K8S pod

我們在單獨的存儲庫中開發我們的作業,並在代碼合並時部署到 Flink 集群。

現在,我們注意到JobManager 作為K8S 中的一個pod 可以隨時被K8S 重新部署。 因此,一旦重新部署,它就會失去所有工作。 為了解決這個問題,我們開發了一個腳本來持續監控 Flink 中的作業,如果作業沒有運行,腳本會重新提交作業到集群。 由於腳本可能需要一些時間來發現和重新提交作業,因此經常會出現服務中斷的情況,我們正在考慮是否可以改進這種情況。

到目前為止,我們有一些想法或問題:

  1. 一種可能的解決方案是:當(重新)部署 JobManager 時,它將獲取最新的 Jobs jar 並運行作業。 該解決方案總體上看起來不錯。 盡管如此,由於我們的作業是在單獨的 repo 中開發的,我們需要一個解決方案讓集群在作業發生變化時注意到最新的作業,要么 JobManager 不斷輪詢最新的作業 jar,要么作業 repo 部署最新的作業 jar。

  2. 我看到 Flink HA 功能可以存儲檢查點/保存點,但不確定 Flink HA 是否已經可以處理這個重新部署問題?

有沒有人對此有任何意見或建議? 謝謝!

是的,Flink HA 會解決你關心的 JobManager 故障轉移問題。 新的作業管理器將從 HA 存儲中獲取有關正在(應該)運行的作業、它們的 jar、檢查點狀態等的信息。

另請注意,Flink 1.10 包含對 Kubernetes 會話集群的本機支持的測試版。 請參閱文檔

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM