本公開涉及基于容器的群集的多維自動擴(kuò)縮。
背景技術(shù):
1、現(xiàn)代應(yīng)用程序是經(jīng)設(shè)計(jì)以利用現(xiàn)代計(jì)算平臺及基礎(chǔ)設(shè)施的益處的應(yīng)用程序。舉例來說,現(xiàn)代應(yīng)用程序可以多重云或混合云方式部署。多重云應(yīng)用程序可跨越多個云部署,所述云可為由不同的云提供者或同一云提供者提供的多個公有云或者公有云與私有云的混合。術(shù)語“私有云”是指可具有以類云方式分配的池化資源的一或多個本地?cái)?shù)據(jù)中心?;旌显凭唧w是指公有云與私有云的組合。因此,跨越混合云環(huán)境部署的應(yīng)用程序消耗在公有云中執(zhí)行的云服務(wù)及在私有數(shù)據(jù)中心(例如,私有云)中執(zhí)行的本地服務(wù)兩者。在公有云或私有數(shù)據(jù)中心內(nèi),現(xiàn)代應(yīng)用程序可部署到一或多個虛擬機(jī)(vm)、容器、應(yīng)用程序服務(wù)及/或類似物上。
2、容器是依賴于虛擬隔離來部署及運(yùn)行取決于共享操作系統(tǒng)(os)核心的應(yīng)用程序的封裝。容器化應(yīng)用程序(還稱為“容器化工作負(fù)載”)可包含封裝到一或多個容器中的一或多個相關(guān)應(yīng)用程序的集合。在一些編排系統(tǒng)中,共享存儲及網(wǎng)絡(luò)資源的一組一或多個相關(guān)容器(稱為容器組(pod))部署為計(jì)算軟件的單元。容器編排系統(tǒng)使容器的生命周期自動化,包含例如預(yù)配、部署、監(jiān)測、擴(kuò)縮(擴(kuò)大及/或縮小)、聯(lián)網(wǎng)及負(fù)載平衡等操作。
3、軟件是使此類容器化應(yīng)用程序的部署及操作自動化的實(shí)例開源容器編排平臺。在高層級處,kubernetes平臺由含有在平臺中管理的kubernetes對象或持久實(shí)體的中央數(shù)據(jù)庫構(gòu)成。kubernetes對象表示于例如javascript對象表示法(json)或yaml文件等配置文件中,且描述用于運(yùn)行容器化應(yīng)用程序的經(jīng)互連節(jié)點(diǎn)的kubernetes群集的既定狀態(tài)。節(jié)點(diǎn)可為物理機(jī)或經(jīng)配置以在運(yùn)行監(jiān)控器的物理機(jī)上運(yùn)行的vm。群集的既定狀態(tài)包含將部署在群集中的既定基礎(chǔ)設(shè)施(例如,容器組、容器等)及容器化應(yīng)用程序。換句話說,kubernetes對象是“意向記錄”,一旦創(chuàng)建了對象,kubernetes系統(tǒng)便將不斷地工作來確保對象在部署中實(shí)現(xiàn)。
4、kubernetes中存在兩種對象類別:原生kubernetes對象及自定義資源定義(crd)對象(本文中還稱為“自定義資源”)。原生kubernetes對象包含由kubernetes應(yīng)用程序編程接口(api)支持且可由其創(chuàng)建/操縱的容器組、服務(wù)、存儲卷、命名空間、部署、復(fù)制控制器、副本集(replicaset)及/或類似物。kubernetes?api是經(jīng)由http提供的基于資源的(例如,rest風(fēng)格(restful)或表述性狀態(tài)轉(zhuǎn)移架構(gòu)風(fēng)格)編程接口。另一方面,crd對象是使kubernetes?api擴(kuò)展或允許用戶將其自己的api引入到kubernetes群集中的對象。
5、kubernetes經(jīng)設(shè)計(jì)以適應(yīng)任何數(shù)目及/或類型的配置,只要不超出特定限制即可(例如,不超過每節(jié)點(diǎn)第一容器組閾值數(shù)目、不超過第二容器組閾值總數(shù)目、不超過第三節(jié)點(diǎn)閾值總數(shù)目等)。然而,導(dǎo)出用于部署容器化應(yīng)用程序的“最佳”配置是具技術(shù)挑戰(zhàn)性的問題。特定來說,“最佳”配置是在使平臺操作保持簡單的同時平衡成本、資源消耗及應(yīng)用程序性能/可用性的配置。理解在基于容器的群集中實(shí)施的容器組的數(shù)目、節(jié)點(diǎn)的數(shù)目、節(jié)點(diǎn)大小及容量、副本集的數(shù)目(例如,容器組副本的數(shù)目)、容器組資源需求、容器組資源限制等使得這些變量為優(yōu)化的可為不明顯或不容易確定的。事實(shí)上,確定“最佳”配置通常需要試錯過程而導(dǎo)致(1)在分配不足的情形中發(fā)生許多被終止/重新啟動的容器組及(2)在分配過度的情形中發(fā)生資源浪費(fèi)。此外,隨著應(yīng)用程序請求隨時間改變,此類配置可需要被不斷更新。
6、確定基于容器的群集的“最佳”配置的一些常規(guī)方法本質(zhì)上為更經(jīng)驗(yàn)性的。舉例來說,一種常規(guī)方法依賴于專業(yè)人員的知識來識別群集配置的部署。專家在導(dǎo)出配置時可能需要知曉工作負(fù)載模式、應(yīng)用程序?qū)嵤┓桨敢约袄斫饣A(chǔ)設(shè)施需求及限制。因?yàn)檫@是一種固有的主觀方法,因此是不可重復(fù)或不可擴(kuò)縮的。因此,用于確定試圖優(yōu)化成本、資源消耗、應(yīng)用程序性能及操作復(fù)雜性的群集配置的常規(guī)人工方法可為無效的。
7、此外,為了考慮到所部署的應(yīng)用程序的數(shù)目及/或不同應(yīng)用程序的資源請求隨時間的改變,常規(guī)方法已開發(fā)數(shù)種工具,包含水平容器組自動擴(kuò)縮器(hpa)、垂直容器組自動擴(kuò)縮器(vpa)及群集自動擴(kuò)縮器(ca)。這些自動擴(kuò)縮器經(jīng)設(shè)計(jì)以通過提供應(yīng)用程序資源的自動可擴(kuò)縮性以適應(yīng)變化的負(fù)載而幫助保證kubernetes中的可用性。
8、hpa是經(jīng)設(shè)計(jì)以自動更新工作負(fù)載資源(例如部署及副本集(例如,經(jīng)設(shè)計(jì)以管理一組容器組的部署及擴(kuò)縮))從而使其擴(kuò)縮以匹配基于容器的群集中的應(yīng)用程序的需求的工具。水平擴(kuò)縮是指響應(yīng)于負(fù)載增加而在群集中部署額外容器組及/或響應(yīng)于負(fù)載減少而移除基于容器的群集中的容器組的過程。在一些情形中,hpa經(jīng)設(shè)計(jì)以基于實(shí)際使用率度量(例如中央處理單元(cpu)及/或存儲器利用率)而自動增加及/或減少群集中的容器組副本的數(shù)目。在某些實(shí)施例中,hpa被實(shí)施為控制循環(huán)以基于所要度量值與當(dāng)前度量值之間的比率而使容器組副本擴(kuò)縮。對所要使用率度量值的選擇使得強(qiáng)制執(zhí)行應(yīng)用程序可用性與操作成本之間的折衷。
9、vpa是經(jīng)設(shè)計(jì)以自動調(diào)整資源限制及/或資源請求(例如,相對于cpu及/或存儲器)以幫助確保容器組始終高效操作的工具。vpa通過分析在容器組中運(yùn)行的容器的歷史存儲器及/或cpu使用率以及當(dāng)前存儲器及/或cpu使用率而確定所述調(diào)整。在某些實(shí)施例中,vpa提供用戶可使用來人工更新配置的針對資源請求及/或限制的推薦值。在某些實(shí)施例中,vpa基于這些推薦值而自動更新配置。
10、ca是擴(kuò)大或縮小基于容器的群集中的節(jié)點(diǎn)的數(shù)目以幫助確保存在足夠節(jié)點(diǎn)來運(yùn)行所有所請求容器組且從群集移除多余節(jié)點(diǎn)的獨(dú)立式程序。舉例來說,ca經(jīng)設(shè)計(jì)以在由于現(xiàn)有節(jié)點(diǎn)之間的資源不充足而存在無法在現(xiàn)有節(jié)點(diǎn)中的任一者上調(diào)度的等待中容器組時向群集添加節(jié)點(diǎn)。另外,ca經(jīng)設(shè)計(jì)以在至少一個節(jié)點(diǎn)始終不被需要時及在運(yùn)行于節(jié)點(diǎn)上的容器組能夠轉(zhuǎn)移到不同節(jié)點(diǎn)來執(zhí)行時減少群集中的節(jié)點(diǎn)的數(shù)目。如此,ca經(jīng)設(shè)計(jì)以通過基于新容器組被添加及/或移除而添加及/或移除節(jié)點(diǎn)來以反應(yīng)式方式起作用。在一些情形中,這致使添加到群集的新容器組處于等待狀態(tài)直到額外節(jié)點(diǎn)被預(yù)配,因此影響應(yīng)用程序性能。在一些ca實(shí)施方案中,通過預(yù)留空間來欺騙ca過早地添加額外節(jié)點(diǎn)來部署被暫停的容器組以改善此問題。然而,這會向系統(tǒng)中引入額外操作復(fù)雜性及成本。
11、換句話說,上文所描述的自動擴(kuò)縮器使擴(kuò)縮應(yīng)用程序以適應(yīng)工作負(fù)載改變的過程自動化。然而,自動擴(kuò)縮器自身需要被配置及隨時間調(diào)諧,因此引入重大的設(shè)置及維護(hù)開銷。此外,這些自動擴(kuò)縮器工具可能無法良好地共同工作(如果不是根本無法共同工作的話),且如此,可在被部署時增加這些自動擴(kuò)縮器的設(shè)置、調(diào)諧及維護(hù)的復(fù)雜性。舉例來說,當(dāng)前,hpa及vpa未經(jīng)設(shè)計(jì)以同時在同一資源上使用,因?yàn)槠渚噲D以不同方式優(yōu)化資源。
12、應(yīng)注意,本文中的背景技術(shù)章節(jié)中所包含的信息僅意在提供對具體實(shí)施方式中的某些實(shí)施例的論述的參考。此背景技術(shù)中所包含的所有信息均不應(yīng)被視為對現(xiàn)有技術(shù)的承認(rèn)。
技術(shù)實(shí)現(xiàn)思路
1、一或多個實(shí)施例提供一種用于確定基于容器的群集的目標(biāo)配置的方法。所述方法通常包含由經(jīng)配置以管理所述基于容器的群集的組件的虛擬化管理平臺確定所述基于容器的群集的當(dāng)前狀態(tài)。所述方法通常包含由所述虛擬化管理平臺基于所述基于容器的群集的所述當(dāng)前狀態(tài)確定所述基于容器的群集的性能度量或資源利用率度量中的至少一者。所述方法通常包含利用經(jīng)配置以產(chǎn)生針對所述基于容器的群集推薦的多個候選配置的模型處理所述當(dāng)前狀態(tài)及所述性能度量或所述資源利用率度量中的至少一者且借此產(chǎn)生所述多個候選配置。所述方法通常包含計(jì)算所述多個候選配置中的每一者的獎勵分?jǐn)?shù)。所述方法通常包含基于所述目標(biāo)配置的所述獎勵分?jǐn)?shù)將所述目標(biāo)配置選擇為來自所述多個候選配置的候選配置。所述方法通常包含基于所述目標(biāo)配置調(diào)整所述基于容器的群集的配置設(shè)定以更改所述基于容器的群集的所述當(dāng)前狀態(tài)。
2、其它實(shí)施例包含包括致使計(jì)算機(jī)系統(tǒng)執(zhí)行以上方法的指令的非暫時性計(jì)算機(jī)可讀存儲媒體,以及經(jīng)配置以執(zhí)行以上方法的計(jì)算機(jī)系統(tǒng)。