設想你是一個(gè)應用開(kāi)發(fā)人員,編寫(xiě)業(yè)務(wù)代碼是你的主業(yè),應用需要多少資源,往往通過(guò)壓測決定,這導致非業(yè)務(wù)高峰期時(shí)段巨大的資源浪費。正好,社區和公司都在積極推動(dòng)云原生,聲稱(chēng)可以利用其強大的調度和彈性解決資源浪費問(wèn)題。你興致勃勃的擁抱云原生,但最終發(fā)現,云原生業(yè)務(wù)的資源配置,同樣還是需要壓測這種傳統而手工的方式。
又比如你是一個(gè)平臺側運維人員,你背負著(zhù)提升平臺資源利用率的 KPI。集群內運行著(zhù)眾多負載規律波動(dòng)的應用,你驚喜的發(fā)現,Kubernetes 提供了自動(dòng)擴容能力,你很想試試看。但真正使用了HPA,從負載上升觸發(fā)閾值,到彈性控制器開(kāi)始擴容,到應用啟動(dòng)完成,可能有數分鐘甚至數十分鐘的滯后,在彈性起作用之前,應用已經(jīng)被壓垮。于是你拋棄自動(dòng)彈性能力,繼續回歸到鎖定超量資源的老路上來(lái)。
研發(fā)人員到底能否從資源配置的深淵中解脫出來(lái),是否能讓彈性能力高效實(shí)用?于是你帶著(zhù)問(wèn)題去社區尋找答案。你發(fā)現將應用代碼和基礎架構徹底分離的 Serverless 技術(shù)似乎是一個(gè)選項,但是隨著(zhù)深入了解你發(fā)現,Serverless 只是一個(gè)概念,不是一個(gè)標準,由于完全拋棄了服務(wù)器,底層自主可控和性能優(yōu)化能力完全喪失;另一類(lèi)是以谷歌 Autopilot 集群為首的資源托管類(lèi)集群,這類(lèi)集群應該滿(mǎn)足你的訴求,但它平臺綁定并且需要付費。
我們決定改變現狀,我們在對騰訊內部業(yè)務(wù)做成本優(yōu)化時(shí)積累了眾多經(jīng)驗,結合資源預測、智能彈性和全構混部能力,在不犧牲穩定性的前提下,將集群峰值利用率提升到了50%以上,下圖是優(yōu)化的效果。我們期待與社區同道一起優(yōu)化應用資源配置和彈性的共性問(wèn)題,于是我們給大家一個(gè)不重造輪子的可能,選擇了開(kāi)源。

圖1:Crane 在大規模場(chǎng)景下的優(yōu)化效果
Crane 的誕生:首款企業(yè)成本優(yōu)化的開(kāi)源工具
為推進(jìn)云原生用戶(hù)在確保業(yè)務(wù)穩定性的基礎上做到真正的極致降本,騰訊推出了國內第一個(gè)基于云原生技術(shù)的成本優(yōu)化開(kāi)源項目 Crane( Cloud Resource Analytics and Economics )。Crane 遵循 FinOps 標準,旨在為云原生用戶(hù)提供云成本優(yōu)化一站式解決方案。
當前 Crane 項目主要貢獻者包括有騰訊、小紅書(shū)、谷歌、eBay、微軟、特斯拉等知名公司的行業(yè)專(zhuān)家。
(Crane 開(kāi)源項目地址:https://github.com/gocrane/crane/)
符合 FinOps 標準的 Crane 成本優(yōu)化工具能力模型
Crane 是騰訊內部云資源優(yōu)化流程方法和工具的系統性輸出,同時(shí),Crane 核心能力的構建與規劃均與 FinOps 基金會(huì )提出的能力模型完全契合。

圖2:Crane 能力模型

圖片圖3:Crane 架構
Crane 致力于推薦資源和智能彈性配置,業(yè)務(wù)人員無(wú)需再為業(yè)務(wù)需要多少資源,自動(dòng)擴縮容應該如何配置等問(wèn)題而煩惱,Crane 會(huì )基于業(yè)務(wù)的時(shí)序變動(dòng)數據給出最優(yōu)解。
一鍵部署
Crane 保持平臺獨立,通過(guò)一個(gè) Helm 包將 Crane 安裝至任意 Kubernetes 集群,無(wú)論云上還是云下,即可享受一站式資源優(yōu)化能力。Crane 侵入性小,核心組件包括集中控制器 craned 和節點(diǎn)代理 crane agent,你可以自由組合安裝,通過(guò) featureGate 選擇開(kāi)啟哪些能力。
簡(jiǎn)單易用可視化控制臺
為降低使用門(mén)檻,Crane 提供內置控制臺,用戶(hù)可基于控制臺查看成本分配,成本走勢,并通過(guò)鼠標點(diǎn)擊實(shí)現成本優(yōu)化。所有能力均提供灰度控制和預覽模式,以及回滾的能力,以消除業(yè)務(wù)側對資源變動(dòng)的顧慮。
開(kāi)箱即用的巡檢能力
Crane 可以全局掃描整體浪費情況,將隱藏浪費可視化的呈現出來(lái),使運維人員免除拉取監控數據,編寫(xiě)查詢(xún)腳本等重復性工作。
優(yōu)化方案包含對成本變化的展示,對利用率變化的展示,可能的風(fēng)險點(diǎn),甚至是優(yōu)化建議的排序。因為我們相信,每個(gè)業(yè)務(wù)都是獨一無(wú)二的,都有其最適合的優(yōu)化方案,不能一概而論。
即時(shí)迅速的彈性 (EffectivePodAutoscaler(EPA))
傳統基于事件的彈性工具會(huì )導致一個(gè)天然缺陷——當業(yè)務(wù)指標偏離正常值后才會(huì )觸發(fā)彈性,這種滯后性使得云用戶(hù)不敢使用彈性。EPA 支持可擴展的預測算法,以預測結果驅動(dòng)橫向和縱向彈性,確保業(yè)務(wù)能提前彈出來(lái),徹底避免原生彈性能力未彈先死的尷尬。同時(shí) Crane 將社區的 HPA 和 VPA 兩種彈性能力統一起來(lái),提出了彈性概念 EPA。

提前擴容
穩定性與資源優(yōu)化的雙重兼
Crane 對資源利用率的提升,絕不是以犧牲穩定性作為代價(jià)。Crane 允許用戶(hù)對業(yè)務(wù)進(jìn)行定級,節點(diǎn)代理負責周期性檢查節點(diǎn)資源水位和系統指標,識別應用干擾,并通過(guò)調度禁止,調整 cgroup,驅逐等多種手段確保敏感業(yè)務(wù)服務(wù)等級不受損。
Crane 現狀與未來(lái)
當前 Crane 已發(fā)布0.2.0版本,具備了資源推薦,彈性推薦,智能彈性和穩定性增強等核心能力,更多開(kāi)發(fā)計劃請參考里程碑[1]。來(lái)源:騰訊云原生