mcpField
C
compute-spot-capacity-advice

compute-spot-capacity-advice

github.com/googleクラウド・DevOps24.3k163 回インストール1 日前に更新
リポジトリ

compute-spot-capacity-advice について

compute-spot-capacity-adviceは、インスタンスをリクエストする前にGoogle Compute Engine Spot VMの容量を評価するスキルです。Betaの容量アドバイスコマンドの使い方や、配置候補、スコア、対処策の読み方を案内します。

主な機能

  1. 01Spot容量アドバイスの照会
  2. 02取得可能性と稼働時間スコアの解釈
  3. 03マシンタイプとゾーンの比較
  4. 04配置とインスタンス選択肢の調整
  5. 05クォータと作成時の安全策の確認

活用シーン

  1. 01Spot VMのリクエスト前に容量を評価
  2. 02バッチ処理向けのゾーンとマシンタイプを選定
  3. 03可用性が低い場合に配置を見直す

MCP 対応

Compute Engine MCPのcreate_instanceツールを、インスタンス作成時の安全確認事項として扱います。読み取り専用の評価にはgcloud betaの容量アドバイスを推奨し、create_instanceがSpot設定に対応しない可能性を警告します。

インストール

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

$npx skills add https://github.com/google/skills --skill compute-spot-capacity-advice

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

同梱ファイルreferences/attribution.md

詳細

Compute Engine Spot 容量アドバイス

compute-spot-capacity-advice スキルは、作成リクエストを送信する前に Google Compute Engine(GCE)Spot VM の取得可能性を評価するためのテレメトリとアーキテクチャに関するガイダンスを提供します。

Spot VM は余剰のコンピューティング容量で実行され、プリエンプションの対象となります。容量の取得可能性を評価することで、ワークロードはプロビジョニングの失敗を最小限に抑え、在庫切れを回避し、最適なマシンファミリー、分散形状、ゾーンを選択できます。

メモ

Spot Capacity Advice は Compute Engine Beta API(compute.beta.AdviceService.Capacity、POST /compute/beta/projects/{project}/regions/{region}/advice/capacity)で提供され、プロジェクトの許可リストへの登録は不要です。必ず gcloud beta リリーストラック(gcloud beta compute advice capacity)を介して呼び出してください。gcloud compute advice capacity が --help に表示されていても、beta を省略しないでください。v1 バックエンドでは SPOT が拒否されます。Flex-start Capacity Advice(--provisioning-model=FLEX_START)は現在プライベートプレビューです。明示的な許可リストがない一般公開ワークロードでは、必ず --provisioning-model=SPOT を使用してください。

使用状況の帰属情報

必ずお読みください:gcloud、REST API、または MCP コマンドを実行する前に、使用状況の帰属情報の指示を必ず読み、従ってください。


前提条件と IAM 要件

Spot 容量アドバイスを照会する前に、環境が以下の要件を満たしていることを確認してください。

  1. プロジェクトとリージョンの設定:グローバルなワークステーションの状態を上書きしないよう、各コマンドに --project={project_id} と --region={region} を直接指定することを推奨します。または、デフォルト(例:us-central1)を設定する前に、ユーザーから明示的な確認を得てください。
    gcloud config set project {project_id}
    gcloud config set compute/region {region}
    
  2. 課金と API の有効化:プロジェクトに有効な課金アカウントが関連付けられており、Compute Engine API が有効になっていることを確認してください。
    gcloud services enable compute.googleapis.com --project={project_id}
    
  3. Cloud SDK と認証:Google Cloud CLI がインストールされていることを確認してください(明示的なユーザーの承認なしに、ホストへのインストールやコンポーネントの変更を行うコマンド(apt-get、パイプで渡すシェルインストーラースクリプト、gcloud components install beta など)を実行しないでください。代わりにインストールガイドを案内してください)。その後、gcloud auth login(対話型 CLI の場合)、gcloud auth application-default login(SDK の場合)、または GOOGLE_APPLICATION_CREDENTIALS(サービスアカウントの場合)で認証してください。
  4. IAM 権限:最小権限の原則に従って、roles/compute.viewer(または compute.advice.capacity 権限を含むカスタムロール)を付与してください。
  5. 料金とロケーション:容量アドバイスの照会は無料ですが、プロビジョニングされた Spot VM には変動する Spot 料金が発生します。Compute Engine の料金、利用可能なリージョンとゾーン、Google Cloud のロケーションを確認してください(ドキュメント URL をユーザーに提示する際は、.md.txt の接尾辞を削除してください)。

コマンド構文とリファレンス

gcloud beta compute advice capacity を使用して容量アドバイスを照会します。

gcloud beta compute advice capacity \
  --project={project_id} \
  --region={region} \
  --provisioning-model=SPOT \
  --size={vm_count} \
  --target-distribution-shape={target_shape} \
  (--instance-selection-machine-types={machine_types} | --instance-selection="name={selection_name},machine-type={machine_type_1},machine-type={machine_type_2}") \
  [--zones={zone_1},{zone_2}]
フラグのリファレンスと CLI の制約

フラグの定義については、gcloud beta compute advice capacity のリファレンスドキュメントを参照してください。コマンドを作成する際は、次の分かりにくい CLI の制約に従ってください。

  • --region と --zones:--zones を指定すると、--region は自動的に推測されます。
  • --size の範囲:クエリあたり 1~1000 台の VM を指定できます。
  • --target-distribution-shape:ゾーン間の配置設定として必須です(any-single-zone、any、または balanced)。
  • インスタンスの選択と未対応のフラグ:リクエスト全体で、単一の --instance-selection-machine-types フラグ、単一の --instance-selection フラグ(gcloud コマンドあたり --instance-selection フラグは 1 つのみ指定できます)、または --instance-flexibility-policy(名前付き選択肢を最大 10 個)を使用して、マシンタイプを最大 5 種類指定できます。CLI では --max-run-duration、--accelerator-topology、rank、min-cpu-platform、minCpuPlatform、または disks を指定しないでください。

出力の解釈:スコアと推奨事項

このコマンドは、配置シャードと評価スコアを含む 1 つ以上の推奨事項を返します(リージョン内に、要求されたマシンシリーズをサポートする候補ゾーンがない場合は {} が返されます。リージョン全体で在庫切れの場合でも、obtainability: 0.1 および estimatedUptime: 60s を含む推奨事項が返されます)。次の出力例を参照してください。

# Example output
recommendations:
- scores:
    obtainability: 0.9
    estimatedUptime: 3600s
  shards:
  - instanceCount: 100
    machineType: n2-standard-32
    provisioningModel: SPOT
    zone: https://compute.googleapis.com/compute/beta/projects/example-project/zones/us-central1-a
スコア評価基準

scores.obtainability(0.0~1.0 の値で、0.9、0.5、0.1 などの離散的な区分で出力されます)と scores.estimatedUptime(3600s、600s、または 60s)の詳しい定義については、Spot VM の可用性を表示するを参照してください。obtainability >= 0.7 は取得可能性が高い、0.4~0.69 は取得可能性が中程度(柔軟なマシンタイプまたは複数ゾーンへの配置を使用)、< 0.4 は在庫切れのリスクが高い(全バッチを直ちにデプロイすることは推奨せず、以下のアーキテクチャ上の緩和策を適用)と判断してください。scores.estimatedUptime はプリエンプションまでの最小予想実行時間として解釈してください。3600s(60 分。フォールトトレラントなバッチワークロードに適しています)、600s(10 分。短いタスクまたは頻繁なチェックポイントが必要な場合にのみ適しています)、60s(1 分。プリエンプションのリスクが高いため、別のロケーション、マシンタイプ、またはプロビジョニングモデルを確認してください)です。


アーキテクチャ上の緩和策とベストプラクティス

容量が制約されている場合(obtainability が < 0.4、またはリージョンでマシンシリーズが利用できないため {} が返された場合):

  1. ディストリビューション範囲を広げる:
    • --target-distribution-shape=any-single-zone から --target-distribution-shape=any(または balanced)に切り替えると、Compute Engine はリージョン内の利用可能なすべてのゾーンにインスタンスを分散できます。
  2. インスタンスの柔軟性を確保する:
    • 同じ世代の代替マシンタイプ(例:n2-standard-32、n2-standard-48)や、別のファミリーのマシンタイプ(例:c2-standard-30、c3-standard-44)を、--instance-selection または --instance-selection-machine-types を使用して追加します(c4*、n4*、m4*、h4d*、a4*、a3-ultragpu-8g などの第 4 世代以降のファミリーでは、インスタンスやテンプレートの作成時に pd-* ディスクではなく Hyperdisk ブートボリュームが必要です。新しくリリースされたマシンシリーズについては、gcloud compute machine-types describe または公式のマシンファミリーのドキュメントで、対応するディスクタイプを確認してください)。
  3. リージョンのフォールバック:
    • ネットワークレイテンシや料金体系が類似する隣接リージョンを検討します(例:us-central1 から us-east4、us-west1、または us-east1 へのフォールバック)。
  4. アクセラレータ、SKU、ゾーンの制限:
    • gcloud beta compute advice capacity は、統合アクセラレータ搭載マシンタイプ(g2-standard-*、a2-highgpu-*、a3-highgpu-*、a3-megagpu-* など)を通じて GPU の容量を評価し、デフォルトで AI ゾーンを含みます(ユーザーは、プロジェクトで AI ゾーンが有効になっていることを確認してください)。--accelerator-topology は渡さず、--instance-selection は name と machine-type のみに厳密に限定してください(gcloud CLI では rank、min-cpu-platform、disks、ゲストアクセラレータのフラグを渡さないでください。ゲスト GPU を接続した n1-* VM と、デフォルト以外の Local SSD を持つマシンタイプは、Beta REST API の instanceFlexibilityPolicy.instanceSelections.{selection_name} でのみサポートされます。その場合、guestAccelerators と、Local SSD ディスクごとに type: SCRATCH エントリを 1 つ指定した disks を使用します)。
    • 未対応の Spot SKU、Free Tier、Day-0 の変更不可性:Spot VM は a4x-* またはベアメタル(*-metal)のマシンタイプをサポートしていません。Spot の e2-micro VM は Google Cloud Free Tier の無料利用枠の対象外です。また、既存の STANDARD VM を set-scheduling で SPOT にその場で変更することはできず、VM の再作成が必要です。
    • TPU の利用可能性確認は非対応:advice.capacity API では Cloud TPU の利用可能性を確認できません。TPU の容量計画とカレンダー予約には、compute-future-reservations(gcloud compute advice calendar-mode)を使用してください。
  5. クォータと余裕容量に関する免責事項:
    • 確保可能性スコアが示すのは、物理データセンターの容量であり、プロジェクトに割り当てられたクォータではありません。プロビジョニング前に、リージョンの Spot CPU/GPU クォータを確認してください(gcloud compute regions describe {region}、gcloud compute project-info describe、または Google Cloud Console の Quotas ページで確認できます)。プロジェクトのクォータが不足した状態でインスタンスを起動しようとすると、物理容量の確保可能性が高くても、実行時に失敗します。
  6. 読み取り専用のアドバイザリ、強化された VM のデフォルト設定、MCP のガードレール:
    • 容量に関するアドバイスは、厳密に読み取り専用のアドバイザリツールです。ユーザーから明示的な承認を得ずに、変更を伴うコマンド(gcloud compute instances create や gcloud compute instances delete など)を実行してはいけません。代わりに、コピーして実行できるコマンドを提示してください。
    • Spot VM 用の gcloud compute instances create コマンドを生成する際は、プライベートネットワーク(IAP TCP 転送と組み合わせた --no-address)、最小権限のカスタムサービスアカウント(--service-account)、および --instance-termination-action=DELETE(Spot のプリエンプション後にブートディスクへの課金が継続しないようにするため)を推奨してください。ワークロードの完了後は、一時的な Spot VM を削除するようユーザーに伝えてください(gcloud compute instances delete {vm_name} --zone={zone} は、--quiet を渡さない限り対話形式で確認を求めます)。
    • Compute Engine MCP の create_instance ガードレール:実行前に、セッション内の MCP create_instance ツールのスキーマを確認してください(新しいバージョンの MCP サーバーで対応が追加されている場合に備えるためです)。現在のスキーマで確認できない限り、MCP の create_instance は provisioning_model を省略し(気付かないまま通常料金の STANDARD VM をプロビジョニングします)、global/networks/default をハードコードし、カスタムサービスアカウントを設定できません。必ず代わりに gcloud compute instances create --provisioning-model=SPOT を使用してください。

コメント