Kubernetes Autoscaler增加對百度云容器引擎CCE的支

原標(biāo)題:Kubernetes Autoscaler增加對百度云容器引擎CCE的支

在眾多企業(yè)的容器化應(yīng)用和實踐中,彈性伸縮一直是個很重要的話題。受益于容器本身輕量級、快速啟動的特性,容器化應(yīng)用的規(guī)模部署變得愈發(fā)靈活彈性。

那么容器集群的運維者就會問到:我應(yīng)該保持多大的節(jié)點規(guī)模來滿足應(yīng)用隨時變化的資源需求?能否讓集群所占用的底層資源也隨著應(yīng)用規(guī)模的變化而靈活縮放呢?

Cluster-Autoscaler(后文中將簡稱為CA) 就是Kubernetes中用于解決以上疑問的組件,它幫助用戶實現(xiàn)了容器集群規(guī)模的動態(tài)伸縮,能夠自動根據(jù)部署的應(yīng)用所請求的資源量來維持集群大小,當(dāng)集群資源過剩時自動釋放部分資源,當(dāng)資源不足時完成資源的申請并將其加入集群。CA一方面提高了底層資源的利用率,為企業(yè)節(jié)約成本。另一方面也大大降低了人力運維集群的負(fù)擔(dān)。

百度云獲得社區(qū)官方支持

CA組件雖然是Kubernetes社區(qū)的開源組件,但并不意味著將它部署在集群內(nèi)就可以正常開始工作。因為CA的工作涉及到集群節(jié)點信息的查詢、節(jié)點的創(chuàng)建和釋放等, CA需要與底層資源平臺提供的接口進行交互,而這些接口通常是由不同的云廠商提供的,因此將CA應(yīng)用到不同云平臺往往需要大量的改造工作。

在此之前,Kubernetes社區(qū)官方只支持部分云平臺,本次加入對百度云容器引擎CCE的支持,使百度云成為國內(nèi)第二個得到Kubernetes Autoscaler官方支持的云廠商。這意味著用戶在使用百度云容器引擎CCE時,可以無縫體驗CA組件帶來的靈活和彈性,無需關(guān)心底層資源的差異性。

除了彈性伸縮以外,百度云容器團隊一直以來都在積極參與開源社區(qū)的重要項目,從Kubernetes v0.8版本推出之際就開始進行生產(chǎn)級別的實踐,是國內(nèi)Kubernetes容器技術(shù)的最早踐行者之一。

2018年百度云繼續(xù)與開源社區(qū)保持良好的合作,為Kubernetes主庫提交總共25個PullRequest,合入14個,主要集中在scheduler、auto-scaling等模塊。同時成為Kubernetes子項目kube-batchd的Maintainer,并在LinuxCon和KubeCon上對paddle-k8s-operator和kube-batchd項目進行主題演講。

百度云今年在開源領(lǐng)域發(fā)布了兩個云提供商:cloud-provider-baiducloud與cluster-api-provider-baiducloud,為整合入Kubernetes主庫進行準(zhǔn)備,同時百度云CCE已經(jīng)在2018年年初正式通過Kubernetes公有云統(tǒng)一化認(rèn)證。

CCE自動擴縮容功能

基于Kubernetes CA組件,CCE為用戶提供了便捷的自動擴縮容功能,使得該組件的使用更加便捷。用戶可以在集群詳情中找到自動擴縮容的開關(guān),如下圖所示:

如果需要使用自動擴縮容的能力只需要將開關(guān)打開,然后設(shè)置擴縮容的節(jié)點數(shù)范圍即可。打開之后,CCE的自動擴縮容會啟用集群中的CA組件,并依靠CA組件在資源不足或者過剩時自動創(chuàng)建和釋放集群中的BCC節(jié)點。

所有打開了自動擴縮容功能的集群,CCE都將在集群名稱右下角進行標(biāo)識,以便用戶區(qū)分。需要注意的是自動擴縮容可能會觸發(fā)節(jié)點釋放的操作,將會同步釋放節(jié)點關(guān)聯(lián)的后付費公網(wǎng)IP和云磁盤,因此在開啟該功能之前,請務(wù)必閱讀相關(guān)文檔,以避免縮容造成的業(yè)務(wù)數(shù)據(jù)損失。

在現(xiàn)有功能基礎(chǔ)上,CCE還會繼續(xù)對自動擴縮容能力進行擴展,未來將支持更加豐富的擴縮容策略,用戶可以靈活地自定義擴容時使用的節(jié)點配置,并在縮容時對可能有持久化存儲的資源進行保護。

實現(xiàn)原理與技術(shù)細(xì)節(jié)

在開啟CCE的自動擴縮容功能后,當(dāng)pod由于資源不足而調(diào)度失敗,即有pod一直處于Pending狀態(tài)時,CA會采取擴容操作;當(dāng)node的資源利用率較低時,且此node上存在的pod都能被重新調(diào)度到其他node上運行時,CA會采取縮容操作。如果你的集群同時也啟用了HPA(Horizontal Pod Autoscaling,是k8s中pod的水平自動擴展),那么CA也能與HPA協(xié)同工作,例如:當(dāng)CPU負(fù)載增加,HPA擴容pod,如果此pod因為資源不足無法被調(diào)度,則此時CA會擴容節(jié)點。當(dāng)CPU負(fù)載減小,HPA減少pod,CA發(fā)現(xiàn)有節(jié)點資源利用率低甚至已經(jīng)是空時,CA就會刪除此節(jié)點。

Kubernetes的CA組件由以下幾個模塊組成:

  • CA autoscaler:核心模塊,負(fù)責(zé)整體擴縮容功能
  • Estimator:負(fù)責(zé)評估計算擴容節(jié)點
  • Simulator:負(fù)責(zé)模擬調(diào)度,計算縮容節(jié)點
  • CA Cloud-Provider:與云交互進行節(jié)點的增刪操作。

其中CA Cloud-Provider部分每個云廠商的實現(xiàn)都不一樣,基于百度云的實現(xiàn)在這筆PR中被合入了Kubernetes autoscaler開源庫。

CA組件的整體架構(gòu)如下圖所示:

其中CA與百度云CCE相關(guān)的適配通過以下模塊實現(xiàn):

  • CCE Manager:CCE Cluster-Autoscaler的中控模塊,初始化各項配置,開啟定時器緩存擴縮容相關(guān)信息
  • ASG-Cache:緩存擴縮容各項配置
  • CloudProvider:能夠獲得集群內(nèi)所有節(jié)點的相關(guān)信息,用戶配置的擴縮容相關(guān)信息
  • NodeGroup:能夠根據(jù)擴縮容的估算結(jié)果,安全的擴容集群或者縮容集群
  • Cloud-SDK:對BCE中BCC、CCE的OpenAPI的封裝,用于下單擴容集群、刪除空閑節(jié)點、查詢集群節(jié)點信息等

如果你也認(rèn)為自動擴縮容的功能會為你的容器化架構(gòu)帶來幫助的話,請登錄百度云CCE服務(wù)網(wǎng)站或關(guān)注百度云微信公眾號了解更多。

極客網(wǎng)企業(yè)會員

免責(zé)聲明:本網(wǎng)站內(nèi)容主要來自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準(zhǔn)確性及可靠性,但不保證有關(guān)資料的準(zhǔn)確性及可靠性,讀者在使用前請進一步核實,并對任何自主決定的行為負(fù)責(zé)。本網(wǎng)站對有關(guān)資料所引致的錯誤、不確或遺漏,概不負(fù)任何法律責(zé)任。任何單位或個人認(rèn)為本網(wǎng)站中的網(wǎng)頁或鏈接內(nèi)容可能涉嫌侵犯其知識產(chǎn)權(quán)或存在不實內(nèi)容時,應(yīng)及時向本網(wǎng)站提出書面權(quán)利通知或不實情況說明,并提供身份證明、權(quán)屬證明及詳細(xì)侵權(quán)或不實情況證明。本網(wǎng)站在收到上述法律文件后,將會依法盡快聯(lián)系相關(guān)文章源頭核實,溝通刪除相關(guān)內(nèi)容或斷開相關(guān)鏈接。

2019-01-25
Kubernetes Autoscaler增加對百度云容器引擎CCE的支
這意味著用戶在使用百度云容器引擎CCE時,可以無縫體驗CA組件帶來的靈活和彈性,無需關(guān)心底層資源的差異性。

長按掃碼 閱讀全文