gke-cost について
gke-costは、GKEクラスターを運用するチーム向けのコスト最適化リファレンスです。ワークロード配置、リソース適正化、マシン選択、割引、クラスター管理を、信頼性とセキュリティへの配慮とともに説明します。
主な機能
- 01Spot VM配置の指針
- 02Podリソースの適正化
- 03マシンファミリーの選択
- 04確約利用割引の指針
- 05クラスターコスト管理
- 06コストとリソースの監視
活用シーン
- 01耐障害性のあるワークロードにSpot VMを選択
- 02過大なPodリソース要求を削減
- 03ワークロード要件に合うマシンファミリーを選択
- 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
ゴールデンパスのコスト最適化機能
ゴールデンパスには、すでにコストを最適化する設定が含まれています。
| 設定 | 値 | 効果 |
|---|---|---|
autoscalingProfile | OPTIMIZE_UTILIZATION | 積極的なノード |
| : : : スケールダウンにより、 : | ||
| : : : アイドル状態の : | ||
| : : : コンピューティングを削減 : | ||
verticalPodAutoscaling | enabled | VPA の推奨事項により、 |
| : : : 過剰な : | ||
| : : : プロビジョニングを防止 : | ||
| 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)、価格性能比 | 低 |
| : : 最適化 : : | ||
| n4a | Axion ベースの Arm、汎用 | 低 |
| : : 価格性能比 : : | ||
| n4 / n4d | 汎用(Intel/AMD)、柔軟なシェイプ | 低〜中 |
| c4a | コンピューティング最適化(Arm)、高効率 | 中〜高 |
| c3 / c4 | コンピューティング最適化(Intel) | 中〜高 |
| c3d / c4d | コンピューティング最適化(AMD)、高性能 | 中〜高 |
| : : スループット : : | ||
| ek-standard | Autopilot の拡張(ゴールデンパス) | 中 |
| 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 | 無効 | | メンテナンス ウィンドウ | 設定済み | 不要 |