精品国产av一区二区三区,国产av一区二区三区,丰满少妇大乳高潮在线,9lporm自拍视频区九色

當前位置:首頁 > 最新資訊 > 行業資訊

使用機器學習自動優化Kubernetes

隨著Kubernetes已成為應用程序容器編排的事實標準,它也提出了有關優化策略和最佳實踐的重要問題。組織采用Kubernetes的原因之一是提高效率,即使在擴大和縮小規模以適應不斷變化的工作負載時也是如此;然而,使Kubernetes如此靈活的細粒度控制也使得有效調整和優化變得具有挑戰性。

在本文中,我們將解釋如何使用機器學習來自動調整這些資源并確保有效擴展可變工作負載。

優化的復雜性

為Kubernetes優化應用程序主要是確保代碼盡可能高效地使用其底層資源(即CPU和內存)。這意味著以盡可能低的成本和最小的努力確保滿足或超過服務級別目標的性能。

創建集群時,我們可以在容器級別配置兩種主要資源的使用——內存和CPU。也就是說,我們可以設置應用程序可以使用和請求多少資源的限制。我們可以將這些資源設置視為我們的輸入變量,以及運行應用程序的性能、可靠性和資源使用(或成本)方面的輸出。隨著容器數量的增加,變量的數量也在增加,集群管理和系統優化的整體復雜度呈指數級增長。

我們可以將Kubernetes配置視為一個方程式,其中資源設置是我們的變量,成本、性能和可靠性是我們的結果。

圖1:我們可以將Kubernetes配置視為一個方程式,其中資源設置是我們的變量,成本、性能和可靠性是我們的結果。

更復雜的是,不同的資源參數是相互依賴的。更改一個參數可能會對集群性能和效率產生意想不到的影響。這意味著手動確定最佳性能的精確配置是一項不可能完成的任務,除非您有無限的時間和Kubernetes專家。

如果我們在容器部署期間沒有為資源設置自定義值,Kubernetes會自動分配這些值。這里的挑戰是Kubernetes非常慷慨地使用其資源來防止兩種情況:由于內存不足(OOM)錯誤導致的服務失敗和由于CPU節流導致的不合理的性能下降。但是,使用默認配置創建基于云的集群會導致不合理的高云成本,而不能保證足夠的性能。

當我們試圖為多個集群管理多個參數時,這一切都變得更加復雜。為了優化環境的指標價值,機器學習系統可以成為不可或缺的補充。

機器學習優化方法

基于機器學習的優化有兩種通用方法,每種方法都以不同的方式提供價值。首先,基于實驗的優化可以在非生產環境中使用各種場景來模擬可能的生產場景。其次,通過觀察實際系統行為,可以在產品或非產品中執行基于觀察的優化。下面將介紹這兩種方法。

基于實驗的優化

通過實驗進行優化是一種強大的、基于科學的方法,因為我們可以嘗試任何可能的場景,衡量結果,調整我們的變量,然后再試一次。由于實驗是在非生產環境中進行的,因此我們只受到我們可以想象的場景以及執行這些實驗所需的時間和精力的限制。如果實驗是手動完成的,所需的時間和精力可能會很大。這就是機器學習和自動化的用武之地。

讓我們探索基于實驗的優化在實踐中是如何工作的。

第1步:識別變量

要設置實驗,我們必須首先確定可以調整哪些變量(也稱為參數)。這些通常是CPU和內存請求和限制、副本以及特定于應用程序的參數,例如JVM堆大小和垃圾收集設置。

一些ML優化解決方案可以掃描您的集群以自動識別可配置參數。此掃描過程還捕獲集群的當前值或基線值,作為我們實驗的起點。

第2步:設定優化目標

接下來,您必須指定您的目標。換句話說,您試圖最小化或最大化哪些指標?一般而言,目標將由代表權衡的多個指標組成,例如性能與成本。例如,您可能希望最大限度地提高吞吐量,同時最大限度地降低資源成本。

一些優化解決方案將允許您對每個優化目標應用權重,因為在某些情況下性能可能比成本更重要,反之亦然。此外,您可能希望為每個目標指定邊界。例如,您可能甚至不想考慮導致性能低于特定閾值的任何場景。提供這些護欄將有助于提高實驗過程的速度和效率。

以下是為優化目標選擇正確指標的一些注意事項:

如果容器化應用程序是基于事務的,請盡量減少響應時間和錯誤率。在這種情況下,最大速度是理想的,資源使用問題不大。

如果應用程序僅用于計算,請將錯誤率降至最低。我們希望優化性能效率。

如果應用程序處理數據,速度可能是次要的。優化成本。

當然,這些只是幾個例子。確定適當的指標以優先考慮需要開發人員和負責業務運營的人員之間的溝通。確定組織的主要目標。然后檢查該技術如何實現這些目標以及實現這些目標需要什么。最后,制定一個計劃,強調最能平衡成本和功能的指標。

第3步:建立優化方案

使用基于實驗的方法,我們需要建立場景以優化并將這些場景構建到負載測試中。這可能是一系列預期的用戶流量或特定場景,例如基于零售假期的流量高峰。此性能測試將在實驗過程中用于模擬生產負載。

第4步:運行實驗

一旦我們設置了優化目標和可調參數的實驗,我們就可以開始實驗了。一個實驗由多個試驗組成,您的優化解決方案在每個試驗中迭代以下步驟:

實驗控制器使用第一次試驗的基線參數在您的集群中運行容器化應用程序。

然后控制器運行之前創建的性能測試,為我們的優化方案應用負??載到系統。

控制器捕獲與我們的目標相對應的指標,例如持續時間和資源成本。

機器學習算法分析結果,然后為下一次試驗計算一組新參數。

然后重復此過程,但在配置實驗時指定了許多試驗。典型的實驗范圍從20到200次試驗,更多的參數需要更多的試驗才能獲得明確的結果。

機器學習引擎使用每次試驗的結果來構建表示多維參數空間的模型。在這個空間中,它可以檢查彼此相關的參數。隨著每次迭代,ML引擎更接近于識別優化目標指標的配置。

第5步:分析結果

雖然機器學習會自動推薦能夠產生最佳結果的配置,但一旦實驗完成,就可以進行額外的分析。例如,您可以可視化兩個不同目標之間的權衡,查看哪些參數對結果有重大影響,哪些參數不太重要。

結果通常令人驚訝,并可能導致關鍵的架構改進:例如,確定大量較小的副本比較少數量的“較重”副本更有效。

實驗結果可以可視化和分析,以充分了解系統行為。

圖2:實驗結果可以可視化和分析,以充分了解系統行為。

基于觀察的優化

雖然基于實驗的優化對于分析廣泛的場景非常強大,但不可能預測每一種可能的情況。此外,高度可變的用戶流量意味著某個時間點的最佳配置可能不會隨著事情的變化而變得最佳。Kubernetes自動擴縮器可以提供幫助,但它們基于歷史使用情況,沒有考慮應用程序性能。

這就是基于觀察的優化可以提供幫助的地方。讓我們看看它是如何工作的。

第1步:配置應用程序

根據您使用的優化解決方案,為基于觀察的優化配置應用程序可能包括以下步驟:

指定命名空間和可選的標簽選擇器,以識別要調整的資源。

為要調整的CPU和內存參數指定護欄(最小值和最大值)。

指定系統建議更新參數設置的頻率。

指定是自動部署建議還是經批準部署。

第2步:機器學習分析

配置完成后,機器學習引擎開始分析從Prometheus、Datadog或其他可觀察性工具收集的可觀察性數據,以了解實際資源使用情況和應用程序性能趨勢。然后系統開始在配置期間指定的時間間隔提出建議。

第3步:部署建議

如果您在配置期間指定自動實施建議,則優化解決方案將根據推薦的配置自動修補部署。如果您選擇手動部署,您可以在決定是否批準之前查看建議,包括容器級別的詳細信息。

最佳實踐

您可能已經注意到,基于觀察的優化比基于實驗的方法更簡單。它以更少的努力更快地提供價值,但另一方面,基于實驗的優化更強大,并且可以提供使用基于觀察的方法無法實現的深入的應用程序洞察力。

使用哪種方法不應該是一個非此即彼的決定:這兩種方法都有自己的位置,可以共同縮小產品和非產品之間的差距。以下是一些需要考慮的準則:

由于基于觀察的優化易于實施并且可以快速看到改進,因此應該在您的環境中廣泛部署。

對于將受益于更深層次的分析的更復雜或關鍵的應用程序,使用基于實驗的優化來補充基于觀察的優化。

基于觀察的優化也可用于識別需要由基于實驗的優化提供的更深入分析的場景。

然后,使用基于觀察的方法在生產環境中的優化良性循環中不斷驗證和改進基于實驗的實現。

同時使用基于實驗和基于觀察的方法可以創建系統、持續優化的良性循環。

圖3:同時使用基于實驗和基于觀察的方法可創建系統、持續優化的良性循環。

結論

優化我們的Kubernetes環境以最大限度地提高效率(性能與成本)、智能擴展并實現我們的業務目標需要:

在部署之前對我們的應用程序和環境參數進行理想配置

部署后持續監控和調整

對于小型環境,這項任務是艱巨的。對于在Kubernetes上大規模運行應用程序的組織來說,這可能已經超出了體力勞動的范圍。幸運的是,機器學習可以彌合自動化差距,并為在各個層面優化Kubernetes環境提供強大的洞察力。

猜你喜歡