基於Kubernetes系統對接工作流引擎的作業調度方法和裝置與流程
2023-05-30 09:56:16
本發明涉及數據處理技術領域,特別是指一種基於kubernetes系統對接工作流引擎的作業調度方法和裝置。
背景技術:
工作流引擎是一個管理業務流程或者數據分析流程作業的應用,它管理和監控作業執行的狀態。可以按照作業流程定義將作業拆分成若干個有先後執行順序的可執行單元,分派可執行單元給相應的計算資源執行,並監控可執行單元的執行結果,直到整個作業執行完成或失敗退出。
在工作流引擎應用中,會大量存在可執行單元並發執行的場景,比如多個作業同時運行或者單個作業中並發執行可執行單元。相對於單機執行,如果將可執行單元的執行調度到一個分布式計算集群上一方面可以大大提高作業執行效率,另一方面可以有效管理資源使用效率,所以很多工作流引擎應用都需要開發插件來和後臺分布式計算集群集成。並且,由於容器(pod)技術的大力發展,將可執行單元封裝成單獨容器並分配相應的資源加以執行也逐漸成為趨勢。kubernetes作為一個容器集群管理系統也成為工作流引擎與之對接的常見分布式計算集群。但是kubernetes原生系統裡針對這種場景缺乏一個好的實現,使得工作流引擎無法與kubernetes協同工作完成可執行單元的並發執行工作,降低了作業執行效率和資源使用效率。
技術實現要素:
有鑑於此,本發明的目的在於提出一種能夠有效提升作業執行效率和資源使用效率的基於kubernetes系統對接工作流引擎的作業調度方法和裝置。
基於上述目的本發明提供的一種基於kubernetes系統對接工作流引擎的作業調度方法,其中,工作流引擎將作業拆分成若干個具有執行順序的可執行單元;所述方法包括:
接收工作流引擎提交的可執行單元;
根據所述可執行單元的參數,生成用於供kubernetes系統創建容器的配置文件;
將所述配置文件發送至kubernetes系統,使kubernetes系統根據所述配置文件創建容器並執行所述可執行單元;
接收kubernetes系統返回的關於所述可執行單元的第一結果信息;
對所述第一結果信息進行轉譯,生成能夠被工作流引擎識別的第二結果信息,並將所述第二結果信息發送至工作流引擎;
若所述第二結果信息為執行成功,則接收工作流引擎按所述執行順序提交的下一個可執行單元。
在一些實施方式中,所述方法還包括:
若所述第二結果信息為執行失敗,則接收工作流引擎提交的容器刪除請求,並將所述容器刪除請求發送至kubernetes系統;
接收kubernetes系統返回的容器刪除信息,並將所述容器刪除信息發送至工作流引擎,使工作流引擎中斷所述作業。
在一些實施方式中,所述則接收工作流引擎提交的容器刪除請求,並將所述容器刪除請求發送至kubernetes系統的步驟之前,還包括:
接收工作流引擎提交的錯誤日誌查詢請求,並將所述錯誤日誌查詢請求發送至kubernetes系統;
接收kubernetes系統返回的容器執行錯誤日誌,並將所述容器執行錯誤日誌發送至工作流引擎。
在一些實施方式中,所述將所述配置文件發送至kubernetes系統,使kubernetes系統根據所述配置文件創建容器並執行所述可執行單元之後,還包括:
向kubernetes系統發出監聽請求,用以在所述可執行單元的執行狀態發生變化時,獲取kubernetes系統返回的執行狀態信息;
將符合預設條件的所述執行狀態信息作為所述第一結果信息。
在一些實施方式中,所述將所述配置文件發送至kubernetes系統,使kubernetes系統根據所述配置文件創建容器並執行所述可執行單元之後,還包括:
接收工作流引擎發送的查詢指令;
向kubernetes系統獲取所述可執行單元的執行狀態信息,並將所述執行狀態信息發送至工作流引擎。
另一方面,本發明還提供了一種基於kubernetes系統對接工作流引擎的作業調度裝置,包括:
第一接收模塊,用於接收工作流引擎提交的可執行單元;以及,若所述第二結果信息為執行成功,則接收工作流引擎按所述執行順序提交的下一個可執行單元;
配置文件生成模塊,用於根據所述可執行單元的參數,生成用於供kubernetes系統創建容器的配置文件;
第一發送模塊,用於將所述配置文件發送至kubernetes系統,使kubernetes系統根據所述配置文件創建容器並執行所述可執行單元;
第二接收模塊,用於接收kubernetes系統返回的關於所述可執行單元的第一結果信息;
第二發送模塊,用於對所述第一結果信息進行轉譯,生成能夠被工作流引擎識別的第二結果信息,並將所述第二結果信息發送至工作流引擎。
在一些實施方式中,所述第一接收模塊還用於:若所述第二結果信息為執行失敗,則接收工作流引擎提交的容器刪除請求;所述第一發送模塊還用於:將所述容器刪除請求發送至kubernetes系統;
相應的,所述第二接收模塊還用於:接收kubernetes系統返回的容器刪除信息;所述第二發送模塊還用於:將所述容器刪除信息發送至工作流引擎,使工作流引擎中斷所述作業。
在一些實施方式中,所述第一接收模塊還用於:接收工作流引擎提交的錯誤日誌查詢請求;所述第一發送模塊還用於:將所述錯誤日誌查詢請求發送至kubernetes系統;
相應的,所述第二接收模塊還用於:接收kubernetes系統返回的容器執行錯誤日誌;所述第二發送模塊還用於:將所述容器執行錯誤日誌發送至工作流引擎。
在一些實施方式中,所述裝置還包括:監聽模塊,用於向kubernetes系統發出監聽請求,用以在所述可執行單元的執行狀態發生變化時,獲取kubernetes系統返回的執行狀態信息,並將符合預設條件的所述執行狀態信息作為所述第一結果信息。
在一些實施方式中,所述裝置還包括:查詢模塊,用於接收工作流引擎發送的查詢指令;向kubernetes系統獲取所述可執行單元的執行狀態信息,並將所述執行狀態信息發送至工作流引擎。
從上面所述可以看出,本發明提供的基於kubernetes系統對接工作流引擎的作業調度方法和裝置,使得工作流引擎將可執行單元分配給kubernetes系統,由kubernetes系統根據可執行單元的資源需求調度到相應計算節點並執行,實現工作流引擎與kubernetes系統的對接協同工作,有效提升作業執行效率和資源使用效率。
附圖說明
為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發明的一些實施例,對於本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。
圖1為本發明實施例的基於kubernetes系統對接工作流引擎的作業調度方法流程圖;
圖2為本發明實施例中可執行單元執行失敗時的處理步驟流程圖;
圖3為本發明實施例中監聽容器狀態變化的處理步驟流程圖;
圖4為本發明實施例中主動查詢容器執行狀態的處理步驟流程圖;
圖5為本發明實施例的基於kubernetes系統對接工作流引擎的作業調度裝置結構示意圖。
具體實施方式
為使本發明的目的、技術方案和優點更加清楚明白,以下結合具體實施例,並參照附圖,對本發明進一步詳細說明。
需要說明的是,本發明實施例中所有使用「第一」和「第二」的表述均是為了區分兩個相同名稱非相同的實體或者非相同的參量,可見「第一」「第二」僅為了表述的方便,不應理解為對本發明實施例的限定,後續實施例對此不再一一說明。
本發明實施例提供了一種基於kubernetes系統對接工作流引擎的作業調度方法。參考圖1,為本發明實施例的基於kubernetes系統對接工作流引擎的作業調度方法流程圖。
所述基於kubernetes系統對接工作流引擎的作業調度方法,包括以下步驟:
步驟101、接收工作流引擎提交的可執行單元。
工作流引擎按照作業流程定義將作業拆分成若干個具有先後執行順序的可執行單元,並按照所述的執行順序將若干個可執行單元進行依次提交。本步驟中,首先接收工作流引擎提交的一個可執行單元。
步驟102、根據所述可執行單元的參數,生成用於供kubernetes系統創建容器的配置文件。
本步驟中,在接收到可執行單元後,獲取可執行單元的參數,獲得的參數一般包括:執行命令、資源需求(cpu、內存等)、輸入輸出文件等,根據上述參數生成配置文件。該配置文件能夠被kubernetes系統識別,kubernetes系統能夠根據配置文件的記載內容,創建具有相應處理能力的容器。一般的,所述的配置文件為yaml文件。
步驟103、將所述配置文件發送至kubernetes系統,使kubernetes系統根據所述配置文件創建容器並執行所述可執行單元。
本步驟中,將生成的配置文件發送至kubernetes系統。kubernetes系統接收到所述的配置文件後,根據配置文件的記載內容,創建容器並調度到相應的節點執行所述的可執行單元。
步驟104、接收kubernetes系統返回的關於所述可執行單元的第一結果信息。
容器執行可執行單元成功或者失敗後,返回第一結果信息。第一結果信息一般包括:任務成功(completed)、任務失敗(crashloopbackoff,容器創建失敗)、命令執行失敗(error,執行過程失敗)。
步驟105、對所述第一結果信息進行轉譯,生成能夠被工作流引擎識別的第二結果信息,並將所述第二結果信息發送至工作流引擎。
前述步驟中獲得的第一結果信息為kubernetes系統格式,其無法被工作流引擎直接識別。則在本步驟中,首先將第一結果信息進行轉譯,將其轉譯成為能夠被工作流引擎識別的第二結果信息,然後在將發送至工作流引擎。對應於第一結果信息,第二結果信息一般包括:任務成功(task_finished)、任務失敗(task_fail,容器創建失敗)、命令執行失敗(task_error,執行過程失敗)。
步驟106、若所述第二結果信息為執行成功,則接收工作流引擎按所述執行順序提交的下一個可執行單元。
工作流引擎接收到第二結果信息後,若第二結果信息為執行成功,則表明kubernetes系統成功完成了當前可執行單元的執行工作。接下來,工作流引擎將會按照之前設置的執行順序,提交一下個執行單元,直至所有的可執行單元均成功執行後,當前作業結束,作業狀態設置為成功。
在一個實施例中,若所述第二結果信息為執行失敗,參考圖2,本實施例的方法還包括可執行單元執行失敗時的處理步驟:
步驟201、接收工作流引擎提交的錯誤日誌查詢請求,並將所述錯誤日誌查詢請求發送至kubernetes系統。
步驟202、接收kubernetes系統返回的容器執行錯誤日誌,並將所述容器執行錯誤日誌發送至工作流引擎。
通過步驟201至步驟202,使得工作流引擎能夠向kubernetes系統請求獲得可執行單元的容器執行錯誤日誌,通過解析容器執行錯誤日誌,獲知可執行單元執行失敗的原因,並對執行失敗的原因進行分析、記錄。
步驟203、接收工作流引擎提交的容器刪除請求,並將所述容器刪除請求發送至kubernetes系統。
步驟204、接收kubernetes系統返回的容器刪除信息,並將所述容器刪除信息發送至工作流引擎,使工作流引擎中斷所述作業。
通過步驟203至步驟204,令kubernetes系統將用於執行當前可執行單元的容器刪除,釋放其佔有的資源供為其他作業使用。
在一個實施例中,在前述實施例中的步驟103之後,本實施例的方法還包括監聽容器狀態變化的處理步驟:
步驟301、向kubernetes系統發出監聽請求,用以在所述可執行單元的執行狀態發生變化時,獲取kubernetes系統返回的執行狀態信息;
步驟302、將符合預設條件的所述執行狀態信息作為所述第一結果信息。
常用的kubernetes系統並沒有在容器執行完成或者刪除成功後主動通知的機制,本實施例中,設置有主動監聽步驟,具體包括:向kubernetes系統發出監聽請求,用以在所述可執行單元的執行狀態發生變化時,獲取kubernetes系統返回的執行狀態信息。其中,獲取到執行狀態信息中,除了前述的任務成功(completed)、任務失敗(crashloopbackoff,容器創建失敗)、命令執行失敗(error,執行過程失敗)之外,還包括其他的標示執行過程中狀態的執行狀態信息,如:任務等待中(pending)、任務進行中(running)等。則需要按照預設條件,將任務成功(completed)、任務失敗(crashloopbackoff,容器創建失敗)、命令執行失敗(error,執行過程失敗)三種執行狀態信息挑選出來,並在後續處理步驟中將其作為結果信息進行後續處理。
在一個實施例中,在前述實施例中的步驟103之後,參考圖4,本實施例的方法還包括主動查詢容器執行狀態的處理步驟:
步驟401、接收工作流引擎發送的查詢指令。
步驟402、向kubernetes系統獲取所述可執行單元的執行狀態信息,並將所述執行狀態信息發送至工作流引擎。
在實際應用中,有時會無法及時獲得可執行單元的執行狀態信息,這會導致可執行單元對應的容器實際已經執行完成而工作流引擎未收到相應通知一直等待的場景。相應的,本實施例中提供了主動查詢容器執行狀態的處理步驟,使得工作流引擎能夠實時的或是定時查詢獲得可執行單元對應容器的容器執行狀態,實現一種撿漏機制。
由上述實施例可見,本發明的基於kubernetes系統對接工作流引擎的作業調度方法和裝置,使得工作流引擎將可執行單元分配給kubernetes系統,由kubernetes系統根據可執行單元的資源需求調度到相應計算節點並執行,實現工作流引擎與kubernetes系統的對接協同工作,有效提升作業執行效率和資源使用效率。
另一方面,本發明實施例還提供了一種基於kubernetes系統對接工作流引擎的作業調度裝置。參考圖5,為本發明實施例的基於kubernetes系統對接工作流引擎的作業調度裝置結構示意圖。
所述基於kubernetes系統對接工作流引擎的作業調度裝置,包括:
第一接收模塊501,用於接收工作流引擎提交的可執行單元;以及,若所述第二結果信息為執行成功,則接收工作流引擎按所述執行順序提交的下一個可執行單元;
配置文件生成模塊502,用於根據所述可執行單元的參數,生成用於供kubernetes系統創建容器的配置文件;
第一發送模塊503,用於將所述配置文件發送至kubernetes系統,使kubernetes系統根據所述配置文件創建容器並執行所述可執行單元;
第二接收模塊504,用於接收kubernetes系統返回的關於所述可執行單元的第一結果信息;
第二發送模塊505,用於對所述第一結果信息進行轉譯,生成能夠被工作流引擎識別的第二結果信息,並將所述第二結果信息發送至工作流引擎。
進一步的,第一接收模塊501還用於:若所述第二結果信息為執行失敗,則接收工作流引擎提交的容器刪除請求;第一發送模塊503還用於:將所述容器刪除請求發送至kubernetes系統;相應的,第二接收模塊504還用於:接收kubernetes系統返回的容器刪除信息;第二發送模塊505還用於:將所述容器刪除信息發送至工作流引擎,使工作流引擎中斷所述作業。
進一步的,第一接收模塊501還用於:接收工作流引擎提交的錯誤日誌查詢請求;第一發送模塊503還用於:將所述錯誤日誌查詢請求發送至kubernetes系統;相應的,第二接收模塊504還用於:接收kubernetes系統返回的容器執行錯誤日誌;第二發送模塊505還用於:將所述容器執行錯誤日誌發送至工作流引擎。
進一步的,所述裝置還包括:監聽模塊506,用於向kubernetes系統發出監聽請求,用以在所述可執行單元的執行狀態發生變化時,獲取kubernetes系統返回的執行狀態信息,並將符合預設條件的所述執行狀態信息作為所述第一結果信息。
進一步的,所述裝置還包括:查詢模塊507,用於接收工作流引擎發送的查詢指令;向kubernetes系統獲取所述可執行單元的執行狀態信息,並將所述執行狀態信息發送至工作流引擎。
上述實施例的裝置用於實現前述實施例中相應的方法,並且具有相應的方法實施例的有益效果,在此不再贅述。
所屬領域的普通技術人員應當理解:以上任何實施例的討論僅為示例性的,並非旨在暗示本公開的範圍(包括權利要求)被限於這些例子;在本發明的思路下,以上實施例或者不同實施例中的技術特徵之間也可以進行組合,步驟可以以任意順序實現,並存在如上所述的本發明的不同方面的許多其它變化,為了簡明它們沒有在細節中提供。
本發明的實施例旨在涵蓋落入所附權利要求的寬泛範圍之內的所有這樣的替換、修改和變型。因此,凡在本發明的精神和原則之內,所做的任何省略、修改、等同替換、改進等,均應包含在本發明的保護範圍之內。