Robusta KRR – 一個優(yōu)化 Kubernetes 的資源分配工具_(dá)全球時訊
2023-05-31 19:36:19 來源:清一色財經(jīng)
如果你使用 Robusta SaaS,從 v0.10.15 開始回集成 KRR,你可以查看所有建議(也包括以前的建議),按集群、命名空間或名稱過濾和排序它們。
Robusta KRR(Kubernetes Resource Recommender)是一個用于優(yōu)化 Kubernetes 集群中資源分配的命令行工具,它從 Prometheus 收集 pod 使用數(shù)據(jù),并建議 CPU 和內(nèi)存的 requests 和 limits 值,這可以大大降低成本并提高性能。
(資料圖片)
特征
無需代理:Robusta KRR 是一個在本地機(jī)器上運行的 CLI 工具,它不需要在你的集群中運行 Pods。Prometheus 集成:使用內(nèi)置的 Prometheus 查詢收集資源使用數(shù)據(jù),自定義查詢支持也即將推出??蓴U(kuò)展策略:輕松創(chuàng)建和使用你自己的策略來計算資源推薦。未來支持:即將推出的版本將支持自定義資源(例如 GPU)和自定義指標(biāo)。根據(jù) Sysdig 最近的一項研究(https://sysdig.com/blog/millions-wasted-kubernetes/),平均而言,Kubernetes 集群有:
69%未使用的 CPU18%未使用內(nèi)存通過使用 KRR 調(diào)整容器大小,你可以平均節(jié)省 69% 的云成本。
如果你使用 Robusta SaaS,從v0.10.15開始回集成 KRR,你可以查看所有建議(也包括以前的建議),按集群、命名空間或名稱過濾和排序它們。
工作原理
指標(biāo)收集
Robusta KRR 使用以下 Prometheus 查詢來收集使用數(shù)據(jù):
CPU 使用:sum(irate(container_cpu_usage_seconds_total{{namespace=”{object.namespace}”, pod=”{pod}”, cnotallow=”{object.container}”}}[{step}]))。內(nèi)存使用:sum(container_memory_working_set_bytes{job=”kubelet”, metrics_path=”/metrics/cadvisor”, image!=””, namespace=”{object.namespace}”, pod=”{pod}”, cnotallow=”{object.container}”})。算法
默認(rèn)情況下,KRR 使用一個簡單的策略來計算資源推薦。它的計算方法如下(確切的數(shù)字可以在 CLI 參數(shù)中自定義):
對于 CPU,將請求設(shè)置為第 99 個百分位數(shù),并且沒有限制。這意味著,在 99%的情況下,您的 CPU 請求是足夠的。對于剩余的 1%,我們沒有設(shè)置限制。這意味著您的 Pod 可以突發(fā)并使用節(jié)點上可用的任何 CPU – 例如其他 Pod 請求但現(xiàn)在未使用的 CPU。對于內(nèi)存,使用過去一周內(nèi)最大值并添加 5%緩沖區(qū)。安裝使用
MacOS/Linux 用戶可以使用 brew 進(jìn)行一鍵安裝:
brew tap robusta-dev/homebrew-krrbrew install krr
安裝完成后可以執(zhí)行下面的命令來檢查是否安裝成功:
krr --help # 第一次可能會花較長時間
如果想要手動進(jìn)行安裝,則首先確保在你的機(jī)器上安裝了 Python 3.9 或以上版本。然后 Clone 代碼:
git clone https://github.com/robusta-dev/krrcd krr
安裝依賴:
pip install -r requirements.txt
最后,運行下面的命令來運行工具:
python krr.py --help
請注意,使用源代碼需要您作為 python 腳本運行,當(dāng)使用 brew 安裝時允許運行 krr。以上所有示例都將運行命令顯示為krr …,如果您使用的是手動安裝,請將其替換為python krr.py …。
安裝完成后就可以來使用 KRR 工具了,比如可以運行一個簡單的策略:
krr simple
如果你只需要特定的命名空間(default和ingress-nginx):
krr simple -n default -n ingress-nginx
默認(rèn)情況下,krr 將在當(dāng)前上下文中運行,如果你想在不同的上下文中運行它:
krr simple -c my-cluster-1 -c my-cluster-2
如果想獲得 JSON 格式的輸出(需要–logtostderr,這樣就不會將日志轉(zhuǎn)到結(jié)果文件):
krr simple --logtostderr -f json > result.json
如果你想獲得 YAML 格式的輸出:
krr simple --logtostderr -f yaml > result.yaml
如果您想查看其他調(diào)試日志:
krr simple -v
關(guān)于策略設(shè)置的更多信息,可以通過以下方式找到:
krr simple --help
默認(rèn)情況下,KRR 將嘗試通過掃描下面的這些標(biāo)簽來自動發(fā)現(xiàn)正在運行的 Prometheus:
"app=kube-prometheus-stack-prometheus""app=prometheus,compnotallow=server""app=prometheus-server""app=prometheus-operator-prometheus""app=prometheus-msteams""app=rancher-monitoring-prometheus""app=prometheus-prometheus"
如果這些標(biāo)簽都沒有找到 Prometheus,則將收到錯誤消息,那么就必須顯式傳遞 url 了(使用-p標(biāo)志)。
如果你的 prometheus 沒有自動連接,我們可以使用kubectl port-forward手動轉(zhuǎn)發(fā) Prometheus。
例如有一個名為kube-prometheus-st-prometheus-0的 Prometheus Pod,則我們可以下面的命令對其進(jìn)行端口轉(zhuǎn)發(fā):
kubectl port-forward pod/kube-prometheus-st-prometheus-0 9090
然后,打開另一個終端并在其中運行krr,給出一個顯式的 prometheus url:
krr simple -p http://127.0.0.1:9090
此外我們還可以根據(jù)自己的需求來創(chuàng)建自定義的策略,比如下面的代碼就是創(chuàng)建一個自定義的策略:
# This is an example on how to create your own custom strategyimport pydantic as pdimport robusta_krrfrom robusta_krr.api.models import HistoryData, K8sObjectData, ResourceRecommendation, ResourceType, RunResultfrom robusta_krr.api.strategies import BaseStrategy, StrategySettings# Providing description to the settings will make it available in the CLI helpclass CustomStrategySettings(StrategySettings): param_1: float = pd.Field(99, gt=0, descriptinotallow="First example parameter") param_2: float = pd.Field(105_000, gt=0, descriptinotallow="Second example parameter")class CustomStrategy(BaseStrategy[CustomStrategySettings]): """ A custom strategy that uses the provided parameters for CPU and memory. Made only in order to demonstrate how to create a custom strategy. """ def run(self, history_data: HistoryData, object_data: K8sObjectData) -> RunResult: return { ResourceType.CPU: ResourceRecommendation(request=self.settings.param_1, limit=None), ResourceType.Memory: ResourceRecommendation(request=self.settings.param_2, limit=self.settings.param_2), }# Running this file will register the strategy and make it available to the CLI# Run it as `python ./custom_strategy.py my_strategy`if __name__ == "__main__": robusta_krr.run()
GitHub 地址:https://github.com/robusta-dev/krr
關(guān)鍵詞:
推薦內(nèi)容
- Robusta KRR – 一個優(yōu)化 Kubernetes 的資源
- 南寧市扎實推進(jìn)“無廢城市”建設(shè)|全球今亮點
- 29元買一箱,鮮花電商大洗牌
- 昆明再次上榜“新一線”城市,靠的是……-全球速訊
- 濟(jì)南高新區(qū)新時代文明實踐中心開課啦!合唱、讀書
- 山西成功集團(tuán)多元布局開拓市場_環(huán)球短訊
- 天天短訊!水潤嘉魚 一幅國畫
- 武漢經(jīng)開區(qū)第三中學(xué)在中國中學(xué)生武術(shù)錦標(biāo)賽中取得
- 世界無煙日,洪山無煙宣傳進(jìn)校園
- 極目銳評|山東砍柯基男子被曝任職公益崗且“只拿
- 相差54歲的“爺孫戀”:曾獲奧斯卡金像獎的83歲演
- 中泰策略:六月金股 當(dāng)前播報
- 今日熱門!?AI重磅!百度宣布:“國內(nèi)首只”,規(guī)模
- 溫州港內(nèi)外理智能一體化系統(tǒng)上線_天天新消息
- 常州海事局職工參加2023“一袋牛奶的暴走”公益活動
- nec售后網(wǎng)_nec售后
- 廣東進(jìn)一步完善居民階梯電價“一戶多人口”政策有
- 今年第三只!鵬揚旗下新基金發(fā)行失敗!
- 聚人氣促消費 四川文旅發(fā)布一批新政策、新場景、
- 人民日報報道寧都:夢想起飛的地方-世界熱消息
- 愛吃辣的人食道癌風(fēng)險更低-全球今熱點
- 動態(tài):現(xiàn)場視頻!張店一小區(qū)突發(fā)
- 全球今亮點!湖北開展涉企違規(guī)收費整治行動 助力
- “典”亮生活 伴民同行 2023年荊楚普法云課堂進(jìn)
- 今日快看!打卡中國·讀懂中國式現(xiàn)代化(遼寧篇)|
- 打卡中國·讀懂中國式現(xiàn)代化(遼寧篇)丨本鋼集團(tuán)
- 打卡中國·讀懂中國式現(xiàn)代化(遼寧篇)| 華晨寶
- 中國星辰 | 天宮再“會師” 對接新挑戰(zhàn) 交接
- 世界視訊!中國星辰 | 突破難點!這些“黑科技
- 【天天快播報】重罰!萬億城商行多次卷入財務(wù)造假
- 熱消息:北向資金今日凈賣出37.98億元,寒武紀(jì)凈
- 恒大財富:本月可用兌付資金不足 無法按原標(biāo)準(zhǔn)兌
- 關(guān)注顏值“頭等大事” 人民健康(頭皮健康)高質(zhì)
- 世界觀熱點:石首派出所熱心救助一名流浪人員
- 蝦峙南錨地船員受傷血流不止 寧波舟山港拖輪緊急
- 世界速讀:常州海事局聯(lián)合長航公安開展水上知識科
- 天天熱議:長航南通公安送上防溺水安全教育課
- 寧波港航與吳愛圖愛心慈善基金聯(lián)合開展資助困難學(xué)
- 記者踏訪高速施工現(xiàn)場⑤丨石廟特大橋即將瀝青攤鋪
- 6月1日武昌騰訊大道與文化大道交叉口計劃施工停水