簡體   English   中英

在多個kubernetes pod / instances中處理Redis KUE作業

[英]Process Redis KUE jobs within multiple kubernetes pods/instances

我正在使用Sails.js作為API,我從Google Cloud kubernetes集群中的Dockerfile部署,並使用3-5個pod來擴展工作負載。 API提供端點來上傳單個圖像文件和更大的zip文件,我直接在當前的API pod / instance上提取這些文件。

兩者,單個圖像文件和提取的存檔內容(100-1000個文件,總共15-85mb的內容),我必須上傳到各種存儲桶。 這就是redis kue發揮作用的地方。 為了確保API不會長時間阻止上傳請求,我創建了延遲kue作業,將所有上傳的文件和文件夾移動到存儲桶或鏈式作業,並首先在ImageMagick的幫助下創建縮略圖。

所有這些都需要一些時間,具體取決於群集的當前工作負載,有時更多,有時更少。

所有這一切都適用於單個實例但在集群內,這是一個不同的故事。 由於API的kubernetes實例可以從請求更改為請求,因此上載可以落在實例A上 ,但實例B正在處理和處理文件的作業(工作者以及API本身正在運行相同的實例!)可能沒有可用的上傳導致失敗的工作。

Google需要一段時間才能使廣告聯盟保持同步,並將上傳內容傳播到所有其他廣告連播。

我試過的是以下內容:

由於目前的窗格的名稱通過環境變量HOSTNAME是可用的,我存儲的主機名和所有KUE就業和工人中檢查是否從作業的主機名和當前環境的主機名匹配,只允許處理工作如果兩個HOSTNAME匹配。

上傳需要盡快提供; 為什么我不能添加幾分鍾的工作延遲,並希望在工作處理時,Google已經同步了它的pod。

掛起的作業與HOSTNAME不匹配,我會回到隊列並為其添加延遲。

我想要的是一個隊列,它不需要處理主機名和條件檢查來成功處理像我這樣的集群中的作業。

對於這個“ 可能沒有可用的上傳導致失敗的工作 ”你可以考慮使用“ 持久卷 ”。

在這種情況下,您的工作可以獨立工作,尋找提取的存檔內容到共享存儲中。

希望這有幫助。 請與您的調查結果分享。

暫無
暫無

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

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