本發(fā)明涉及云計算資源管理,特別指一種基于雙代理的kubernetes容器自動伸縮方法及系統(tǒng)。
背景技術:
1、隨著云原生技術的快速發(fā)展,容器化已成為現(xiàn)代應用部署的主流范式,而kubernetes作為主導性的容器編排平臺,在企業(yè)it架構中扮演著越來越重要的角色。然而,如何實現(xiàn)kubernetes容器的云計算資源的高效自動擴展,滿足動態(tài)工作負載需求,同時平衡資源利用率與服務質量,已成為云原生技術領域亟待解決的關鍵問題。針對kubernetes容器的自動擴展,傳統(tǒng)上主要面臨以下挑戰(zhàn):
2、1、工作負載預測精度不足。目前kubernetes容器的hpa(horizontal?podautoscaler)功能依賴簡單的閾值規(guī)則進行擴展決策,無法有效預測和應對復雜的工作負載模式,如周期性波動、突發(fā)流量等,導致云計算資源的供給滯后于實際需求;在生產環(huán)境中,這種簡單的反應式擴展策略可能導致高達35%的云計算資源過度配置。
3、2、多維資源協(xié)同優(yōu)化困難。kubernetes容器的應用通常涉及cpu、內存、網絡等多個維度的云計算資源,不同維度的云計算資源之間存在復雜的依賴關系,傳統(tǒng)的單維度擴展方法難以捕捉云計算資源間的耦合效應,導致云計算資源配置不均衡,影響整體性能,而忽視云計算資源間的依賴關系可能導致25%左右的sla違約。
4、3、擴展決策的實時性與穩(wěn)定性矛盾。kubernetes容器的運行環(huán)境對擴展決策的響應速度有較高要求,特別是在面對突發(fā)工作負載時;然而,過于激進的擴展策略可能導致系統(tǒng)震蕩,而過于保守的擴展策略則可能錯過擴展時機。
5、4、系統(tǒng)復雜性與可擴展性。隨著kubernetes容器的集群規(guī)模不斷增長,狀態(tài)空間呈指數(shù)級增長,傳統(tǒng)方法難以應對如此高維的決策空間;同時,異構計算資源、多租戶環(huán)境、網絡拓撲等因素進一步增加了自動擴展問題的復雜性。
6、針對上述挑戰(zhàn),有學者提出基于lstm的工作負載預測方法,通過深度學習捕捉工作負載序列的時間依賴性;有學者設計了基于強化學習的容器調度框架,實現(xiàn)云計算資源分配的動態(tài)優(yōu)化;在工業(yè)實踐中,google的autopilot系統(tǒng)采用機器學習方法優(yōu)化kubernetes容器集群的資源效率,取得一定成效。然而,現(xiàn)有研究仍存在以下局限:1、僅關注單一方面的優(yōu)化,缺乏對工作負載預測和資源調整的統(tǒng)籌考慮,導致云計算資源的利用率還是不盡如人意;2、在處理高維狀態(tài)空間和復雜決策序列時,學習效率和收斂性仍有待提高,使得云計算資源的調度效率不佳;3、忽視了經驗知識的有效利用,難以充分發(fā)揮歷史數(shù)據的價值,影響工作負載預測的準確性,進而影響云計算資源調度的可靠性。
7、因此,如何提供一種基于雙代理的kubernetes容器自動伸縮方法及系統(tǒng),實現(xiàn)提升kubernetes容器的云計算資源調度的資源利用率、效率以及可靠性,成為一個亟待解決的技術問題。
技術實現(xiàn)思路
1、本發(fā)明要解決的技術問題,在于提供一種基于雙代理的kubernetes容器自動伸縮方法及系統(tǒng),實現(xiàn)提升kubernetes容器的云計算資源調度的資源利用率、效率以及可靠性。
2、第一方面,本發(fā)明提供了一種基于雙代理的kubernetes容器自動伸縮方法,包括如下步驟:
3、步驟s1、基于包括工作負載預測代理單元和資源調整代理單元的雙代理模塊、狀態(tài)空間分層模塊以及注意力經驗回放模塊,創(chuàng)建一用于kubernetes容器進行云計算資源調度的伸縮模型,設定所述伸縮模型的獎勵函數(shù);
4、所述工作負載預測代理單元用于依據輸入的工作負載數(shù)據,向狀態(tài)空間分層模塊輸出工作負載預測結果;
5、所述狀態(tài)空間分層模塊用于依據輸入的工作負載預測結果以及工作負載數(shù)據,向資源調整代理單元輸出包括工作負載狀態(tài)向量、資源利用狀態(tài)向量以及性能狀態(tài)向量的系統(tǒng)狀態(tài)向量;
6、所述資源調整代理單元用于依據輸入的系統(tǒng)狀態(tài)向量,輸出云計算資源調度策略;
7、所述注意力經驗回放模塊用于依據系統(tǒng)狀態(tài)向量、資源調度策略以及獎勵函數(shù)的獎勵值生成調度經驗,計算各所述調度經驗的注意力權重,基于所述注意力權重篩選調度經驗對伸縮模型進行訓練和優(yōu)化;
8、步驟s2、獲取大量的kubernetes容器的歷史工作負載數(shù)據,對各所述歷史工作負載數(shù)據進行預處理后構建數(shù)據集;
9、步驟s3、基于預設比例將所述數(shù)據集劃分為訓練集、驗證集以及測試集,通過所述訓練集對伸縮模型進行訓練,訓練過程中通過所述獎勵函數(shù)不斷優(yōu)化伸縮模型,通過所述驗證集對訓練后的伸縮模型進行驗證,通過所述測試集對驗證通過后的伸縮模型進行測試;
10、步驟s4、通過測試通過的所述伸縮模型對kubernetes容器的云計算資源進行調度。
11、進一步的,所述步驟s1中,所述工作負載預測代理單元基于lstm網絡構建,公式為:
12、;
13、;
14、其中,表示工作負載預測結果,即預測t+1時刻的工作負載向量,表示預測t+1時刻的cpu使用率向量,表示預測t+1時刻的內存使用率向量,表示預測t+1時刻的請求數(shù)量向量;表示工作負載預測代理單元的網絡函數(shù);ht表示t時刻lstm的隱藏狀態(tài),用于捕獲工作負載向量的歷史信息;ct表示t時刻lstm的單元狀態(tài),用于維護工作負載向量的長期記憶;表示工作負載向量的注意力權重向量;、、均表示可學習的權重矩陣;表示t時刻輸入的工作負載向量,表示t時刻的cpu使用率向量,表示t時刻的內存使用率向量,表示t時刻的請求數(shù)量向量;b表示偏置向量。
15、進一步的,所述步驟s1中,所述狀態(tài)空間分層模塊的公式為:
16、;
17、;
18、;
19、;
20、其中,s表示系統(tǒng)狀態(tài)向量;表示工作負載狀態(tài)向量;表示資源利用狀態(tài)向量;表示性能狀態(tài)向量;表示t時刻輸入的工作負載向量;表示預測t+1時刻的工作負載向量;表示負載方差,基于工作負載預測結果以及工作負載數(shù)據計算得到;表示負載變化率,基于工作負載預測結果以及工作負載數(shù)據計算得到;表示t時刻的cpu使用率向量;表示t時刻的內存使用率向量;表示t時刻的請求數(shù)量向量;表示sla達成狀態(tài),取值范圍為[0,1);表示請求的隊列長度;表示請求的平均響應延遲;表示sla違約率;
21、所述資源調整代理單元基于dqn網絡構建,公式為:;
22、其中,表示t時刻的系統(tǒng)狀態(tài)向量;表示t時刻的擴展動作;擴展動作的動作空間定義為,表示水平擴展動作,用于調整kubernetes容器的pod的數(shù)量,表示垂直擴展動作,用于調整pod的資源限制;表示和對應的云計算資源調度策略;表示資源調整代理單元的網絡函數(shù);表示t時刻的獎勵函數(shù)的獎勵值;表示折扣因子;表示t+1時刻的擴展動作;表示t+1時刻的系統(tǒng)狀態(tài)向量;maxq()表示dqn網絡。
23、進一步的,所述步驟s1中,所述注意力經驗回放模塊生成的調度經驗的公式為:;其中,表示調度經驗;表示t時刻的系統(tǒng)狀態(tài)向量;表示t時刻的擴展動作;表示t時刻的獎勵函數(shù)的獎勵值;表示t+1時刻的系統(tǒng)狀態(tài)向量;表示系統(tǒng)狀態(tài);表示擴展動作;表示獎勵值;表示下一個系統(tǒng)狀態(tài);
24、所述注意力權重的計算公式為:;
25、其中,表示t時刻的注意力權重;ei表示第i條調度經驗的嵌入向量;ej表示第j條調度經驗的嵌入向量;t表示轉置;表示經驗投影矩陣;表示當前系統(tǒng)狀態(tài)的嵌入向量;
26、所述基于所述注意力權重篩選調度經驗對伸縮模型進行訓練和優(yōu)化具體為:
27、基于所述注意力權重計算采樣概率:;
28、其中,表示第i條調度經驗的采樣概率;表示溫度參數(shù),取值為2;表示第i個注意力權重;表示第j個注意力權重;
29、基于所述采樣概率篩選調度經驗對伸縮模型進行訓練和優(yōu)化;
30、所述獎勵函數(shù)的公式為:;
31、其中,表示t時刻的系統(tǒng)狀態(tài)向量;表示t時刻的擴展動作;表示和對應的獎勵值;均表示權重因子,且;表示和對應的資源利用率獎勵;表示和對應的成本獎勵;表示和對應的sla獎勵。
32、進一步的,所述步驟s1中,所述工作負載數(shù)據至少包括cpu使用率、內存使用率向量、請求數(shù)量、sla達成狀態(tài)、請求的隊列長度、請求的平均響應延遲、sla違約率;
33、所述步驟s2具體為:
34、獲取大量的kubernetes容器的歷史工作負載數(shù)據,對各所述歷史工作負載數(shù)據進行至少包括空值處理、數(shù)據標準化處理、業(yè)務鍵值處理、合并數(shù)據、缺失值處理的預處理后構建數(shù)據集;
35、所述步驟s3具體為:
36、基于預設比例將所述數(shù)據集劃分為訓練集、驗證集以及測試集,通過所述訓練集對伸縮模型進行訓練,訓練過程中通過所述獎勵函數(shù)不斷優(yōu)化伸縮模型,并不斷優(yōu)化所述伸縮模型至少包括學習率、訓練批次、隨機失活率以及權值衰減率的超參數(shù),直至滿足預設的收斂條件;
37、通過所述驗證集對訓練后的伸縮模型進行驗證,判斷云計算資源調度策略的調度準確率是否大于預設的準確率閾值,若否,擴充所述訓練集繼續(xù)訓練;若是,則驗證通過;
38、通過所述測試集對驗證通過后的伸縮模型進行測試,判斷云計算資源調度策略的置信度是否大于預設的置信度閾值,若否,擴充所述訓練集繼續(xù)訓練;若是,則測試通過。
39、第二方面,本發(fā)明提供了一種基于雙代理的kubernetes容器自動伸縮系統(tǒng),包括如下模塊:
40、伸縮模型創(chuàng)建模塊,用于基于包括工作負載預測代理單元和資源調整代理單元的雙代理模塊、狀態(tài)空間分層模塊以及注意力經驗回放模塊,創(chuàng)建一用于kubernetes容器進行云計算資源調度的伸縮模型,設定所述伸縮模型的獎勵函數(shù);
41、所述工作負載預測代理單元用于依據輸入的工作負載數(shù)據,向狀態(tài)空間分層模塊輸出工作負載預測結果;
42、所述狀態(tài)空間分層模塊用于依據輸入的工作負載預測結果以及工作負載數(shù)據,向資源調整代理單元輸出包括工作負載狀態(tài)向量、資源利用狀態(tài)向量以及性能狀態(tài)向量的系統(tǒng)狀態(tài)向量;
43、所述資源調整代理單元用于依據輸入的系統(tǒng)狀態(tài)向量,輸出云計算資源調度策略;
44、所述注意力經驗回放模塊用于依據系統(tǒng)狀態(tài)向量、資源調度策略以及獎勵函數(shù)的獎勵值生成調度經驗,計算各所述調度經驗的注意力權重,基于所述注意力權重篩選調度經驗對伸縮模型進行訓練和優(yōu)化;
45、數(shù)據集構建模塊,用于獲取大量的kubernetes容器的歷史工作負載數(shù)據,對各所述歷史工作負載數(shù)據進行預處理后構建數(shù)據集;
46、伸縮模型訓練模塊,用于基于預設比例將所述數(shù)據集劃分為訓練集、驗證集以及測試集,通過所述訓練集對伸縮模型進行訓練,訓練過程中通過所述獎勵函數(shù)不斷優(yōu)化伸縮模型,通過所述驗證集對訓練后的伸縮模型進行驗證,通過所述測試集對驗證通過后的伸縮模型進行測試;
47、容器自動伸縮模塊,用于通過測試通過的所述伸縮模型對kubernetes容器的云計算資源進行調度。
48、進一步的,所述伸縮模型創(chuàng)建模塊中,所述工作負載預測代理單元基于lstm網絡構建,公式為:
49、;;
50、其中,表示工作負載預測結果,即預測t+1時刻的工作負載向量,表示預測t+1時刻的cpu使用率向量,表示預測t+1時刻的內存使用率向量,表示預測t+1時刻的請求數(shù)量向量;表示工作負載預測代理單元的網絡函數(shù);ht表示t時刻lstm的隱藏狀態(tài),用于捕獲工作負載向量的歷史信息;ct表示t時刻lstm的單元狀態(tài),用于維護工作負載向量的長期記憶;表示工作負載向量的注意力權重向量;、、均表示可學習的權重矩陣;表示t時刻輸入的工作負載向量,表示t時刻的cpu使用率向量,表示t時刻的內存使用率向量,表示t時刻的請求數(shù)量向量;b表示偏置向量。
51、進一步的,所述伸縮模型創(chuàng)建模塊中,所述狀態(tài)空間分層模塊的公式為:
52、;
53、;
54、;
55、;
56、其中,s表示系統(tǒng)狀態(tài)向量;表示工作負載狀態(tài)向量;表示資源利用狀態(tài)向量;表示性能狀態(tài)向量;表示t時刻輸入的工作負載向量;表示預測t+1時刻的工作負載向量;表示負載方差,基于工作負載預測結果以及工作負載數(shù)據計算得到;表示負載變化率,基于工作負載預測結果以及工作負載數(shù)據計算得到;表示t時刻的cpu使用率向量;表示t時刻的內存使用率向量;表示t時刻的請求數(shù)量向量;表示sla達成狀態(tài),取值范圍為[0,1);表示請求的隊列長度;表示請求的平均響應延遲;表示sla違約率;
57、所述資源調整代理單元基于dqn網絡構建,公式為:;
58、其中,表示t時刻的系統(tǒng)狀態(tài)向量;表示t時刻的擴展動作;擴展動作的動作空間定義為,表示水平擴展動作,用于調整kubernetes容器的pod的數(shù)量,表示垂直擴展動作,用于調整pod的資源限制;表示和對應的云計算資源調度策略;表示資源調整代理單元的網絡函數(shù);表示t時刻的獎勵函數(shù)的獎勵值;表示折扣因子;表示t+1時刻的擴展動作;表示t+1時刻的系統(tǒng)狀態(tài)向量;maxq()表示dqn網絡。
59、進一步的,所述伸縮模型創(chuàng)建模塊中,所述注意力經驗回放模塊生成的調度經驗的公式為:;
60、其中,表示調度經驗;表示t時刻的系統(tǒng)狀態(tài)向量;表示t時刻的擴展動作;表示t時刻的獎勵函數(shù)的獎勵值;表示t+1時刻的系統(tǒng)狀態(tài)向量;表示系統(tǒng)狀態(tài);表示擴展動作;表示獎勵值;表示下一個系統(tǒng)狀態(tài);
61、所述注意力權重的計算公式為:;
62、其中,表示t時刻的注意力權重;ei表示第i條調度經驗的嵌入向量;ej表示第j條調度經驗的嵌入向量;t表示轉置;表示經驗投影矩陣;表示當前系統(tǒng)狀態(tài)的嵌入向量;
63、所述基于所述注意力權重篩選調度經驗對伸縮模型進行訓練和優(yōu)化具體為:
64、基于所述注意力權重計算采樣概率:;
65、其中,表示第i條調度經驗的采樣概率;表示溫度參數(shù),取值為2;表示第i個注意力權重;表示第j個注意力權重;
66、基于所述采樣概率篩選調度經驗對伸縮模型進行訓練和優(yōu)化;
67、所述獎勵函數(shù)的公式為:;
68、其中,表示t時刻的系統(tǒng)狀態(tài)向量;表示t時刻的擴展動作;表示和對應的獎勵值;均表示權重因子,且;表示和對應的資源利用率獎勵;表示和對應的成本獎勵;表示和對應的sla獎勵。
69、進一步的,所述伸縮模型創(chuàng)建模塊中,所述工作負載數(shù)據至少包括cpu使用率、內存使用率向量、請求數(shù)量、sla達成狀態(tài)、請求的隊列長度、請求的平均響應延遲、sla違約率;
70、所述數(shù)據集構建模塊具體用于:
71、獲取大量的kubernetes容器的歷史工作負載數(shù)據,對各所述歷史工作負載數(shù)據進行至少包括空值處理、數(shù)據標準化處理、業(yè)務鍵值處理、合并數(shù)據、缺失值處理的預處理后構建數(shù)據集;
72、所述伸縮模型訓練模塊具體用于:
73、基于預設比例將所述數(shù)據集劃分為訓練集、驗證集以及測試集,通過所述訓練集對伸縮模型進行訓練,訓練過程中通過所述獎勵函數(shù)不斷優(yōu)化伸縮模型,并不斷優(yōu)化所述伸縮模型至少包括學習率、訓練批次、隨機失活率以及權值衰減率的超參數(shù),直至滿足預設的收斂條件;
74、通過所述驗證集對訓練后的伸縮模型進行驗證,判斷云計算資源調度策略的調度準確率是否大于預設的準確率閾值,若否,擴充所述訓練集繼續(xù)訓練;若是,則驗證通過;
75、通過所述測試集對驗證通過后的伸縮模型進行測試,判斷云計算資源調度策略的置信度是否大于預設的置信度閾值,若否,擴充所述訓練集繼續(xù)訓練;若是,則測試通過。
76、本發(fā)明的優(yōu)點在于:
77、通過雙代理模塊、狀態(tài)空間分層模塊以及注意力經驗回放模塊,創(chuàng)建用于kubernetes容器進行云計算資源調度的伸縮模型,設定伸縮模型的獎勵函數(shù),而雙代理模塊包括工作負載預測代理單元和資源調整代理單元;接著獲取大量的kubernetes容器的歷史工作負載數(shù)據進行預處理后構建數(shù)據集,將數(shù)據集劃分為訓練集、驗證集以及測試集,通過訓練集對伸縮模型進行訓練,訓練過程中通過獎勵函數(shù)不斷優(yōu)化伸縮模型,通過驗證集對訓練后的伸縮模型進行驗證,通過測試集對驗證通過后的伸縮模型進行測試,最后通過測試通過的伸縮模型對kubernetes容器的云計算資源進行調度;即通過大量歷史工作負載數(shù)據訓練后的伸縮模型進行云計算資源的調度,伸縮模型的工作負載預測代理單元用于依據輸入的工作負載數(shù)據,向狀態(tài)空間分層模塊輸出工作負載預測結果;狀態(tài)空間分層模塊用于依據輸入的工作負載預測結果以及工作負載數(shù)據,向資源調整代理單元輸出包括工作負載狀態(tài)向量、資源利用狀態(tài)向量以及性能狀態(tài)向量的系統(tǒng)狀態(tài)向量;資源調整代理單元用于依據輸入的系統(tǒng)狀態(tài)向量,輸出云計算資源調度策略;注意力經驗回放模塊用于依據系統(tǒng)狀態(tài)向量、資源調度策略以及獎勵函數(shù)的獎勵值生成調度經驗,計算各調度經驗的注意力權重,基于注意力權重篩選調度經驗對伸縮模型進行訓練和優(yōu)化;即在kubernetes容器的云計算資源調度過程中,通過雙代理模塊對工作負載預測結果和云計算資源調度策略進行統(tǒng)籌考慮,通過狀態(tài)空間分層模塊全面表征kubernetes容器的多維特征,以提升云計算資源調度的合理性,通過注意力經驗回放模塊充分發(fā)揮歷史數(shù)據的價值,有效提升工作負載預測的準確性,并提升伸縮模型的學習效率和優(yōu)化云計算資源調度策略,最終極大的提升了kubernetes容器的云計算資源調度的資源利用率、效率以及可靠性。