成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Robusta KRR - 一個優化 Kubernetes 的資源分配工具

云計算 云原生
如果你使用 Robusta SaaS,從 v0.10.15 開始回集成 KRR,你可以查看所有建議(也包括以前的建議),按集群、命名空間或名稱過濾和排序它們。

Robusta KRR(Kubernetes Resource Recommender)是一個用于優化 Kubernetes 集群中資源分配的命令行工具,它從 Prometheus 收集 pod 使用數據,并建議 CPU 和內存的 requests 和 limits 值,這可以大大降低成本并提高性能。

圖片

特征

  • 無需代理:Robusta KRR 是一個在本地機器上運行的 CLI 工具,它不需要在你的集群中運行 Pods。
  • Prometheus 集成:使用內置的 Prometheus 查詢收集資源使用數據,自定義查詢支持也即將推出。
  • 可擴展策略:輕松創建和使用你自己的策略來計算資源推薦。
  • 未來支持:即將推出的版本將支持自定義資源(例如 GPU)和自定義指標。

根據 Sysdig 最近的一項研究(https://sysdig.com/blog/millions-wasted-kubernetes/),平均而言,Kubernetes 集群有:

  • 69%未使用的 CPU
  • 18%未使用內存

通過使用 KRR 調整容器大小,你可以平均節省 69% 的云成本。

如果你使用 Robusta SaaS,從 v0.10.15 開始回集成 KRR,你可以查看所有建議(也包括以前的建議),按集群、命名空間或名稱過濾和排序它們。

圖片

工作原理

指標收集

Robusta KRR 使用以下 Prometheus 查詢來收集使用數據:

  • CPU 使用:sum(irate(container_cpu_usage_seconds_total{{namespace="{object.namespace}", pod="{pod}", cnotallow="{object.container}"}}[{step}]))。
  • 內存使用:sum(container_memory_working_set_bytes{job="kubelet", metrics_path="/metrics/cadvisor", image!="", namespace="{object.namespace}", pod="{pod}", cnotallow="{object.container}"})。

算法

默認情況下,KRR 使用一個簡單的策略來計算資源推薦。它的計算方法如下(確切的數字可以在 CLI 參數中自定義):

  • 對于 CPU,將請求設置為第 99 個百分位數,并且沒有限制。這意味著,在 99%的情況下,您的 CPU 請求是足夠的。對于剩余的 1%,我們沒有設置限制。這意味著您的 Pod 可以突發并使用節點上可用的任何 CPU - 例如其他 Pod 請求但現在未使用的 CPU。
  • 對于內存,使用過去一周內最大值并添加 5%緩沖區。

安裝使用

MacOS/Linux 用戶可以使用 brew 進行一鍵安裝:

brew tap robusta-dev/homebrew-krr
brew install krr

安裝完成后可以執行下面的命令來檢查是否安裝成功:

krr --help # 第一次可能會花較長時間

如果想要手動進行安裝,則首先確保在你的機器上安裝了 Python 3.9 或以上版本。然后 Clone 代碼:

git clone https://github.com/robusta-dev/krr
cd krr

安裝依賴:

pip install -r requirements.txt

最后,運行下面的命令來運行工具:

python krr.py --help

請注意,使用源代碼需要您作為 python 腳本運行,當使用 brew 安裝時允許運行 krr。以上所有示例都將運行命令顯示為 krr ...,如果您使用的是手動安裝,請將其替換為 python krr.py ...。

安裝完成后就可以來使用 KRR 工具了,比如可以運行一個簡單的策略:

krr simple

如果你只需要特定的命名空間(default 和 ingress-nginx):

krr simple -n default -n ingress-nginx

默認情況下,krr 將在當前上下文中運行,如果你想在不同的上下文中運行它:

krr simple -c my-cluster-1 -c my-cluster-2

如果想獲得 JSON 格式的輸出(需要 --logtostderr,這樣就不會將日志轉到結果文件):

krr simple --logtostderr -f json > result.json

如果你想獲得 YAML 格式的輸出:

krr simple --logtostderr -f yaml > result.yaml

如果您想查看其他調試日志:

krr simple -v

關于策略設置的更多信息,可以通過以下方式找到:

krr simple --help

默認情況下,KRR 將嘗試通過掃描下面的這些標簽來自動發現正在運行的 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"

如果這些標簽都沒有找到 Prometheus,則將收到錯誤消息,那么就必須顯式傳遞 url 了(使用 -p 標志)。

如果你的 prometheus 沒有自動連接,我們可以使用 kubectl port-forward 手動轉發 Prometheus。

例如有一個名為 kube-prometheus-st-prometheus-0 的 Prometheus Pod,則我們可以下面的命令對其進行端口轉發:

kubectl port-forward pod/kube-prometheus-st-prometheus-0 9090

然后,打開另一個終端并在其中運行 krr,給出一個顯式的 prometheus url:

krr simple -p http://127.0.0.1:9090

此外我們還可以根據自己的需求來創建自定義的策略,比如下面的代碼就是創建一個自定義的策略:

# This is an example on how to create your own custom strategy
import pydantic as pd
import robusta_krr
from robusta_krr.api.models import HistoryData, K8sObjectData, ResourceRecommendation, ResourceType, RunResult
from robusta_krr.api.strategies import BaseStrategy, StrategySettings
# Providing description to the settings will make it available in the CLI help
class 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

責任編輯:姜華 來源: k8s技術圈
相關推薦

2018-12-18 09:00:26

Kubernetes工作負載測試

2024-01-01 18:59:15

KubernetesCPU內存

2022-06-27 10:25:55

Kubernetes調度CPU

2019-01-15 10:02:06

Kubernetes開源工具微服務

2021-06-04 06:20:08

工具Kubernetes集群

2012-02-16 10:12:23

JavaScript

2020-08-25 07:48:17

Kubernetes集群系統

2019-11-07 14:00:36

MySQL數據庫SQL

2020-10-08 14:29:57

Kubernetes容器開發

2021-07-29 06:37:55

KubernetesKubeLinter工具

2011-05-27 17:51:00

Android

2021-04-25 11:00:37

Kubernetes優化Linux

2024-12-27 16:30:42

2011-05-03 10:17:25

CSS

2013-10-14 10:41:41

分配器buddy syste

2022-04-17 10:04:32

HerokuPaaSPorter

2019-12-13 10:09:09

Kubernetes安全工具

2016-12-20 10:59:43

MySQL存儲insert

2009-12-24 11:04:59

固定分配資源動態分配資源

2020-03-25 08:00:32

Kubernetes節點工作
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产视频二区在线观看 | 日日摸夜夜添夜夜添特色大片 | 亚洲成人一级片 | 国产一级免费视频 | 国产一区二区在线播放 | 在线国产一区二区 | 亚洲精品乱码久久久久v最新版 | 卡通动漫第一页 | 欧美一区二区三区大片 | 国产激情片在线观看 | 亚洲欧美网站 | 国产在线播 | 日本一区二区三区四区 | 蜜桃视频在线观看www社区 | 国产精品久久久久久久久久久新郎 | 国产在线a| 欧美黄色小视频 | 国产高清精品在线 | 日韩综合在线视频 | 99精品国产一区二区三区 | 亚洲欧美一区二区三区情侣bbw | 春色av| 国产免费福利小视频 | 国产精品一区在线 | 国产免费看| 国产91一区 | 午夜精品网站 | 国产精品视频一二三区 | 在线日韩视频 | 一区二区在线观看免费视频 | 男女爱爱福利视频 | 亚洲精品永久免费 | 日本免费一区二区三区四区 | 美女人人操 | 激情网站| 性欧美精品一区二区三区在线播放 | 成人黄色av网站 | 黄a网站 | 亚洲三级在线观看 | 日本特黄a级高清免费大片 特黄色一级毛片 | 亚洲成人自拍 |