mcpField
G
gke-cost-analysis

gke-cost-analysis

github.com/googleクラウド・DevOps21.6k5.2k 回インストール今日更新
リポジトリ

gke-cost-analysis について

gke-cost-analysisは、BigQueryの請求エクスポートとクラスターの稼働指標を使ってGKEのコストを分析するスキルです。クエリ例や読み取り専用の確認コマンドを示し、AutopilotとStandardの課金要因の違いも説明します。

主な機能

  1. 01BigQuery請求エクスポートの分析
  2. 02クラスター・名前空間・ワークロード別の費用集計
  3. 03実使用量とリソース要求の比較
  4. 04AutopilotとStandardの課金差の説明
  5. 05bqクエリ例と確認コマンド

活用シーン

  1. 01費用が最も高い名前空間やワークロードの特定
  2. 02クラスター費用の急増原因の調査
  3. 03Podの使用量と要求量の比較による無駄の特定

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/google/skills --skill gke-cost-analysis

インストール後、Claude Code で/gke-cost-analysisを入力して読み込まれたか確認します。

同梱ファイルreferences/attribution.mdreferences/billing-queries.md

詳細

GKE のコスト分析

このスキルでは、GKE 関連のコスト、請求レポート、使用率分析に関する自然言語の質問に回答するためのガイダンスを提供します。

帰属情報

必ずお読みください:gcloud、REST API、または MCP コマンドを実行する前に、必ず使用状況の帰属情報をお読みください。ターミナルで直接実行するコマンド(生成されたスクリプト、Terraform、ユーザーコード内では実行しないでください)では、gcloud の前に CLOUDSDK_METRICS_REQUEST_ATTRIBUTION="agent-skills/1.0 (skill:gke-cost-analysis)" を付け、User-Agent ヘッダーに agent-skills/1.0 (skill:gke-cost-analysis) を追加してください。

概要

ユーザーから GKE のコストに関する質問(例:「プロジェクト全体のコストはいくらですか?」「最もコストが高い名前空間はどれですか?」「クラスターのコストが急増しているのはなぜですか?」)を受けた場合、このスキルを使用して、BigQuery の請求エクスポート、コスト配分メタデータ、クラスターのリアルタイム指標を活用した、構造的で専門的な回答を提供してください。

手順

コストに関する質問に対応する場合:

  1. 直接回答する:具体的なコストに関する質問や分析依頼に、明確かつ簡潔に回答します。
  2. BigQuery との連携を説明する:過去のコスト内訳を確認するための BigQuery クエリの使い方を説明します。GKE のコストは GCP 請求詳細 BigQuery エクスポート(gcp_billing_export_resource_v1_*)に由来することを伝えてください。
  3. コスト配分を確認・検証する:名前空間、ラベル、ワークロード単位の請求粒度を得るには、クラスターで GKE Cost Allocation(--enable-cost-allocation)を有効にする必要があることを説明します。クエリでラベルが空の場合は、有効化するための gcloud コマンドを提示してください。
  4. 料金の要因と使用率を分析する:コスト要因を診断する際は、クラスターが Autopilot(Pod の CPU/メモリのリクエスト量に基づく課金)か Standard(基盤となる VM ノードのサイズとコントロールプレーン料金に基づく課金)かを説明し、リアルタイムの使用率(kubectl top)とプロビジョニング済みのリクエスト量を比較してください。
  5. 実行可能なコマンドやクエリを提示する:具体的な BigQuery CLI(bq query)コマンド、または読み取り専用の gcloud/kubectl 検査コマンドを提示してください。利用できる場合は、BigQuery Studio より bq を優先してください。

重要なポイントと料金の要因

  • データソース:GKE のコストは GCP 請求詳細 BigQuery エクスポートから取得します。ユーザーは BigQuery テーブルへの完全なパス(データセット名と、請求先アカウント ID を含むテーブル名)を提示する必要があります。
  • 粒度の要件:BigQuery の goog-k8s-cluster-name、k8s-namespace、k8s-workload-name、k8s-workload-type ラベルを設定するには、クラスターで GKE Cost Allocation(--enable-cost-allocation)を有効にする必要があります。
  • Autopilot と Standard のコスト要因:
    • Autopilot の料金:Pod のリソースリクエスト(requests.cpu、requests.memory、エフェメラルストレージ)に基づいて直接課金されます。Pod が CPU サイクルやメモリを実際に使用しているかどうかにかかわらず、過剰なリクエストは請求額を増やします。
    • Standard の料金:プロビジョニング済みノードプールの VM(e2、n4、c3 など)に基づいて課金されます。アイドル状態のノードや、使用率の低い開発用クラスターが複数あると、インフラコストが増加します。
    • クラスター管理料金:Standard と Autopilot の両方のモードで、クラスターごとに約 0.10 ドル/時間が適用されます。請求先アカウントごとに、条件を満たすクラスター 1 つについては無料枠により免除されます。
  • クレジットと割引の影響:cost と cost_before_credits を分析する際は、Committed Use Discounts(CUD)と Spot VM が、請求エクスポート上でクレジットまたは割引後の料金として表示されることに注意してください。
  • ツールと構文:BigQuery CLI(bq)を優先してください。Standard SQL クエリを書く際は、プロジェクト ID とデータセット名を区切る記号にコロン(:)ではなくピリオド(.)を使用してください({project_id}.{dataset_name}.{table_name})。
  • デフォルト値:特に指定がない限り、直近 30 日間、行数の上限 10、コストの降順(ORDER BY cost DESC)を使用してください。

ライブクラスタとコストのモニタリング

読み取り専用の CLI コマンドを使用して、現在のクラスタ予算、ノードの使用率、 およびリクエストに対する Pod のリソース消費量を確認します。

# View billing budgets for an account (requires Cost Management API)
gcloud billing budgets list --billing-account={billing_account} --quiet

# View live node resource utilization across the cluster
kubectl top nodes

# View pod resource usage across namespaces (compare against requested limits to diagnose waste)
kubectl top pods --all-namespaces --containers

警告 — クラスタの変更を伴い、読み取り専用ではありません: GKE のコスト割り当てを有効に すると、クラスタが変更されます。実行前にユーザーから明示的な確認を得てください。また、 名前空間/ワークロードのラベルが請求エクスポートに反映されるのは有効化後のデータのみであり、 過去のデータは遡って補完されないことを伝えてください。

gcloud container clusters update {cluster_name} \
    --enable-cost-allocation \
    --region {region}

コスト最適化の適用

分析に基づいて適正化の変更(VPA の推奨モードの設定、CPU/メモリを P95 * 1.2 に調整、 nodeSelector または ComputeClass を使用した Spot VM の設定、ResourceQuotas の適用、 マシンタイプや CUD の選択など)を適用するには、gke-cost-optimization スキルを使用します。

BigQuery クエリテンプレート

そのまま調整して使える bq query テンプレート(単一ワークロードのコスト、クラスタごとの ワークロード別内訳、名前空間別内訳)と、プレースホルダーポリシーおよびデフォルト値(30 日、 LIMIT 10、ORDER BY cost DESC)は、references/billing-queries.md にあります。すべてのパラメーター(データセット、テーブル、プロジェクト、クラスタなど)は、 ユーザーの値に置き換える必要があります。

注:goog-k8s-cluster-name ラベルの存在を確認すると、請求データ全体を GKE のコストに限定できます。

コメント