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

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

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

推薦する

ウェブページがALTタグを使用しているか確認する方法と正しい書き方について詳しく説明します

みなさんこんにちは。私は湖南省出身のキネスです。 alt タグはほとんどのウェブマスターにとって非常...

サイト上の高品質のオリジナル記事はウェブサイトの最適化に役立ちます

ご存知のとおり、ウェブサイトの SEO 最適化のプロセスでは、コンテンツと外部リンクは常に議論の絶え...

ウェブマスターが運営するポータルサイトは、トレンドに追随しながらも、トレンドに逆らってプロモーションするにはどうすればよいでしょうか。

ほとんどのウェブマスターにとって、ウェブサイトのプロモーションは、フォーラムへの投稿やニュースの公開...

APPの運用とプロモーションのヒント:37の無料オンラインプロモーションチャネル

以下は、7 つのカテゴリからいくつかのプロモーション チャネルを紹介する完全なガイドです。これは参考...

世界のトップ 20 ブログの背後にある Web ホスティングの秘密

定期的に読んでいるお気に入りのブログはありますか?非常に有名なブログであれば、誰(創設者兼編集者)が...

Argo Rolloutsを使用して段階的なアプリケーションリリースを実装する

Argo Rollouts は、Kubernetes Operator 実装であり、ブルーグリーン、...

電子商取引オープンプラットフォーム:中小販売業者の愛憎関係

オープンプラットフォームは中国の電子商取引企業の中核戦略になりつつある。プラットフォーム上では、売り...

Weiboマーケティングとは何ですか?そしてなぜ今人気があるのですか?

ショートビデオ、セルフメディア、インフルエンサーのためのワンストップサービスWeiboマーケティング...

現在のコメント: 企業はパブリック クラウドに移行することで本当にコストを節約できるのでしょうか?

現在、中国のクラウドコンピューティング市場は急速な発展期にあり、伝統的な業界の企業はクラウドサービス...

不安定なウェブサイトランキングの解決策について詳しく議論する

不安定なウェブサイトランキングの解決策について詳しく議論する今日は、ウェブサイトのランキングが不安定...

テンセント・ゲーミング帝国の亀裂

2020年12月9日。ネットユーザーDahammerさんが『原神』をプレイし始めてすでに48日目だ。...

共有ページSEOとリンク構築の組み合わせタイプ

Baidu の大規模なアップデート後、またもや大量のサイトが砲弾の餌食となり、跡形もなく消えてしまい...

ウェブサイトに広告や商業コンテンツが多すぎると、キーワードランキングに不利な影響を与える

ウェブサイトのランキングを促進する要因は最も研究されているかもしれませんが、ウェブサイトのランキング...

革新を追求し、協力を促進しましょう!興蘭テクノロジーのデータ伝送セキュリティセミナーが成功裏に終了

総書記のサイバー強国建設に関する重要な思想を徹底的に実行し、国家全体の安全保障観を実践し、発展と安全...

Ban Kui: モバイル インターネット SEO がウェブマスターにもたらすチャンス

最新の統計によると、モバイルインターネットの発展速度は非常に驚異的です。スマートフォンの継続的な普及...