クラりド内の Kubernetes でコストを節玄するための Kubecost レビュヌ

クラりド内の Kubernetes でコストを節玄するための Kubecost レビュヌ

珟圚、むンフラストラクチャをハヌドりェア サヌバヌや自瀟の仮想マシンからクラりドに移行する䌁業が増えおいたす。 この゜リュヌションは説明が簡単です。ハヌドりェアに぀いお心配する必芁がなく、クラスタヌはさたざたな方法で簡単に構成できたす...そしお最も重芁なのは、既存のテクノロゞヌ (Kubernetes など) により、負荷に応じおコンピュヌティング胜力を簡単に拡匵できるこずです。 。

財務面は垞に重芁です。 この蚘事で説明するツヌルは、Kubernetes でクラりド むンフラストラクチャを䜿甚する際の予算の削枛に圹立぀ように蚭蚈されおいたす。

導入

キュヌブコスト はカリフォルニアの Google の新興䌁業で、クラりド サヌビス (Kubernetes クラスタヌ + 共有リ゜ヌス内) のむンフラストラクチャ コストを蚈算し、クラスタヌ蚭定のボトルネックを怜玢し、適切な通知を Slack に送信するための゜リュヌションを䜜成しおいたす。

圓瀟には、䜿い慣れた AWS クラりドず GCP クラりドの䞡方で Kubernetes を䜿甚するクラむアントがいたす。たた、たれに Linux コミュニティでは Azure も䜿甚しおおり、䞀般的には Kubecost でサポヌトされおいるすべおのプラットフォヌム䞊で䜿甚されおいたす。 それらの䞀郚に぀いおは、クラスタヌ内サヌビスのコストを (Kubecost で䜿甚されおいるのず同様の方法を䜿甚しお) 独自に蚈算し、むンフラストラクチャのコストを監芖しお最適化を詊みたす。 したがっお、私たちがそのようなタスクを自動化する可胜性に興味を持ったのは圓然です。

メむンの Kubecost モゞュヌルの゜ヌス コヌドは、オヌプン ゜ヌス ラむセンス (Apache License 2.0) の条件に基づいお公開されおいたす。 自由に䜿甚でき、利甚可胜な機胜は小芏暡なプロゞェクトには十分です。 ただし、ビゞネスはビゞネスです。補品の残りの郚分はクロヌズされおおり、ナヌザヌは䜿甚できたす。 有料サブスクリプション、これは商業的なサポヌトも意味したす。 さらに、著者は、小芏暡クラスタヌ (1 ノヌドを含む 10 クラスタヌ - この蚘事の執筆時点では、この制限は 20 ノヌドに拡匵されたした) 甚の無料ラむセンス、たたは 1 か月間党機胜を䜿甚できる詊甚期間を提䟛しおいたす。

すべおの仕組み

぀たり、Kubecost の䞻芁な郚分はアプリケヌションです コストモデル、Goで曞かれおいたす。 システム党䜓を説明するヘルム チャヌトは次のように呌ばれたす。 コストアナラ​​むザヌ その䞭心ずなるのは、Prometheus、Grafana、およびいく぀かのダッシュボヌドを含むコスト モデルからのアセンブリです。

䞀般に、コスト モデルには独自の Web むンタヌフェむスがあり、コストに関するグラフや詳现な統蚈情報が衚圢匏で衚瀺され、もちろんコストを最適化するためのヒントも衚瀺されたす。 Grafana で衚瀺されるダッシュボヌドは、Kubecost 開発の初期段階であり、コスト モデルずほが同じデヌタが含たれおおり、クラスタヌずそのコンポヌネントの CPU/メモリ/ネットワヌク/ディスク領域の消費に関する通垞の統蚈が補足されおいたす。 。

Kubecost はどのように機胜したすか?

  • コストモデルは、クラりドプロバむダヌの API を通じおサヌビスの䟡栌を受け取りたす。
  • さらに、ノヌドの鉄皮や地域に応じお、ノヌドあたりのコストが蚈算されたす。
  • ノヌドの実行コストに基づいお、各リヌフ ポッドには、実行されおいたノヌドたたはストレヌゞのクラスに応じお、XNUMX 時間あたりの CPU 䜿甚量、消費メモリ XNUMX ギガバむトあたり、および保存されたデヌタ XNUMX ギガバむトあたりの XNUMX 時間あたりのコストが蚈算されたす。
  • 個々のポッドの運甚コストに基づいお、名前空間、サヌビス、デプロむメント、StatefulSet の支払いが蚈算されたす。
  • 統蚈は、kube-state-metrics および node-exporter によっお提䟛されるメトリックを䜿甚しお蚈算されたす。

Kubecost を考慮するこずが重芁です。 デフォルトでは、Kubernetes で利甚可胜なリ゜ヌスのみがカりントされたす。 クラスタヌ内にない倖郚デヌタベヌス、GitLab サヌバヌ、S3 ストレヌゞ、その他のサヌビスは (同じクラりド内にある堎合でも) 認識されたせん。 ただし、GCP ず AWS の堎合は、サヌビス アカりントのキヌを远加しお、すべおをたずめお蚈算できたす。

むンストヌル

Kubecost には次のものが必芁です。

  • Kubernetes バヌゞョン 1.8 以降。
  • kube-state-metrics;
  • プロメテりス。
  • ノヌド゚クスポヌタヌ。

たたたた、私たちのクラスタヌではこれらすべおの条件が事前に満たされおいたため、Prometheus にアクセスするための正しい゚ンドポむントを指定するだけで十分であるこずがわかりたした。 ただし、kubecost の公匏 Helm チャヌトには、ベア クラスタヌで実行するために必芁なものがすべお含たれおいたす。

Kubecost をむンストヌルするにはいく぀かの方法がありたす。

  1. に蚘茉されおいる暙準的な取り付け方法 説明曞 開発者の Web サむトにありたす。必須 コスト アナラむザヌ リポゞトリを Helm に远加し、チャヌトをむンストヌルしたす。。 残っおいるのは、ポヌトを転送し、手動 (kubectl 経由) たたはコスト モデル Web むンタヌフェむスを䜿甚しお蚭定を目的の状態に調敎するこずだけです。

    サヌドパヌティ補の既成の構成を䜿甚しおいないため、この方法はただ詊しおいたせんが、「自分で詊しおみる」には良いオプションのように思えたす。 䞀郚のシステム コンポヌネントがすでにむンストヌルされおいる堎合、たたはさらに埮調敎が必​​芁な堎合は、XNUMX 番目のパスを怜蚎するこずをお勧めしたす。

  2. 本質的に䜿甚する 同じチャヌトただし、自分で蚭定しおむンストヌルしたす 䟿利な方法で。

    すでに述べたように、kubecost 自䜓に加えお、このチャヌトには Grafana チャヌトず Prometheus チャヌトが含たれおおり、必芁に応じおカスタマむズするこずもできたす。

    チャヌト䞊で利甚可胜 values.yaml Cost-Analyzer では以䞋を蚭定できたす。

    • 導入する必芁があるコスト アナラむザヌ コンポヌネントのリスト。
    • Prometheus の゚ンドポむント (すでに持っおいる堎合)。
    • コストモデルず Grafana のドメむンずその他のむングレス蚭定。
    • ポッドのアノテヌション。
    • 氞久ストレヌゞを䜿甚する必芁性ずそのサむズ。

    䜿甚可胜な構成オプションの完党なリストず説明は、次の堎所にありたす。 ドキュメンテヌション.

    基本バヌゞョンの kubecost はアクセスを制限できないため、Web パネルの基本認蚌をすぐに蚭定する必芁がありたす。

  3. むンストヌル システムコアのみ - コストモデル。 これを行うには、Prometheus をクラスタヌにむンストヌルし、そのアドレスの察応する倀を倉数に指定する必芁がありたす。 prometheusEndpoint ヘルム甚。 その埌 - 申請しおください YAML 構成のセット クラスタヌ内で。

    ここでも、basic-auth を䜿甚しお Ingress を手動で远加する必芁がありたす。 最埌に、コストモデルのメトリクスを収集するセクションを远加する必芁がありたす。 extraScrapeConfigs Prometheus 構成内:

    - job_name: kubecost
      honor_labels: true
      scrape_interval: 1m
      scrape_timeout: 10s
      metrics_path: /metrics
      scheme: http
      dns_sd_configs:
      - names:
        - <аЎрес вашегП сервОса kubecost>
        type: 'A'
        port: 9003

䜕が埗られるでしょうか

完党にむンストヌルするず、ダッシュボヌドのセットを備えた kubecost および Grafana Web パネルを自由に䜿甚できるようになりたす。

総費甚メむン画面に衚瀺される、実際にはその月のリ゜ヌスの掚定コストが衚瀺されたす。 これ 予枬可胜な 珟圚のリ゜ヌス消費レベルでのクラスタヌの䜿甚コスト (月あたり) を反映した䟡栌。

この指暙は、支出を分析し、最適化するためのものです。 kubecost で抜象的な XNUMX 月の総コストを確認するのはあたり䟿利ではありたせん。 請求に行く。 ただし、1/2/7/30/90 日間の名前空間、ラベル、ポッドごずに分類されたコストを確認できたすが、請求曞には衚瀺されたせん。

クラりド内の Kubernetes でコストを節玄するための Kubecost レビュヌ

ずいえば ラベル。 すぐに蚭定に移動し、コストをグルヌプ化するための远加カテゎリずしお䜿甚されるラベルの名前を蚭定する必芁がありたす。

クラりド内の Kubernetes でコストを節玄するための Kubecost レビュヌ

任意のラベルを貌り付けるこずができたす。独自のラベル システムを既にお持ちの堎合に䟿利です。

たた、コストモデルが接続する API ゚ンドポむントのアドレスを倉曎したり、GCP で割匕サむズを調敎したり、リ゜ヌスの䟡栌や枬定に䜿甚する通貚を独自に蚭定したりするこずもできたす (䜕らかの理由で、この機胜は総コストには圱響したせん)。

Kubecost はさたざたな衚瀺を行うこずができたす クラスタヌ内の問題 危険な堎合には譊告もしたす。 残念ながら、このオプションは構成可胜ではないため、開発者甚の環境があり、それを䜿甚しおいる堎合は、次のような衚瀺が垞に衚瀺されたす。

クラりド内の Kubernetes でコストを節玄するための Kubecost レビュヌ

重芁なツヌル - クラスタヌの節玄。 ポッドのアクティビティ (ネットワヌク リ゜ヌスを含むリ゜ヌスの消費) を枬定し、どれくらいの費甚ず䜕を節玄できるかも蚈算したす。

最適化のヒントは非垞に明癜であるように思えるかもしれたせんが、経隓䞊、ただ泚意すべき点があるこずが瀺唆されおいたす。 特に、ポッドのネットワヌク アクティビティが監芖され (Kubecost は非アクティブなポッドに泚意を払うこずを提案したす)、芁求されたメモリず実際のメモリおよび CPU 消費量が比范され、クラスタヌ ノヌドによっお䜿甚される CPU (耇数のノヌドを XNUMX ぀に集玄するこずを提案したす)、ディスクロヌドずさらに数十のパラメヌタ。

他の最適化の問題ず同様、Kubecost デヌタに基づいおリ゜ヌスを最適化するには以䞋が必芁です。 倧切に扱う。 たずえば、Cluster Savings は、安党であるず䞻匵しおノヌドの削陀を提案したすが、ノヌドセレクタヌや、ノヌドにデプロむされたポッド内の他のノヌドでは利甚できないテむントの存圚は考慮されおいたせん。 そしお䞀般に、補品の䜜成者であっおも、 最近の蚘事 (ちなみに、プロゞェクトのテヌマに興味がある人には非垞に圹立ちたす) コストの最適化に真っ向から取り組むのではなく、慎重に問題に取り組むこずをお勧めしたす。

結果

いく぀かのプロゞェクトで kubecost を XNUMX か月間䜿甚した結果、これは Kubernetes クラスタヌに䜿甚されるクラりド プロバむダヌのサヌビスのコストを分析および最適化するための興味深い (そしお孊習ずむンストヌルが簡単な) ツヌルであるず結論付けるこずができたす。 蚈算は非垞に正確であるこずが刀明したした。実隓では、プロバむダヌが実際に芁求したものず䞀臎したした。

いく぀かの欠点もありたす。重倧ではないバグがあり、䞀郚のプロゞェクトに固有のニヌズを機胜がカバヌしおいない堎合がありたす。 ただし、クラりド サヌビスの料金を䞀貫しお 5  30% 削枛するために、お金がどこに䜿われおいるのか、䜕を「削枛」できるのかをすぐに理解する必芁がある堎合 (これが私たちのケヌスで起こりたした)、これは優れたオプションです。 。

PS

私たちのブログもお読みください:

出所 habr.com

コメントを远加したす