mcpField
G
gke-cost

gke-cost

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

gke-cost について

gke-costは、GKEクラスターを運用するチーム向けのコスト最適化リファレンスです。ワークロード配置、リソース適正化、マシン選択、割引、クラスター管理を、信頼性とセキュリティへの配慮とともに説明します。

主な機能

  1. 01Spot VM配置の指針
  2. 02Podリソースの適正化
  3. 03マシンファミリーの選択
  4. 04確約利用割引の指針
  5. 05クラスターコスト管理
  6. 06コストとリソースの監視

活用シーン

  1. 01耐障害性のあるワークロードにSpot VMを選択
  2. 02過大なPodリソース要求を削減
  3. 03ワークロード要件に合うマシンファミリーを選択
  4. 04アイドル状態の開発クラスターのコストを確認

MCP 対応

Kubernetesリソースの取得・説明、マニフェスト適用、リソースのパッチ、クラスター詳細の取得に使うMCPツールを記載しています。

インストール

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

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

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

詳細

GKE コスト最適化

このリファレンスでは、ゴールデンパスのセキュリティと信頼性の水準を維持しながら、GKE のコストを削減するための戦略を説明します。

MCP ツール: get_k8s_resource、describe_k8s_resource、 apply_k8s_manifest、patch_k8s_resource、get_cluster

ゴールデンパスのコスト最適化機能

ゴールデンパスには、すでにコストを最適化する設定が含まれています。

設定値効果
autoscalingProfileOPTIMIZE_UTILIZATION積極的なノード
: : : スケールダウンにより、 :
: : : アイドル状態の :
: : : コンピューティングを削減 :
verticalPodAutoscalingenabledVPA の推奨事項により、
: : : 過剰な :
: : : プロビジョニングを防止 :
Autopilot の料金体系Pod のリクエストに応じて支払い未使用のノード容量に対する
: : : 料金は発生しません :
ノードの自動プロビジョニング有効適切なサイズのノードプール
: : : を自動的に作成 :

コスト最適化の戦略

1. ComputeClasses による Spot VM

フォールトトレラントなワークロードには Spot VM を使用します(コストを 60~90%削減できます)。

apiVersion: cloud.google.com/v1
kind: ComputeClass
metadata:
  name: spot-with-fallback
spec:
  activeMigration:
    optimizeRulePriority: true
  priorities:
  - machineFamily: n4
    spot: true
  - machineFamily: n4
    spot: false

Spot に適したワークロード:

ワークロードSpot に適しているか
バッチ/データ処理はい
開発/テスト環境はい
ステートレスな Web/API(レプリカ >= 2)はい(PDB が必要)
チェックポイント機能を持つジョブはい
ステートフルなワークロード(データベース)いいえ
レプリカが 1 つの重要なサービスいいえ

エビクションへの対処:

spec:
  template:
    spec:
      terminationGracePeriodSeconds: 25  # Must be < 30s for Spot
      containers:
      - name: app
        lifecycle:
          preStop:
            exec:
              command: ["/bin/sh", "-c", "sleep 5"]
1.1 ワークロードから直接 Spot を選択する(NodeSelector)

GKE Autopilot のステートレスなワークロードやバッチワークロードで Spot VM を使用する場合、カスタム ComputeClass を作成する必要はありません。Pod または Deployment の spec に nodeSelector を追加すれば、組み込みの Spot 容量を直接指定できます。

警告

プリエンプションに関する警告:Spot VM は中断される可能性があり、30 秒前の通知でいつでもプリエンプトされることがあります。ワークロードはフォールトトレラントである必要があり、高可用性を確保するため、少なくとも 2 つのレプリカで実行してください。Spot VM を推奨する場合は、必ずこのプリエンプションのリスクをユーザーに明示してください。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: stateless-spot-app
spec:
  replicas: 2
  template:
    spec:
      nodeSelector:
        cloud.google.com/gke-provisioning: Spot
      terminationGracePeriodSeconds: 25  # Must be < 30s to allow graceful shutdown before preemption
      containers:
      - name: app
        image: <IMAGE>
2. Pod の適正サイズ化

VPA の推奨事項を使用して、過剰にプロビジョニングされたリクエストを削減します。

# 1. Deploy VPA in recommendation mode
kubectl apply -f - <<EOF
apiVersion: autoscaling.k8s.io/v1
kind: VerticalPodAutoscaler
metadata:
  name: <DEPLOYMENT>-vpa
spec:
  targetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: <DEPLOYMENT>
  updatePolicy:
    updateMode: "Off"
EOF

# 2. Wait 24+ hours for data collection

# 3. Read recommendations
kubectl get vpa <DEPLOYMENT>-vpa -o jsonpath='{.status.recommendation}'

最適化のルール:

条件アクション削減効果
CPU リクエストが実測 P95 の 5 倍超P95 * 1.2 まで削減高
メモリリクエストが実測 P95 の 3 倍超P95 * 1.2 まで削減高
CPU リクエストが実測 P95 の 2 倍超P95 * 1.2 まで削減中
リソースリクエストが未設定リクエストを追加(ビンパッキングを有効化)中
3. マシンタイプの選択
ファミリーユースケース相対コスト
e2汎用、バースト可能最低
t2a / t2dスケールアウト(Arm/AMD)、価格性能比低
: : 最適化 : :
n4aAxion ベースの Arm、汎用低
: : 価格性能比 : :
n4 / n4d汎用(Intel/AMD)、柔軟なシェイプ低〜中
c4aコンピューティング最適化(Arm)、高効率中〜高
c3 / c4コンピューティング最適化(Intel)中〜高
c3d / c4dコンピューティング最適化(AMD)、高性能中〜高
: : スループット : :
ek-standardAutopilot の拡張(ゴールデンパス)中
m3 / x4メモリ最適化、SAP HANA、大規模データベース高
g2 (L4 GPU)AI 推論高
a3 (H100 GPU)AI トレーニング最高
a4 / a4x超大規模 AI(Blackwell GPU)最高

Autopilot では、マシンタイプは管理されます。選択に影響を与えるには、 ComputeClasses を使用してください。

4. コミット利用割引(CUD)

安定したワークロードでは、1 年または 3 年の CUD を購入してください。

  • 1 年:〜20〜30% 割引
  • 3 年:〜50〜55% 割引
  • リージョン内の該当する使用量に自動的に適用されます
  • Google Cloud Console > Billing > Committed use discounts から購入できます
5. クラスター管理
  • 開発クラスターの停止/開始:アイドル状態の開発クラスターは、ワークロードがなくても(コントロールプレーン料金により)費用がかかります。
  • ノードプールの適正サイズ化(Standard):適切な最小値/最大値を設定して Cluster Autoscaler を使用します。
  • マルチテナントクラスター:チームごとにクラスターを用意するのではなく、単一のクラスターをチーム間で共有します(gke-multitenancy スキルを参照してください)。

コストのモニタリング

# View cluster cost breakdown (requires Cost Management API)
gcloud billing budgets list --billing-account=<BILLING_ACCOUNT> --quiet

# View node utilization
kubectl top nodes

# View pod resource usage vs requests
kubectl top pods --all-namespaces --containers

開発/テストのコスト削減

本番環境以外では、次のゴールデンパスからの逸脱が許容されます。

| 設定 | 本番環境(ゴールデン | 開発/テスト | : : パス) : : | ----------------------- | ------------------ | ----------------------------- | | クラスター モード | Autopilot | Autopilot(ポッド数が少ないほど | : : : 安価) : | リリース チャネル | Regular | Rapid(修正をより早く取得) | | プライベート ノード | 必須 | 任意(アクセスがより簡単) | | モニタリング コンポーネント | フルスイート | SYSTEM_COMPONENTS のみ | | Secret Manager のローテーション | 120s | 無効 | | メンテナンス ウィンドウ | 設定済み | 不要 |

コメント