前言
這段時間有幸參與了一下騰訊Finops Crane集訓營的Crane公開體驗訓練營。
這不,給大家寫一篇實戰(zhàn)記錄。
一、Crane是什么?
如下圖所示,可以看到Crane的詳細介紹:
簡單的來說,就是在云原生技術(shù)不斷發(fā)展和普及的大背景下,這是國內(nèi)第一個基于云原生技術(shù)的成本優(yōu)化項目,它遵循了FinOps標準,并且已經(jīng)獲得FinOps基金會授予的全球首個認證降本增效開源方案。
Crane項目的設(shè)計初衷是為了幫助企業(yè)更好地管理和擴展其Kubernetes集群,從而實現(xiàn)更高效的云原生應用管理。
這里給大家上活動鏈接:Crane活動地址
如果有技術(shù)大佬感興趣這個Crane,也歡迎去Github找到并研究!
直達鏈接如下:https://github.com/gocrane/crane
Crane目前呢已經(jīng)在騰訊內(nèi)部自研業(yè)務(wù)實現(xiàn)了大規(guī)模落地,部署數(shù)百個 K8s 集群、管控 CPU 核數(shù)達百萬,在降本增效方面取得了階段性成果。
例如騰訊某部門通過使用 FinOps Crane,該部門在保障業(yè)務(wù)穩(wěn)定的情況下,資源利用率提升了 3 倍;騰訊某個另一自研業(yè)務(wù)落地 Crane 后,在一個月內(nèi)實現(xiàn)了總 CPU 規(guī)模 40 萬核的節(jié)省量,相當于成本節(jié)約超 1000 萬元/月。
接下來我們就從3個階段部分來講述該Crane的真正作用!
Crane的主要功能?
- 支持使用多種容器編排引擎來管理容器應用程序的生命周期,包括Docker、Kubernetes。
- 提供簡便上手的方式來構(gòu)建、發(fā)布容器鏡像,支持使用模板和插件來自定義構(gòu)建流程。
- 提供集成的監(jiān)控和日志記錄功能,可以幫助開發(fā)者及時發(fā)現(xiàn)和解決應用程序的問題。
- 可以將多個容器組合成一個完整的應用程序,提供靈活的網(wǎng)絡(luò)和存儲選項,以便更好管理和擴展應用程序。
- 使用簡潔明了的配置文件格式來管理容器應用程序的配置,支持使用環(huán)境變量和參數(shù)來動態(tài)配置應用程序。
- 提供成本可視化和優(yōu)化評估,多維度的成本洞察,優(yōu)化評估。通過 Cloud Provider 支持多云計費。
- 基于 QOS 的混部,QOS相關(guān)能力保證了運行在 Kubernetes 上的 Pod 的穩(wěn)定性。具有多維指標條件下的干擾檢測和主動回避能力,支持精確操作和自定義指標接入;具有預測算法增強的彈性資源超賣能力,復用和限制集群內(nèi)的空閑資源;具備增強的旁路cpuset管理能力,在綁核的同時提升資源利用效率。
FinOps 是什么
FinOps是一種管理云計算成本的方法論,它結(jié)合了財務(wù)和技術(shù)團隊的知識,旨在通過優(yōu)化資源使用,降低云計算成本,提高業(yè)務(wù)效率和靈活性。FinOps的目標是通過透明度、責任分配和協(xié)作來確保云計算的成本與業(yè)務(wù)價值之間的平衡。
FinOps框架通常包括以下幾個方面:
- 費用可見性:通過監(jiān)控和分析云資源的使用情況,以及對不同部門和項目的費用進行分類,以確保所有人都能看到云計算成本的實際情況。
- 責任分配:通過為每個部門或項目分配云計算成本,促進各個團隊對資源使用和成本的責任感,從而鼓勵更加負責任的行為。
- 成本優(yōu)化:通過分析使用情況和歷史數(shù)據(jù),以及使用自動化工具和最佳實踐來優(yōu)化資源的使用,從而最大程度地降低云計算成本。
- 協(xié)作和文化:通過建立文化和實踐,鼓勵各個團隊之間的協(xié)作,以便更好地管理云計算成本。
Prometheus是什么
Prometheus是一個開源的系統(tǒng)監(jiān)控和報警系統(tǒng),一種在大規(guī)模分布式系統(tǒng)中進行度量、收集和聚合數(shù)據(jù)的標準方法。Prometheus使用一種稱為PromQL的自定義查詢語言來查詢和分析收集的數(shù)據(jù),并提供了圖形化的Web界面和API。
Grafana是什么
Grafana是一個流行的開源數(shù)據(jù)可視化和監(jiān)控平臺。它可以連接多個數(shù)據(jù)源,包括Prometheus、InfluxDB、Elasticsearch、MySQL等,并使用圖表、儀表盤、警報等工具進行數(shù)據(jù)可視化和分析。
二、不得不面對的問題:云上資源效能挑戰(zhàn)!
通過騰訊的如下資料圖所示,在2022年云計算市場發(fā)展狀態(tài)報告中顯示,32%的云支出被浪費了。
那么在后云原生時代的成本管理挑戰(zhàn)又有哪些呢?可以詳細來看看一下幾個:
- 去中心化:隨著以Kubernetes為核心的云原生應用的蓬勃發(fā)展,傳統(tǒng)的集中式財務(wù)預算和IT管理模式在向以業(yè)務(wù)為導向的分布式?jīng)Q策轉(zhuǎn)型。
- 不斷上漲:NCF調(diào)查顯示,隨著業(yè)務(wù)的快速發(fā)展,企業(yè)的云費用以24%的年增長率快速增加。(這個問題是不容忽視的,企業(yè)的云費用逐年上漲,也就務(wù)必引導出了降本增效的理念和趨勢?。?/li>
- 動態(tài)變化:云原生的動態(tài)環(huán)境和彈性能力導致云費用隨業(yè)務(wù)負載不斷變化。
- 浪費嚴重:業(yè)務(wù)上云以后缺乏資源優(yōu)化意識,依然以傳統(tǒng)資源配置思維管理資源,浪費嚴重。這一點也是至關(guān)重要的,所以我們真的很需要降本增效。
三、云原生場景下的成本優(yōu)化挑戰(zhàn)?
首先我們介紹一些常見的成本優(yōu)化思路與常用手段:
同時也需要了解成本構(gòu)成是什么:
那么總的來說,云成本管理的核心是什么呢?
就是在保障業(yè)務(wù)的前提下,最小化的資源需求。
四、K8s原生能力的不足
現(xiàn)在云原生時代下,很多業(yè)務(wù)需求是直接使用K8s直接上手管控的,但是K8s也存在一定的不足,如下圖所示:
五、Crane智能調(diào)度助力成本優(yōu)化
首先我們來看看Crane的架構(gòu)圖:
-
Craned:
Craned 是 Crane 的最核心組件,它管理了 CRDs 的生命周期以及API。Craned 通過 Deployment 方式部署且由兩個容器組成:
Craned: 運行了 Operators 用來管理 CRDs,向 Dashboard 提供了 WebApi,Predictors 提供了 TimeSeries API。
Dashboard: 基于 TDesign’s Starter 腳手架研發(fā)的前端項目,提供了易于上手的產(chǎn)品功能。 -
Fadvisor
Fadvisor 提供一組 Exporter 計算集群云資源的計費和賬單數(shù)據(jù)并存儲到你的監(jiān)控系統(tǒng),比如 Prometheus。Fadvisor 通過 Cloud Provider 支持了多云計費的 API。 -
Metric Adapter
Metric Adapter 實現(xiàn)了一個 Custom Metric Apiserver. Metric Adapter 讀取 CRDs 信息并提供基于 Custom/External Metric API 的 HPA Metric 的數(shù)據(jù) -
Crane Agent 通過 DaemonSet 部署在集群的節(jié)點上。
那么如何進行降本之旅呢?方法有下面幾個:
?從監(jiān)控系統(tǒng)拉取用量數(shù)據(jù)
?從Kubernetes平臺拉取作業(yè)配置信息
?從云廠商計費API拉取資源單價
?通過多種算法分析成本組成并給出優(yōu)化建議
使用場景一:成本可視化
通過Crane,我們可以進行成本展示與預測,也可以進行基于預測的趨勢分析。
還能進行成本和浪費識別:即與計費API整合的費用展示。
同時也是國內(nèi)首個云原生碳排放計算機
除此之外,還能進行靈活的匯聚維度,例如:按部門、項目、應用類型等等。
場景二:規(guī)格推薦
首先Crane是可聲明的,為指定命名空間,工作負載類型給出推薦值。
同時支持基于可配置的算法,例如
- 需要動態(tài)調(diào)整場景:指數(shù)桶+半衰期
- 靜態(tài)推薦場景:均衡桶+無半衰期
- 余量 Margin或目標利用率
首先進行控制臺點擊完成滾動升級。
然后進行成本左移與自動化控制。
最后就可以看到規(guī)格推薦成果了!
場景三:智能預測與自動擴容
Crane可以進行提前擴容,根據(jù)時間序列算法(如FFT快速傅里葉變化)、取預測窗口最大值:提前擴容、還能基于Custom Metric、metric兜底保護實現(xiàn)該功能。
同時Crane支持Cron配置,也就是應對大促節(jié)假日等有規(guī)律的流量洪峰。
最后就可以預測到彈性效果了,如下:
六、落地成效
?在騰訊內(nèi)部自研業(yè)務(wù)大規(guī)模落地
?部署至數(shù)百個Kubernetes集群
?管控數(shù)百萬CPU核
?全面上線2個月內(nèi),大盤總核數(shù)縮減25%
?在網(wǎng)易新聞落地
?管控數(shù)WCPU核
?全面上線2個月內(nèi),大盤總核數(shù)縮減11%
?下線30臺56C物理機,每個月節(jié)省10W
七、實戰(zhàn)部署及使用
- 安裝kubectl
curl.exe -LO "https://dl.k8s.io/release/v1.27.1/bin/windows/amd64/kubectl.exe"
- 安裝Helm
choco install kubernetes-helm
- 安裝kind(一般情況下順便安裝了Docker)
choco install kind
- 安裝Crane及其相關(guān)普羅米修斯 Grafana依賴
curl -sf https://raw.githubusercontent.com/gocrane/crane/main/hack/local-env-setup.sh | sh -
- 查看Pod情況(Pod 啟動需要等待時間)
$ export KUBECONFIG=${HOME}/.kube/config_crane
$ kubectl get pod -n crane-system
NAME READY STATUS RESTARTS AGE
craned-8cks5c939f-kkfhv 2/2 Running 0 3m36s
fadvisor-5b92cdfvq98b6-xqhfs 1/1 Running 0 3m47s
grafana-33pov56f6y54-4jks6 1/1 Running 0 3m29s
metric-adapter-967c6d57f-so9vv 1/1 Running 0 4m11s
prometheus-kube-state-metrics-7k9d6s8fdvc-qql9c 1/1 Running 0 3m42s
prometheus-server-pvl64f4b7-47dvu 2/2 Running 0 3m38s
- 訪問Crane Dashboard
kubectl -n crane-system port-forward service/craned 9090:9090
- 注意每個操作在新端口操作時都必須如下命令(進行環(huán)境變量)
export KUBECONFIG=${HOME}/.kube/config_crane
八、使用方向建議
總的來說Crane是一款多用途工具,可用于DevOps自動化流程,幫助開發(fā)團隊高效構(gòu)建、測試和部署應用程序。此外,Crane還可用于構(gòu)建和管理云原生應用程序,這些應用程序通常是分布式、可擴展和高可用的。最后,Crane還可用于大規(guī)模集群的部署和管理,例如使用Kubernetes等容器編排引擎管理的集群,對于容器化微服務(wù),Crane也是一個理想的管理工具,可幫助開發(fā)者更輕松地部署、升級和管理微服務(wù)架構(gòu)。。
總結(jié):寫在后面的話
關(guān)于騰訊云 Finops Crane 集訓營:
Finops Crane集訓營主要面向廣大開發(fā)者,旨在提升開發(fā)者在容器部署、K8s層面的動手實踐能力,同時吸納Crane開源項目貢獻者,鼓勵開發(fā)者提交issue、bug反饋等,并搭載線上直播、動手實驗組隊、有獎?wù)魑牡认盗屑夹g(shù)活動。既能讓開發(fā)者通過活動對 Finops Crane 開源項目有深入了解,同時也能幫助廣大開發(fā)者在云原生技能上有實質(zhì)性收獲。
為獎勵開發(fā)者,我們特別設(shè)立了積分獲取任務(wù)和對應的積分兌換禮品。
活動介紹送門:https://marketing.csdn.net/p/038ae30af2357473fc5431b63e4e1a78文章來源:http://www.zghlxwxcb.cn/news/detail-455106.html
開源項目: https://github.com/gocrane/crane文章來源地址http://www.zghlxwxcb.cn/news/detail-455106.html
到了這里,關(guān)于【騰訊云Finops Crane集訓營】降本增效神器Crane實戰(zhàn)記錄的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!