Robusta KRR - Kubernetesを最適化するためのリソース割り当てツール

Robusta KRR - Kubernetesを最適化するためのリソース割り当てツール

Robusta KRR (Kubernetes Resource Recommender) は、Kubernetes クラスター内のリソース割り当てを最適化するためのコマンドライン ツールです。 Prometheus からポッドの使用状況データを収集し、CPU とメモリの要求と制限を推奨します。これにより、コストを大幅に削減し、パフォーマンスを向上させることができます。

特徴

  • エージェントは不要: Robusta KRR はローカル マシン上で実行される CLI ツールであり、クラスター内で Pod を実行する必要はありません。
  • Prometheus 統合: 組み込みの Prometheus クエリを使用してリソース使用状況データを収集します。カスタム クエリのサポートも近日中に開始されます。
  • 拡張可能なポリシー: 独自のポリシーを簡単に作成して使用し、リソースの推奨事項を計算します。
  • 将来のサポート: 今後のバージョンでは、カスタム リソース (GPU など) とカスタム メトリックがサポートされる予定です。

Sysdig による最近の調査によると、Kubernetes クラスターには平均して次の機能があります。

  • 69% 未使用 CPU
  • 未使用メモリ 18%

KRR を使用してコンテナのサイズを適正化することで、クラウド コストを平均 69% 削減できます。

v0.10.15 以降で KRR が統合されている Robusta SaaS を使用する場合は、すべての推奨事項 (古いものも含む) を表示し、クラスター、名前空間、または名前でフィルタリングおよび並べ替えることができます。

仕組み

メトリクス収集

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%については制限を設けません。これは、ポッドがバーストして、ノード上で使用可能な任意の CPU (たとえば、他のポッドが要求したが現在使用していない CPU) を使用できることを意味します。
  • メモリについては、過去 1 週間の最大値を使用し、5% のバッファを追加します。

インストールと使用方法

MacOS/Linux ユーザーは brew を使用してワンクリックでインストールできます。

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

インストールが完了したら、次のコマンドを実行して、インストールが成功したかどうかを確認できます。

 krr --help # 第一次可能会花较长时间

手動でインストールする場合は、まずマシンに Python 3.9 以上がインストールされていることを確認してください。次に、コードを複製します。

 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

次に、別のターミナルを開き、明示的な Prometheus URL を指定して krr を実行します。

 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

<<:  クラウドホスティングとセルフホスティング

>>:  クラウド変革を成功させるために考慮すべき重要な要素

推薦する

推奨: vodien-40 RMB/シンガポール/cPanel ホスティング/5g ハードドライブ/無制限トラフィック

Vodien はシンガポールの有名な IDC (2002 年設立) で、十分な帯域幅と高速な国内アク...

ウェブマスターのおすすめ:フィリピンVPSのおすすめ、フィリピンのネイティブIP、CN2、本土への高速直接接続、安い価格

VPS レンタルの料金、フィリピン VPS の推奨: フィリピンは中国に近いため、フィリピン VPS...

タイトルに間違ったキーワードを使うことについての簡単な説明

タイトルの魅力を構成するキーワードの秘密について話しましょう。それは何ですか?類似キーワードも多くの...

SEOVIPのキーワード選択を最もシンプルな考え方で見てみましょう

最も単純な考え方で、ロビンのSEOトレーニングサイトを見てみましょう。多くの友人がseovipのサイ...

ユーザーや検索エンジンを考慮して記事を書くと、サイトの記事が検索エンジンによって削除される可能性が低くなります。

最近、奇妙な現象に遭遇しました。以前の記事は収集後も保存されていたのですが、先週から、私のウェブサイ...

2018 年にデジタル マーケティングを生き残るための 3 つの魔法の武器

通信技術の急速な進化、通信環境の急速な変化、そして消費者の要求の波により、デジタル マーケティングは...

初心者はSEOをどう学ぶべきか

初心者にとって、初めて SEO に触れたときは、非常に熱心でやる気に満ちています。しかし、勉強と実践...

今日、百度はブロックされていたホームページの一部を更新し、復旧した。

今日、以前ホームページからブロックされていたStoneの企業サイトをチェックしたところ、奇跡的に復活...

ニュース: Vultr - 1 つ買うと 1 つ無料、最大 100 ドル、14 のデータ センターから VPS を選択可能

Vultr.con は長い間、役に立つ情報を提供していません。6 月の最新の Vultr 割引コード...

dotvps-限定版低価格 UK KVM-1g メモリ 7 ドル

dotvps.co は 2011 年に設立されました。ダラス、シカゴ、ニューヨーク、メイデンヘッド ...

5Gとエッジコンピューティングが企業の新たな常態への対応にどのように役立つか

コロナウイルス危機への対応として、世界中の組織は、世界が正常に戻るか、少なくとも次の正常に戻るまで待...

TaobaoのウェブサイトのPIDが改ざんされた場合はどうすればよいですか?

Taobao Affiliate は常に最も人気のあるオンライン収益プロジェクトの 1 つであり、P...

マイクロソフトのハリー・シャムの自伝: 私のキャリアから学んだ7つの教訓

[[258943]]ハリー・シャム博士 マイクロソフトのエグゼクティブバイスプレジデント、マイクロソ...

インテルがクラウドコンピューティングの加速キーを押す

4 月 7 日、Intel はシングル ソケットおよび 2 ソケット サーバー向けに設計された第 3...

マースマーケティングリサーチインスティテュート | Tik Tok、仮想IPの新たな楽園か?

2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っていますバーチャル...