予約と確約利用割引を組み合わせる


確約利用割引(CUD)では、1 年間または 3 年間の確約利用契約(コミットメント)と引き換えに Compute Engine リソースに大幅な割引が適用されます。リソースの使用量または費用の最小値を確約して、リソースの使用料に対する CUD を受け取ります。ただし、コミットメントでは、確約したリソースのゾーン容量は予約されません。ゾーンリソースを割引価格で取得し、それに対する容量を予約するには、コミットメントを購入し、ゾーンリソースの予約を作成する必要があります。

このドキュメントでは、予約済みリソースの CUD を受け取る方法と、予約をリソースベースのコミットメントに関連付ける方法について説明します。

始める前に

  • 予約の基本、要件、制限事項を確認します。詳細については、Compute Engine ゾーンリソースの予約をご覧ください。
  • まだ設定していない場合は、認証を設定します。認証とは、Google Cloud サービスと API にアクセスするために ID を確認するプロセスです。ローカル開発環境からコードまたはサンプルを実行するには、次のように Compute Engine に対する認証を行います。

    このページのサンプルをどのように使うかに応じて、タブを選択してください。

    コンソール

    Google Cloud コンソールを使用して Google Cloud サービスと API にアクセスする場合、認証を設定する必要はありません。

    gcloud

    1. Google Cloud CLI をインストールし、次のコマンドを実行して初期化します。

      gcloud init
    2. デフォルトのリージョンとゾーンを設定します

    REST

    このページの REST API サンプルをローカル開発環境で使用するには、gcloud CLI に指定した認証情報を使用します。

      Google Cloud CLI をインストールし、次のコマンドを実行して初期化します。

      gcloud init

予約済みリソースに対する CUD

CUD は、プロジェクトで対象となるリソース使用量の有効なコミットメントから受け取ります。そのプロジェクトのリソース容量を確保する予約がある場合、有効なコミットメントの CUD も予約リソースに適用できます。予約済みリソースが CUD の対象となるには、次の要件を満たしている必要があります。

  • リソース使用量について、他の割引を受けることはできません。
  • コミットメントが有効な間は、VM で予約を使用する必要があります。
  • 少なくとも、有効なコミットメントと VM が使用する予約で、次のプロパティが一致している必要があります。

    • 適用されるプロジェクトとリージョン
    • マシン ファミリー シリーズ

リソースの種類に応じて、予約済みリソースに対する CUD を次のいずれかの方法で受け取ることができます。

  • vCPU とメモリ: これらのリソースタイプのいずれか、または両方の CUD を受け取るには、必要なリソースタイプを含むリソースベースまたは費用ベースのコミットメントを購入します。プロジェクトの VM が、このような有効なコミットメントに一致するプロパティの予約を使用すると、これらのタイプの予約済みリソースに適用可能な CUD が自動的に適用されます。確約した数よりも多くのリソースを予約した場合、それらの追加リソースには CUD は適用されません。

  • GPU とローカル SSD ディスク: これらのリソースタイプのいずれか、または両方の CUD を受け取るには、次のことを行う必要があります。

    • 必要なリソースタイプを含むリソースベースのコミットメントを購入します。
    • コミットメントに一致するプロパティを持つすべての確約済みリソースの予約を作成し、それらの予約をコミットメントに関連付けます。

    プロジェクトの VM がこれらの関連付けられた予約を消費すると、これらのタイプの予約リソースに該当する CUD が適用されます。

リソースベースのコミットメントに予約を関連付ける

リソースベースのコミットメントに予約を関連付けることで、使用予定の確約リソースの容量を特定のゾーンに確保できます。1 つのコミットメントに複数の予約を関連付けることができますが、予約は 1 つのコミットメントにのみ関連付けることができます。コミットメントを購入すると、次のいずれかの方法でそのコミットメントに予約を関連付けることができます。

  • プロパティがコミットメントと一致する既存の予約を使用する
  • コミットメントの購入時に一致する予約を新たに作成する

予約が関連付けられたコミットメントを購入すると、コミットメントが有効である限り、予約も有効なままになります。コミットメントが期限切れになると、Compute Engine は関連付けられた予約を自動的に削除します。これらの予約を削除しても、その予約を使用していた実行中の VM には影響しません。実行中の VM は引き続き実行され、これらの VM には料金が発生します。

予約が関連付けられていることが必要でない確約リソース

確約された vCPU とメモリの場合、一致する予約をコミットメントに関連付ける必要はありません。ただし、vCPU、メモリ、またはその両方を含むコミットメントを購入する場合、それらのリソースを指定する予約を関連付けることもできます。予約を関連付けずに vCPU、メモリ、またはその両方を含むコミットメントを購入する方法については、予約が関連付けられていないコミットメントの購入をご覧ください。

予約が関連付けられていることが必要な確約リソース

確約された GPU とローカル SSD ディスクの場合、一致する予約をコミットメントに関連付ける必要があります。GPU、ローカル SSD ディスク、またはその両方を含むコミットメントを購入する場合は、これらのリソースを予約し、その予約をコミットメントに関連付ける必要があります。これを行うには、単一の予約または複数の予約の組み合わせを使用します。このようなコミットメントを購入する際に、vCPU やメモリ、またはその両方を含めることもできます。ただし、これらの vCPU やメモリを予約する必要はありません。GPU とローカル SSD ディスク、またはその両方を含むコミットメントを購入する方法については、このドキュメントの予約が関連付けられているコミットメントを購入するをご覧ください。

GPU とローカル SSD ディスクの CUD をサポートするマシンシリーズの詳細なリストについては、リソースベースの CUD ドキュメントのコミットメント タイプのセクションをご覧ください。

関連付けられた予約で許可されるリソースの数量

vCPU とメモリの場合は、確約する量よりも多いリソースまたは少ないリソースを指定する予約を関連付けることができます。予約した vCPU またはメモリよりも多くの vCPU またはメモリを確約した場合、Compute Engine は予約されたリソースに対してのみ容量を予約します。ただし、リージョンでの可用性に応じて追加の確約リソースを使用できます。確約した数よりも多くの vCPU またはメモリを予約した場合、予約した追加リソースの CUD は適用されません。

たとえば、4 個の vCPU と 30 GB のメモリのコミットメントを購入する場合、次のいずれかを選択できます。

  • 予約をまったく関連付けない。
  • これらのリソースタイプの任意の組み合わせを指定して予約を関連付ける。例:

    • vCPU 4 個、メモリ 30 GB
    • vCPU 2 個、メモリ 50 GB
    • vCPU 10 個、メモリ 10 GB

ただし、コミットメントに GPU、ローカル SSD ディスク、またはその両方が含まれている場合は、それらのリソースをすべて予約して関連付ける必要があります。関連付ける予約では、確約する GPU ディスクとローカル SSD ディスクの正確な数とタイプを指定する必要があります。このため、関連付ける予約に GPU またはローカル SSD ディスクの数やタイプを追加することはできません。たとえば、30 GB のメモリと 4 個の NVIDIA P100 GPU のコミットメントを購入するとします。関連付ける予約または予約の組み合わせでは、任意の数の vCPU またはメモリを指定できますが、NVIDIA P100 タイプの GPU が 4 個必要です。この例では、次のリソースの組み合わせを指定して予約を関連付けることはできません。

  • NVIDIA P100 GPU 6 個
  • NVIDIA P100 GPU 2 個
  • NVIDIA P100 GPU 4 個、NVIDIA V100 GPU 2 個
  • NVIDIA P100 GPU 4 個、ローカル SSD ディスク 4 個

予約が関連付けられているコミットメントを購入する

新しいコミットメントを購入する際、次のいずれかの方法で予約をコミットメントに関連付けることができます。

コミットメントを購入すると、米国およびカナダの太平洋時間(UTC-8 または夏時間の UTC-7)で翌日の午前 0 時にコミットメントが有効になります。コミットメントの購入から有効化までの間、コミットメントのステータスは NOT_YET_ACTIVE(Google Cloud コンソールでは PENDING)のままとなります。有効になると、コミットメントのステータスは ACTIVE に変わります。たとえば、米国とカナダの太平洋時間(UTC-8 または UTC-7)の 1 月 20 日午後 10 時にコミットメントを購入したとします。Compute Engine は、ステータスが NOT_YET_ACTIVE のコミットメントをすぐに作成します。ただし、コミットメントが ACTIVE になるのは、米国およびカナダの太平洋時間(UTC-8 または UTC-7)の 1 月 21 日午前 0 時です。

要件

予約が関連付けられたコミットメントを購入する前に、これらの要件を確認し、コミットメントと予約が次の条件を満たしていることを確認してください。

  • コミットメントを購入し、関連付ける予約を同じプロジェクトとリージョンに作成する必要があります。
  • コミットメントを購入し、関連付ける予約を同じマシン ファミリー シリーズのリソースに作成する必要があります。
  • 関連付ける予約の自動削除オプションを無効にする必要があります。
  • コミットメントに GPU がある場合、予約とコミットメントに指定された GPU タイプが一致している必要があります。
  • GPU とローカル SSD ディスクの場合、各リソースタイプの予約リソースの数は、そのリソースタイプの確約されたリソースの数と正確に一致している必要があります。たとえば、4 個の V100 GPU のコミットメントを購入する場合、コミットメントに関連付ける予約には合計 4 個の V100 GPU を指定する必要があります。ただし、予約する vCPU とメモリの量は、コミットメントよりも少なくまたは多くすることができます。
  • GPU の場合、使用する特定の GPU タイプのコミットメントを購入します。たとえば、NVIDIA P100 または NVIDIA V100 のいずれかのコミットメントを購入できますが、NVIDIA P100 GPU 用に購入したコミットメントを NVIDIA V100 GPU に使用することはできません。
  • 関連付ける予約が共有予約であり、コミットメントのプロジェクト外で予約を使用するときに該当する CUD を受け取る場合は、次の両方を行う必要があります。

    • コミットメントと同じ Cloud 請求先アカウントに属するプロジェクト間でのみ予約を共有する。
    • その Cloud 請求先アカウントで CUD 共有を有効にする

既存の予約を関連付ける

コミットメントを購入する際に、Google Cloud コンソール、Google Cloud CLI、または REST を使用して既存の予約に関連付けることができます。

コンソール

Google Cloud コンソールを使用してコミットメントを購入する前に、コミットメントの購入に使用するプロジェクトを選択します。Cloud 請求先アカウントで CUD の共有が有効になっている場合、その Cloud 請求先アカウントの任意のプロジェクトを使用してコミットメントを購入できます。プロジェクトを選択したら、次の操作を行います。

  1. Google Cloud コンソールで [確約利用割引] ページに移動します。

    [確約利用割引] ページに移動

  2. [コミットメントを購入] をクリックして、新しいコミットメントを購入します。[確約利用割引の購入] ページが開き、[ハードウェア] タブが表示されます。

  3. [名前] フィールドに、コミットメントの名前を入力します。

  4. [リージョン] フィールドで、Compute Engine リソースを確約するリージョンを選択します。

  5. [コミットメント タイプ] フィールドで、確約されたリソースのマシン ファミリー シリーズを選択します。

  6. [期間] フィールドで、コミットメントの期間を選択します。

  7. [コア数] フィールドに、確約する vCPU の数を入力します。

  8. [メモリ] フィールドに、確約するメモリ容量(GB)を入力します。

  9. GPU を確約するには、[GPU] セクションで [ GPU を追加] をクリックし、次の操作を行います。

    1. [GPU のタイプ] フィールドで、GPU のタイプを選択します。
    2. [GPU の数] フィールドに、GPU の数を入力します。
    3. 省略可: GPU モデルがグラフィック ワークロード用の NVIDIA RTX 仮想ワークステーション(vWS)をサポートし、グラフィックを多用するワークロードを実行する予定がある場合は、[仮想ワークステーション(NVIDIA GRID)を有効にする] チェックボックスを選択します。
  10. ローカル SSD ディスクを確約するには、[ローカル SSD] セクションで、 [SSD を追加] をクリックし、[SSD の数] フィールドにディスクの数を指定します。

  11. 1 つ以上の既存の予約をコミットメントに関連付けるには、[予約] フィールドで [既存の予約を関連付ける] を選択します。

    Google Cloud コンソールに、プロジェクト内でリージョン、マシンタイプ、GPU タイプがコミットメントと一致する予約のリストが表示されます。次に、以下の操作を行います。

    1. 省略可。特定のプロパティの予約を表示するには、[フィルタ] メニューで、目的のプロパティのフィルタを追加または削除します。
    2. コミットメントに関連付ける予約をすべて選択します。
  12. 予約を関連付けてコミットメントの購入を完了するには、次の操作を行います。

    1. [購入] をクリックします。
    2. [確約利用割引の購入] ダイアログで、サービス固有の利用規約に同意する場合は、もう一度 [購入] をクリックします。

gcloud

既存の予約を関連付けてコミットメントを購入するには、gcloud compute commitments create コマンドを実行します。コマンドに --existing-reservation フラグを指定して、コミットメントに関連付ける既存の予約を指定します。関連付ける予約ごとに、このフラグの新しいインスタンスを追加します。コミットメントには任意の数の既存の予約を関連付けることができます。

たとえば、2 つの予約をコミットメントに関連付けるには、次のコマンドを実行します。

gcloud compute commitments create COMMITMENT_NAME \
    --region=REGION \
    --project=PROJECT_ID \
    --resources=vcpu=COMMITTED_VCPUS,memory=COMMITTED_MEMORY,local-ssd=COMMITTED_LOCAL_SSD \
    --resources-accelerator=count=COMMITTED_ACCELERATOR_COUNT,type=COMMITTED_ACCELERATOR_TYPE \
    --plan=DURATION \
    --type=COMMITMENT_TYPE \
    --existing-reservation=name='RESERVATION_NAME_1',zone='RESERVATION_ZONE_1' \
    --existing-reservation=name='RESERVATION_NAME_2',zone='RESERVATION_ZONE_2'

次のように置き換えます。

  • COMMITMENT_NAME: コミットメントの名前。
  • REGION: コミットメントのリージョン。
  • PROJECT_ID: 予約が関連付けられているコミットメントを購入するプロジェクトの ID。
  • DURATION: コミットメントの期間(12-month または 36-month)。
  • COMMITMENT_TYPE: コミットメントのタイプ。次のコミットメントのタイプでは、GPU、ローカル SSD ディスク、またはその両方を使用できます。

    • accelerator-optimized: マシンタイプのリソース
    • compute-optimized: C2 マシンタイプのリソース
    • compute-optimized-c2d: C2D マシンタイプのリソース
    • compute-optimized-c3: C3 マシンタイプのリソース
    • compute-optimized-c3d: C3D マシンタイプのリソース
    • general-purpose: N1 マシンタイプのリソース
    • general-purpose-e2: E2 マシンタイプのリソース
    • general-purpose-n2: N2 マシンタイプのリソース
    • general-purpose-n2d: N2D マシンリソース
    • general-purpose-t2d: Tau T2D マシンタイプのリソース
    • graphics-optimized: G2 マシンタイプ リソース
    • memory-optimized: M1 または M2 マシンタイプのリソース
    • memory-optimized-m3: メモリ最適化 M3 マシンタイプ
  • COMMITTED_VCPUS: コミットメントに必要な vCPU の数。数値には任意の正の整数を指定できます。

  • COMMITTED_MEMORY: コミットメントに必要なメモリの量(MB または GB)。たとえば、10240MB や、10GB などです。単位を指定しない場合、Compute Engine は単位として GB を使用します。メモリは 0.25 GB 単位で購入できます。

  • COMMITTED_LOCAL_SSD: コミットメントに必要なローカル SSD 容量の容量(GB)。各ローカル SSD ディスクは 375 GB です。

  • COMMITTED_ACCELERATOR_COUNT: コミットメントで必要な GPU の数。

  • COMMITTED_ACCELERATOR_TYPE: コミットメントに必要な GPU タイプ。

  • RESERVATION_NAME_1RESERVATION_NAME_2: コミットメントに関連付ける既存の予約の名前。

  • RESERVATION_ZONE_1RESERVATION_ZONE_2: コミットメントに関連付ける既存の予約のゾーン。

例: 既存の予約を関連付けてコミットメントを購入する

プロジェクト myprojectus-central1-a ゾーンと us-central1-b ゾーンに、res-01res-02 の 2 つの予約があるとします。これらの予約で 4 個の NVIDIA P100 GPU と 4 個のローカル SSD ディスクの合計容量が指定されているとします。このプロジェクトの us-central1 リージョンでこれらの GPU とローカル SSD ディスクの新しいコミットメントを購入し、これらの既存の予約を関連付けられた予約として使用するには、次のコマンドを実行します。サンプルのコミットメントには vCPU とメモリも含まれます。

gcloud compute commitments create commitment-01 \
    --region=us-central1 \
    --project=myproject \
    --resources=vcpu=96,memory=624GB \
    --resources-accelerator=type=nvidia-tesla-v100,count=4 \
    --plan 12-month \
    --existing-reservation=name=res-01,zone=us-central1-a \
    --existing-reservation=name=res-02,zone=us-central1-b
    

REST

既存の予約を関連付けてコミットメントを購入するには、regionCommitments.insert メソッドPOST リクエストを送信します。リクエストに existingReservations フィールドを含めて、コミットメントに関連付ける既存の予約をカンマ区切りのリストで指定します。コミットメントには任意の数の既存の予約を関連付けることができます。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/commitments

{
  "name": "COMMITMENT_NAME",
  "plan": "DURATION",
  "type": COMMITMENT_TYPE,
  "resources":
  [
    {
      "amount": "COMMITTED_VCPUS",
      "type": "VCPU"
    },
    {
      "amount": "COMMITTED_MEMORY",
      "type": "MEMORY"
    },
    {
      "acceleratorType": "COMMITTED_ACCELERATOR_TYPE",
      "amount": "COMMITTED_ACCELERATOR_COUNT",
      "type": "ACCELERATOR"
    }
    {
      "amount": "COMMITTED_LOCAL_SSD",
      "type": "LOCAL_SSD"
    }
  ],
  "existingReservations": "RESERVATION_URLs"
}

次のように置き換えます。

  • COMMITMENT_NAME: コミットメントの名前。
  • REGION: コミットメントのリージョン。
  • PROJECT_ID: 予約が関連付けられているコミットメントを購入するプロジェクトの ID。
  • DURATION: コミットメントの期間(TWELVE_MONTH または THIRTY_SIX_MONTH)。
  • COMMITMENT_TYPE: コミットメントのタイプ。次のコミットメントのタイプでは、GPU、ローカル SSD ディスク、またはその両方を使用できます。

    • GENERAL_PURPOSE_E2: E2 マシンタイプのリソース
    • GENERAL_PURPOSE_N2: N2 マシンタイプのリソース
    • GENERAL_PURPOSE_N2D: N2D マシンリソース
    • COMPUTE_OPTIMIZED_C3: C3 マシンタイプのリソース
    • GENERAL_PURPOSE_C3D: C3D マシンタイプのリソース
    • GENERAL_PURPOSE_T2D: Tau T2D マシンタイプのリソース
    • GENERAL_PURPOSE: N1 マシンタイプのリソース
    • COMPUTE_OPTIMIZED: C2 マシンタイプのリソース
    • COMPUTE_OPTIMIZED_C2D: C2D マシンタイプのリソース
    • MEMORY_OPTIMIZED: M1 または M2 マシンタイプのリソース
    • MEMORY_OPTIMIZED_M3: メモリ最適化 M3 マシンタイプ
    • ACCELERATOR_OPTIMIZED: マシンタイプのリソース
    • GRAPHICS_OPTIMIZED: G2 マシンタイプ リソース
  • COMMITTED_VCPUS: コミットメントに必要な vCPU の数。数値には任意の正の整数を指定できます。

  • COMMITTED_MEMORY: コミットメントに必要なメモリ量(MB)。たとえば、10240MB のようにします。メモリは 256 MB 単位で購入できます。

  • COMMITTED_LOCAL_SSD: コミットメントに必要なローカル SSD ストレージの量(GB)。各ローカル SSD ディスクは 375 GB です。

  • COMMITTED_ACCELERATOR_COUNT: コミットメントで必要な GPU の数。

  • COMMITTED_ACCELERATOR_TYPE: コミットメントに必要な GPU タイプ。

  • RESERVATION_URLs: コミットメントに関連付ける既存の予約の URL のカンマ区切りリスト。たとえば、res-1res-2 の 2 つの予約を関連付けるには、次のように指定します。

    "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/reservations/example-res-1",
    "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-c/reservations/example-res-2"
    

例: 既存の予約を関連付けてコミットメントを購入する

プロジェクト myprojectus-central1-a ゾーンと us-central1-b ゾーンに、res-01res-02 の 2 つの予約があるとします。これらの予約で 4 個の NVIDIA P100 GPU と 4 個のローカル SSD ディスクの合計容量が指定されているとします。このプロジェクトの us-central1 リージョンでこれらの GPU とローカル SSD ディスクの新しいコミットメントを購入し、これらの既存の予約を関連付けられた予約として使用するには、次の POST リクエストを送信します。サンプルのコミットメントには vCPU とメモリも含まれます。

POST https://compute.googleapis.com/compute/v1/projects/my-project/regions/us-central1/commitments

{
  "name": "commitment-01",
  "plan": "TWELVE_MONTH",
  "type": "GENERAL_PURPOSE"
  "resources":
  [
    {
      "amount": "96",
      "type": "VCPU"
    },
    {
      "amount": "638976",
      "type": "MEMORY"
    },
    {
      "acceleratorType": "nvidia-tesla-v100",
      "amount": "4",
      "type": "ACCELERATOR"
    },
    {
      "amount": "1536000",
      "type": "LOCAL_SSD"
    }
  ],
  "existingReservations":
  [
    "https://www.googleapis.com/compute/v1/projects/my-project/zone/us-central1-a/reservations/res-01",
    "https://www.googleapis.com/compute/v1/projects/my-project/zone/us-central1-b/reservations/res-02"
  ]
}

関連付ける新しい予約を作成する

コミットメントを購入する際に、Google Cloud コンソール、Google Cloud CLI、または REST を使用して、関連付ける予約を作成できます。

コンソール

Google Cloud コンソールを使用してコミットメントを購入する前に、コミットメントの購入に使用するプロジェクトを選択します。Cloud 請求先アカウントで CUD の共有が有効になっている場合、その Cloud 請求先アカウントの任意のプロジェクトを使用してコミットメントを購入できます。プロジェクトを選択したら、次の操作を行います。

  1. Google Cloud コンソールで [確約利用割引] ページに移動します。

    [確約利用割引] ページに移動

  2. [コミットメントを購入] をクリックして、新しいコミットメントを購入します。[確約利用割引の購入] ページが開き、[ハードウェア] タブが表示されます。

  3. [名前] フィールドに、コミットメントの名前を入力します。

  4. [リージョン] フィールドで、Compute Engine リソースを確約するリージョンを選択します。

  5. [コミットメント タイプ] フィールドで、確約されたリソースのマシン ファミリー シリーズを選択します。

  6. [期間] フィールドで、コミットメントの期間を選択します。

  7. [コア数] フィールドに、確約する vCPU の数を入力します。

  8. [メモリ] フィールドに、確約するメモリ容量(GB)を入力します。

  9. GPU を確約するには、[GPU] セクションで [ GPU を追加] をクリックし、次の操作を行います。

    1. [GPU のタイプ] フィールドで、GPU のタイプを選択します。
    2. [GPU の数] フィールドに、GPU の数を入力します。
    3. 省略可: GPU モデルがグラフィック ワークロード用の NVIDIA RTX 仮想ワークステーション(vWS)をサポートし、グラフィックを多用するワークロードを実行する予定がある場合は、[仮想ワークステーション(NVIDIA GRID)を有効にする] チェックボックスを選択します。
  10. ローカル SSD ディスクを確約するには、[ローカル SSD] セクションで、 [SSD を追加] をクリックし、[SSD の数] フィールドにディスクの数を指定します。

  11. 新しい予約を作成してコミットメントに関連付けるには、[予約] フィールドで [予約を作成する] を選択し、次の操作を行います。作成して関連付ける新しい予約ごとに、この手順を繰り返します。

    1. [予約を追加] をクリックします。[新規予約] セクションが表示されます。
    2. [名前] フィールドに、関連付ける予約の名前を入力します。
    3. [リージョン] フィールドで、コミットメントと同じリージョンを選択します。
    4. [ゾーン] フィールドで、リソースを予約するゾーンを選択します。
    5. [共有タイプ] セクションで、次のいずれかの方法でこの予約を共有する方法を指定します。

      • 単一プロジェクトの予約を作成するには、[ローカル] を選択します。
      • 複数のプロジェクトで共有される予約を作成するには、[共有] を選択します。次に、この予約を共有するプロジェクトを指定するには、[ プロジェクトを追加] をクリックし、現在のプロジェクトの組織から必要なプロジェクトを選択します。
    6. [VM インスタンスでの使用] フィールドで、VM が予約を消費する方法を選択します(次のいずれかの方法を選択します)。

      • 一致するプロパティを持つ VM がこの予約を自動的に使用できるようにするには、[予約を自動的に使用する] をクリックします(デフォルト)。
      • この予約の名前と一致するプロパティを持つ VM を作成する場合にのみ、この予約のリソースを使用するには、[特定の予約を選択する] を選択します。
    7. [リソースの詳細] セクションで、次の操作を行います。

      1. [VM インスタンスの数] フィールドに、予約する VM インスタンスの数を入力します。
      2. [マシンの構成] セクションで、次のいずれかの方法で予約 VM のプロパティを指定します。

        1. 既存のインスタンス テンプレートを使用して VM のプロパティを指定するには、[インスタンス テンプレートを使用] を選択します。

          [インスタンス テンプレート] フィールドで、コミットメントと同じマシン ファミリー シリーズのインスタンス テンプレートを選択します。リージョン インスタンス テンプレートを選択する場合は、そのインスタンス テンプレートのリージョンも、コミットメントで指定されたリージョンと一致する必要があります。

        2. VM のプロパティを手動で指定するには、[Select machine type] を選択して、次の操作を行います。

          1. コミットメントに指定したマシンシリーズに適用されるマシン ファミリーを選択します。

            • 汎用: 汎用マシンシリーズ
            • コンピューティング最適化: コンピューティング最適化マシンシリーズ
            • メモリ最適化: メモリ最適化マシンシリーズ
            • GPU: アクセラレータ最適化マシンシリーズ
          2. [シリーズ] 列があるテーブルで、コミットメントに指定したマシンシリーズを選択します。

          3. [マシンタイプ] フィールドで、次のいずれかの方法で事前定義またはカスタムのマシンタイプを指定します。

            1. 事前定義されたマシンタイプを選択するには、[プリセット] を選択してから、必要なマシンタイプを選択します。
            2. カスタム マシンタイプを選択するには、[カスタム] を選択し、必要なコア数メモリを指定します。
          4. 最小 CPU プラットフォーム、GPU、またはその両方を指定するには、[ CPU プラットフォームと GPU] メニューを開いて、次の操作を行います。

            1. 省略可: 最小 CPU プラットフォームを指定するには、[CPU プラットフォーム] リストでオプションを選択します。
            2. 省略可: GPU を予約するには、 [GPU を追加する] をクリックします。次に、[GPU タイプ] フィールドと [GPU の数] フィールドで、各 VM の GPU のタイプと数を選択します。

          5. ローカル SSD ディスクを予約する手順は次のとおりです。

            1. [ディスクの数] フィールドで、各 VM に必要なローカル SSD ディスクの数を選択します。
            2. [インターフェース タイプ] フィールドで、ローカル SSD ディスクのインターフェースを選択します。
    8. この予約のプロパティの指定を完了するには、[完了] をクリックします。

  12. 予約を関連付けてコミットメントの購入を完了するには、次の操作を行います。

    1. [購入] をクリックします。
    2. [確約利用割引の購入] ダイアログで、サービス固有の利用規約に同意する場合は、もう一度 [購入] をクリックします。

gcloud

コミットメントの購入時に関連付ける予約を作成するには、gcloud compute commitments create コマンドを実行します。

単一の予約を関連付けるか複数の予約を関連付けるかに応じて、次のいずれかの方法でコマンドを実行します。

  • 単一の予約を作成してコミットメントに関連付けるには、次のコマンドを実行して、関連付ける予約のプロパティを定義します。

    gcloud compute commitments create COMMITMENT_NAME \
        --region=REGION \
        --project=PROJECT_ID \
        --plan DURATION \
        --type COMMITMENT_TYPE
        --resources=vcpu=COMMITTED_VCPUS,memory=COMMITTED_MEMORY,local-ssd=COMMITTED_LOCAL_SSD \
        --resources-accelerator=count=COMMITTED_ACCELERATOR_COUNT,type=COMMITTED_ACCELERATOR_TYPE \
        --reservation=RESERVATION_NAME \
        --reservation-zone=RESERVATION_ZONE \
        --machine-type=RESERVED_MACHINE_TYPE \
        --require-specific-reservation=REQUIRE_SPECIFIC_RESERVATION_VALUE \
        --vm-count=NUMBER_OF_RESERVED_VMs \
        --accelerator=type=RESERVED_ACCELERATOR_TYPE,count=RESERVED_ACCELERATOR_COUNT \
        --local-ssd=interface=INTERFACE_1,size=375 \
        --local-ssd=interface=INTERFACE_2,size=375 \
        --minimum-cpu-platform=MINIMUM_CPU_PLATFORM \
        --share-setting=SHARE_SETTING \
        --share-with=CONSUMER_PROJECT_ID_1,CONSUMER_PROJECT_ID_2
    
  • 複数の予約を作成してコミットメントに関連付けるには、YAML ファイルを使用して予約のプロパティを定義し、コミットメントの購入に使用するコマンドでその YAML ファイルを指定します。必要に応じて、この YAML ファイルを使用して単一の予約を作成し、コミットメントに関連付けることもできます。関連付けられる予約をこの方法で作成する手順は次のとおりです。

    1. 現在のディレクトリに YAML ファイルを作成し、関連付ける予約ごとに必要な構成を指定します。たとえば、GPU、2 つのローカル SSD ディスク、最小 CPU プラットフォームを指定する 2 つのプロジェクトと共有される共有予約の構成を指定するには、YAML ファイルに次のテキストを追加します。

      - reservation: RESERVATION_NAME
        reservation_zone: RESERVATION_ZONE
        require_specific_reservation: REQUIRE_SPECIFIC_RESERVATION_VALUE
        vm_count: NUMBER_OF_RESERVED_VMs
        machine_type: RESERVED_MACHINE_TYPE
        accelerator:
        - count: RESERVED_ACCELERATOR_COUNT
          type: RESERVED_ACCELERATOR_TYPE
        localssd:
        - interface: INTERFACE_1
          size: 375
        - interface: INTERFACE_2
          size: 375
        project: OWNER_PROJECT_ID
        minimum-cpu-platform: MINIMUM_CPU_PLATFORM
        share-setting: SHARE_SETTING
        share-with:
        - CONSUMER_PROJECT_ID_1
        - CONSUMER_PROJECT_ID_2
      
      

      複数の予約の構成を指定するには、作成する予約ごとにこれらのプロパティを繰り返します。コミットメントには、任意の数の既存の予約を追加できます。

    2. --reservation-from-file フラグを指定して gcloud compute commitments create コマンドを実行します。

      gcloud compute commitments create COMMITMENT_NAME \
          --region REGION \
          --project PROJECT_ID \
          --plan DURATION \
          --type COMMITMENT_TYPE \
          --resources=vcpu=COMMITTED_VCPUS,memory=COMMITTED_MEMORY,local-ssd=COMMITTED_LOCAL_SSD \
          --resources-accelerator=count=COMMITTED_ACCELERATOR_COUNT,type=COMMITTED_ACCELERATOR_TYPE \
          --reservations-from-file=YAML_FILE
      

以下は、コミットメントと関連付けられている予約の対応するプロパティに置き換えます。

コミットメント

  • COMMITMENT_NAME: コミットメントの名前。
  • REGION: コミットメントのリージョン。
  • PROJECT_ID: 予約が関連付けられているコミットメントを購入するプロジェクトの ID。
  • DURATION: コミットメントの期間(12-month または 36-month)。
  • COMMITMENT_TYPE: コミットメントのタイプ。次のコミットメントのタイプでは、GPU、ローカル SSD ディスク、またはその両方を使用できます。

    • general-purpose-e2: E2 マシンタイプのリソース
    • general-purpose-n2: N2 マシンタイプのリソース
    • general-purpose-n2d: N2D マシンリソース
    • compute-optimized-c3: C3 マシンタイプのリソース
    • general-purpose-c3d: C3D マシンタイプのリソース
    • general-purpose-t2d: Tau T2D マシンタイプのリソース
    • general-purpose: N1 マシンタイプのリソース
    • compute-optimized: C2 マシンタイプのリソース
    • compute-optimized-c2d: C2D マシンタイプのリソース
    • memory-optimized: M1 または M2 マシンタイプのリソース
    • memory-optimized-m3: メモリ最適化 M3 マシンタイプ
    • accelerator-optimized: マシンタイプのリソース
    • graphics-optimized: G2 マシンタイプ リソース
  • COMMITTED_VCPUS: コミットメントに必要な vCPU の数。数値には任意の正の整数を指定できます。

  • COMMITTED_MEMORY: コミットメントに必要なメモリの量(MB または GB)。たとえば、10GB や、10240MB などです。単位を指定しない場合、Compute Engine は単位として GB を使用します。メモリは 0.25 GB 単位で購入できます。

  • COMMITTED_LOCAL_SSD: コミットメントに必要なローカル SSD ストレージの量(GB)。各ローカル SSD ディスクは 375 GB です。

  • COMMITTED_ACCELERATOR_COUNT: コミットメントで必要な GPU の数。

  • COMMITTED_ACCELERATOR_TYPE: コミットメントに必要な GPU タイプ。

  • YAML_FILE: 関連付けられた予約の構成を含む YAML ファイルのパス。

関連付けられた予約

  • RESERVATION_NAME: 関連付ける予約の名前。
  • RESERVATION_ZONE: 関連付ける予約のゾーン。
  • REQUIRE_SPECIFIC_RESERVATION_VALUE: 関連付ける予約が明示的に対象とする予約かどうかを指定します(true または false)。特定の予約について詳しくは、予約の仕組みをご覧ください。
  • NUMBER_OF_RESERVED_VMS: 関連付ける予約で予約する VM の数。
  • RESERVED_MACHINE_TYPE: 関連付ける予約の VM に必要なマシンタイプ

    • マシンタイプが事前定義の場合は、MACHINE_FAMILY-standard-CPUS の形式を使用します(例: n2-standard-4)。
    • マシンタイプがカスタムの場合は、MACHINE_FAMILY-custom-CPUS-MEMORY の形式を使用します(例: n2-custom-4-5120)。詳しい制限事項については、カスタム マシンタイプの仕様をご覧ください。

      次のように置き換えます。

      • MACHINE_FAMILY: マシンタイプのファミリー。たとえば、N2 VM の場合は n2 を指定します。
      • CPUS: vCPU の数。
      • MEMORY: 予約済み VM の合計メモリ。メモリの量には、256 MB の倍数を MB 単位で指定します。たとえば、4 個の vCPU と 5 GB(5,120 MB)のメモリを搭載した N2 VM を作成するには、n2-custom-4-5120 を使用します。
  • RESERVED_ACCELERATOR_COUNT: 関連付ける予約で VM ごとに追加する GPU の数。

  • RESERVED_ACCELERATOR_TYPE: 関連付ける予約に追加するアクセラレータのタイプ

  • INTERFACE_1INTERFACE_2: 各予約済み VM のローカル SSD ディスクで使用するインターフェースのタイプ。有効なオプションは scsinvme です。各ローカル SSD ディスクは 375 GB です。追加するローカル SSD ディスクごとに local_ssd パラメータを繰り返します。ローカル SSD ディスクは 24 個まで指定できます。

  • OWNER_PROJECT_ID: 関連付ける予約でコミットメントを購入するプロジェクトの ID。複数のコンシューマー プロジェクトで関連する予約を共有する場合は、このフィールドを指定します。

  • MINIMUM_CPU_PLATFORM: 関連付ける予約に指定する最小 CPU プラットフォーム。

  • SHARE_SETTING: 関連付ける予約の共有タイプ。複数のコンシューマー プロジェクトで関連する予約を共有する場合は、このフィールドに projects の値を指定します。単一プロジェクトの予約を作成する場合は、このフィールドを除外します。

  • CONSUMER_PROJECT_ID_1CONSUMER_PROJECT_ID_2: この予約を共有できるプロジェクトのプロジェクト ID(例: project-1project-2)。最大 100 個のコンシューマー プロジェクトを含めることができます。これらのプロジェクトは、オーナー プロジェクトと同じ組織に存在している必要があります。この予約を作成するプロジェクトの ID は含めないでください。このプロジェクトはデフォルトでこの予約を使用できます。単一プロジェクトの予約を作成する場合は、これらのフィールドを除外します。

Compute Engine は、ターゲット ゾーンで指定されたマシンタイプに十分なリソースがあり、リクエスト時に十分な割り当てがある場合にのみ、コミットメントとそれに関連する予約を作成します。購入が成功すると、次のような成功メッセージが表示されます。

Created[https://www.googleapis.com/compute/v1/projects/your-project/regions/your-region/commitments/your-commitment-name]

関連付ける新しい予約を作成してコミットメントを購入する例

次のシナリオとコマンドの例は、コミットメントに関連付ける新しい予約を作成して、GPU、ローカル SSD ディスク、またはその両方のコミットメントを購入する方法を示しています。

例 1: 新しい予約を 1 つだけ関連付けて GPU のコミットメントを購入する

4 個の NVIDIA V100 GPU を含む us-central1 リージョンでコミットメント commitment-01 を購入するとします。これらの GPU の関連付けられた予約として、新しい予約 reservation-01 を作成します。us-central1-a ゾーンの 2 台の n1-standard-32 VM でこれらの予約済み GPU を使用するように Compute Engine を指定するとします。予約が関連付けられているこのサンプルのコミットメントを購入するには、次のコマンドを実行します。

gcloud compute commitments create commitment-01 \
    --region=us-central1 \
    --project=myproject \
    --resources=vcpu=96,memory=624GB \
    --resources-accelerator=type=nvidia-tesla-v100,count=4 \
    --plan 12-month \
    --reservation=reservation-01 \
    --reservation-zone=us-central1-a \
    --machine-type=n1-standard-32 \
    --accelerator=type=nvidia-tesla-v100,count=2 \
    --vm-count=2

例 2: vCPU やメモリを確約せずに GPU のコミットメントを購入する

vCPU またはメモリを確約せずに GPU とローカル SSD ディスクを確約して予約するには、vCPU とメモリ量の値として 0 を指定します。たとえば、us-west2 リージョンで単一の NVIDIA P4 GPU のコミットメント commitment-02 を購入するとします。また、関連付ける予約を新たに作成し、us-west2-b ゾーンの n1-standard-2 VM で予約済みの GPU を使用するように Compute Engine を指定します。予約が関連付けられているこのサンプルのコミットメントを購入するには、次のコマンドを実行します。

gcloud compute commitments create commitment-02 \
    --region=us-west2 \
    --project=myproject \
    --resources=vcpu=0,memory=0 \
    --resources-accelerator=type=nvidia-tesla-p4,count=1 \
    --plan 12-month \
    --reservation=reservation-01 \
    --reservation-zone=us-west2-b \
    --machine-type=n1-standard-2 \
    --accelerator=type=nvidia-tesla-p4,count=1 \
    --vm-count=1

例 3: 複数の新しい予約を関連付けて GPU とローカル SSD ディスクのコミットメントを購入する

us-central1 リージョンで 1 個の NVIDIA V 100 GPU と 2 個のローカル SSD ディスクのコミットメント commitment-03 を購入するとします。また、us-central1-a ゾーンに 2 個の予約を作成して関連付けます。最初の予約 res-01 では、1 個の GPU を使用する 1 台の n1-standard-2 VM を予約します。res-01 をターゲット予約にする場合に、予約済みの VM を使用するには、その予約を名前で明示的に指定する必要があります。2 番目の予約 res-02 では、2 種類のローカル SSD ディスクがアタッチされた 1 つの n1-standard-8 VM を予約します。

予約が関連付けられたこのコミットメントの例を購入するには、まず両方の予約のプロパティを含む YAML ファイルを作成します。

- reservation: res-01
  reservation_zone: us-central1-a
  require_specific_reservation: true
  vm_count: 1
  machine_type: n1-standard-2
  accelerator:
  - count: 1
    type: nvidia-tesla-v100
- reservation: res-02
  reservation_zone: us-central1-a
  vm_count: 1
  machine_type: n1-standard-8
  local_ssd:
  - interface: scsi
    size: 375
  - interface: nvme
    size: 375

YAML ファイルを作成したら、次のコマンドを実行して、予約を追加したコミットメントの購入を完了します。この例のコミットメントには vCPU とメモリリソースも含まれています。

gcloud compute commitments create commitment-03 \
    --region=us-central1 \
    --project=myproject \
    --resources=vcpu=96,memory=624,local-ssd=750 \
    --resources-accelerator=type=nvidia-tesla-v100,count=1 \
    --plan 12-month \
    --reservations-from-file=YAML_FILE

REST

コミットメントの購入時に関連付ける予約を作成するには、regionCommitments.insert メソッドPOST リクエストを送信します。リクエストに reservations フィールドを含めて、作成して関連付ける新しい予約のリストを定義します。コミットメントには、任意の数の既存の予約を追加できます。

  • すべての VM プロパティを手動で指定して新しい予約を作成するには、instanceProperties フィールドを含め、sourceInstanceTemplate フィールドを除外します。

    たとえば、GPU、2 個のローカル SSD ディスク、最小 CPU プラットフォームの 2 つのプロジェクトと共有される共有予約の構成を手動で指定するには、次のリクエストを行います。

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/commitments
    
    {
    "name": "COMMITMENT_NAME",
    "plan": "DURATION",
    "type": COMMITMENT_TYPE,
    "resources":
    [
      {
        "amount": "COMMITTED_VCPUS",
        "type": "VCPU"
      },
      {
        "amount": "COMMITTED_MEMORY",
        "type": "MEMORY"
      },
      {
        "acceleratorType": "COMMITTED_ACCELERATOR_TYPE",
        "amount": "COMMITTED_ACCELERATOR_COUNT",
        "type": "ACCELERATOR"
      }
      {
        "amount": "COMMITTED_LOCAL_SSD",
        "type": "LOCAL_SSD"
      }
    ],
    "reservations":
    [
      {
        "name": "RESERVATION_NAME",
        "specificReservation":
        {
          "count": "NUMBER_OF_RESERVED_VMS",
          "instanceProperties":
          {
            "guestAccelerators":
            [
              {
                "acceleratorCount": "RESERVED_ACCELERATOR_COUNT",
                "acceleratorType": "RESERVED_ACCELERATOR_TYPE"
              }
            ],
            "localSsds":
            [
              {
                "diskSizeGb": "375",
                "interface": "RESERVED_INTERFACE_1"
              },
              {
                "diskSizeGb": "375",
                "interface": "RESERVED_INTERFACE_2"
              }
            ],
            "machineType": "RESERVED_MACHINE_TYPE",
            "minCpuPlatform": "MINIMUM_CPU_PLATFORM"
          }
        },
        "specificReservationRequired": REQUIRE_SPECIFIC_RESERVATION_VALUE",
        "zone": "RESERVED_ZONE",
        "shareSettings":
        {
          "shareType": "SPECIFIC_PROJECTS",
          "projectMap":
          {
            "CONSUMER_PROJECT_ID_1":
            {
              "projectId": "CONSUMER_PROJECT_ID_1"
            },
            "CONSUMER_PROJECT_ID_2":
            {
              "projectId": "CONSUMER_PROJECT_ID_2"
            }
          }
        }
      }
    ]
    }
    
    
  • インスタンス テンプレートを指定して新しい予約を作成するには、sourceInstanceTemplate フィールドを追加し、instanceProperties フィールドを除外します。

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/commitments
    
    {
    "name": "COMMITMENT_NAME",
    "plan": "DURATION",
    "type": COMMITMENT_TYPE,
    "resources":
    [
      {
        "amount": "COMMITTED_VCPUS",
        "type": "VCPU"
      },
      {
        "amount": "COMMITTED_MEMORY",
        "type": "MEMORY"
      },
      {
        "acceleratorType": "COMMITTED_ACCELERATOR_TYPE",
        "amount": "COMMITTED_ACCELERATOR_COUNT",
        "type": "ACCELERATOR"
      }
      {
        "amount": "COMMITTED_LOCAL_SSD",
        "type": "LOCAL_SSD"
      }
    ],
    "reservations":
    [
      {
        "name": "RESERVATION_NAME",
        "specificReservation":
        {
          "count": "NUMBER_OF_RESERVED_VMS",
          "sourceInstanceTemplate": "projects/PROJECT_ID/LOCATION/instanceTemplates/INSTANCE_TEMPLATE_NAME"
        },
        "specificReservationRequired": REQUIRE_SPECIFIC_RESERVATION_VALUE",
        "zone": "RESERVED_ZONE",
        "shareSettings":
        {
          "shareType": "SPECIFIC_PROJECTS",
          "projectMap":
          {
            "CONSUMER_PROJECT_ID_1":
            {
              "projectId": "CONSUMER_PROJECT_ID_1"
            },
            "CONSUMER_PROJECT_ID_2":
            {
              "projectId": "CONSUMER_PROJECT_ID_2"
            }
          }
        }
      }
    ]
    }
    
    

以下は、コミットメントと関連付けられている予約の対応するプロパティに置き換えます。

コミットメント

  • COMMITMENT_NAME: コミットメントの名前。
  • REGION: コミットメントのリージョン。
  • PROJECT_ID: 予約が関連付けられているコミットメントを購入するプロジェクトの ID。
  • DURATION: コミットメントの期間(TWELVE_MONTH または THIRTY_SIX_MONTH)。
  • COMMITMENT_TYPE: コミットメントのタイプ。次のコミットメントのタイプでは、GPU、ローカル SSD ディスク、またはその両方を使用できます。

    • ACCELERATOR_OPTIMIZED: マシンタイプのリソース
    • COMPUTE_OPTIMIZED: C2 マシンタイプのリソース
    • COMPUTE_OPTIMIZED_C2D: C2D マシンタイプのリソース
    • COMPUTE_OPTIMIZED_C3: C3 マシンタイプのリソース
    • COMPUTE_OPTIMIZED_C3D: C3D マシンタイプのリソース
    • GENERAL_PURPOSE: N1 マシンタイプのリソース
    • GENERAL_PURPOSE_E2: E2 マシンタイプのリソース
    • GENERAL_PURPOSE_N2: N2 マシンタイプのリソース
    • GENERAL_PURPOSE_N2D: N2D マシンリソース
    • GENERAL_PURPOSE_T2D: Tau T2D マシンタイプのリソース
    • GRAPHICS_OPTIMIZED: G2 マシンタイプ リソース
    • MEMORY_OPTIMIZED: M1 または M2 マシンタイプのリソース
    • MEMORY_OPTIMIZED_M3: メモリ最適化 M3 マシンタイプ
  • COMMITTED_VCPUS: コミットメントに必要な vCPU の数。数値には任意の正の整数を指定できます。

  • COMMITTED_MEMORY: コミットメントに必要なメモリ量(MB)。たとえば、10240MB のようにします。メモリは 256 MB 単位で購入できます。

  • COMMITTED_LOCAL_SSD: コミットメントに必要なローカル SSD ストレージの量(GB)。各ローカル SSD ディスクは 375 GB です。

  • COMMITTED_ACCELERATOR_COUNT: コミットメントで必要な GPU の数。

  • COMMITTED_ACCELERATOR_TYPE: コミットメントに必要な GPU タイプ。

関連付けられた予約

  • RESERVATION_NAME: 関連付ける予約の名前。
  • RESERVATION_ZONE: 関連付ける予約のゾーン。
  • REQUIRE_SPECIFIC_RESERVATION_VALUE: 関連付ける予約が明示的に対象とする予約かどうかを指定します(true または false)。特定の予約について詳しくは、予約の仕組みをご覧ください。
  • NUMBER_OF_RESERVED_VMS: 関連付ける予約で予約する VM の数。
  • RESERVED_MACHINE_TYPE: 関連付ける予約の VM に必要なマシンタイプ

    • マシンタイプが事前定義の場合は、MACHINE_FAMILY-standard-CPUS の形式を使用します(例: n2-standard-4)。
    • マシンタイプがカスタムの場合は、MACHINE_FAMILY-custom-CPUS-MEMORY の形式を使用します(例: n2-custom-4-5120)。詳しい制限事項については、カスタム マシンタイプの仕様をご覧ください。

      次のように置き換えます。

      • MACHINE_FAMILY: マシンタイプのファミリー。たとえば、N2 VM の場合は n2 を指定します。
      • CPUS: vCPU の数。
      • MEMORY: 予約済み VM の合計メモリ。メモリの量には 256 MB の倍数を MB 単位で指定します。たとえば、4 個の vCPU と 5 GB(5,120 MB)のメモリを搭載した N2 VM を作成するには、n2-custom-4-5120 を使用します。
  • RESERVED_ACCELERATOR_COUNT: 関連付ける予約で VM ごとに追加する GPU の数。

  • RESERVED_ACCELERATOR_TYPE: 関連付ける予約に追加するアクセラレータのタイプ

  • INTERFACE_1INTERFACE_2: 各予約済み VM のローカル SSD ディスクで使用するインターフェースのタイプ。有効なオプションは scsinvme です。各ローカル SSD ディスクは 375 GB です。追加するローカル SSD ディスクごとに localSsds パラメータを繰り返します。ローカル SSD ディスクは 24 個まで指定できます。

  • MINIMUM_CPU_PLATFORM: 関連付ける予約に指定する最小 CPU プラットフォーム。

  • INSTANCE_TEMPLATE_NAME: 使用するインスタンス テンプレートのバージョン

  • SHARE_SETTING: 関連付ける予約の共有タイプ。複数のコンシューマー プロジェクトで関連する予約を共有する場合は、このフィールドに SPECIFIC_PROJECTS の値を指定します。単一プロジェクトの予約を作成する場合は、このフィールドを除外します。

  • CONSUMER_PROJECT_ID_1CONSUMER_PROJECT_ID_2: この予約を共有できるプロジェクトのプロジェクト ID(例: project-1project-2)。最大 100 個のコンシューマー プロジェクトを含めることができます。これらのプロジェクトは、オーナー プロジェクトと同じ組織に存在している必要があります。この予約を作成したプロジェクトの ID は含めないでください。このプロジェクトはデフォルトでこの予約を使用できます。単一プロジェクトの予約を作成する場合は、これらのフィールドを除外します。

Compute Engine は、ターゲット ゾーンで指定されたマシンタイプに十分なリソースがあり、リクエスト時に十分な割り当てがある場合にのみ、コミットメントとそれに関連する予約を作成します。購入が正常に完了すると、Compute Engine は REST API リクエストに対して 200 ステータスを返します。

新しい予約を作成してコミットメントを購入する例

次のシナリオとコマンドの例は、コミットメントに関連付ける新しい予約を作成して、GPU、ローカル SSD ディスク、またはその両方のコミットメントを購入する方法を示しています。

例 1: 新しい予約を 1 つだけ関連付けて GPU のコミットメントを購入する

4 個の NVIDIA V100 GPU を含む us-central1 リージョンでコミットメント commitment-01 を購入するとします。これらの GPU に関連付けられた予約として、新しい予約 reservation-01 を作成します。us-central1-a ゾーンの 2 台の n1-standard-8 VM でこれらの予約済み GPU を使用するように Compute Engine を指定するとします。この例のコミットメントとそれに関連付けられた予約を購入するには、次の POST リクエストを行います。

POST https://compute.googleapis.com/compute/v1/projects/my-project/regions/us-central1/commitments

{
  "name": "commitment-01",
  "plan": "TWELVE_MONTH",
  "type": "GENERAL_PURPOSE"
  "resources":
  [
    {
      "amount": "96",
      "type": "VCPU"
    },
    {
      "amount": "638976",
      "type": "MEMORY"
    },
    {
      "acceleratorType": "nvidia-tesla-v100",
      "amount": "4",
      "type": "ACCELERATOR"
    }
  ],
  "reservations":
  [
    {
      "name": "reservation-01",
      "specificReservation":
      {
        "count": "2",
        "instanceProperties":
        {
          "guestAccelerators":
          [
            {
              "acceleratorCount": 2,
              "acceleratorType": "nvidia-tesla-v100"
            }
          ],
          "machineType": "n1-standard-8"
        }
      },
      "specificReservationRequired": false,
      "zone": "us-central1-a"
    }
  ]
}

例 2: vCPU やメモリを確約せずに GPU のコミットメントを購入する

vCPU またはメモリを確約せずに GPU とローカル SSD ディスクを確約して予約するには、vCPU とメモリ量の値として 0 を指定します。たとえば、us-west2 リージョンで単一の NVIDIA P4 GPU のコミットメント commitment-02 を購入するとします。また、関連付ける予約を新たに作成し、us-west2-b ゾーンの n1-standard-2 VM で予約済みの GPU を使用するように Compute Engine を指定します。この例のコミットメントとそれに関連付けられた予約を購入するには、次の POST リクエストを行います。

POST https://compute.googleapis.com/compute/v1/projects/my-project/regions/us-west2/commitments

{
  "name": "commitment-02",
  "plan": "TWELVE_MONTH",
  "type": "GENERAL_PURPOSE",
  "resources":
  [
    {
      "amount": "0",
      "type": "VCPU"
    },
    {
      "amount": "0",
      "type": "MEMORY"
    },
    {
      "acceleratorType": "nvidia-tesla-p4",
      "amount": "4",
      "type": "ACCELERATOR"
    }
  ],
  "reservations":
  [
    {
      "name": "reservation-01",
      "specificReservation":
      {
        "count": "1",
        "instanceProperties":
        {
          "guestAccelerators":
          [
            {
              "acceleratorCount": 4,
              "acceleratorType": "nvidia-tesla-p4"
            }
          ],
          "machineType": "n1-standard-2"
        }
      },
      "specificReservationRequired": false,
      "zone": "us-west2-b"
    }
  ]
}

例 3: 複数の新しい予約を関連付けて GPU とローカル SSD ディスクのコミットメントを購入する

us-central1 リージョンで 1 個の NVIDIA V 100 GPU と 2 個のローカル SSD ディスクのコミットメント commitment-03 を購入するとします。また、us-central1-a ゾーンに 2 個の予約を作成して関連付けます。最初の予約 res-01 では、1 個の GPU を使用する 1 台の n1-standard-2 VM を予約します。res-01 をターゲット予約にする場合に、予約済みの VM を使用するには、その予約を名前で明示的に指定する必要があります。2 番目の予約 res-02 では、2 種類のローカル SSD ディスクがアタッチされた 1 つの n1-standard-8 VM を予約します。関連付ける予約とこのコミットメントの例を購入するには、次の POST リクエストを行います。この例のコミットメントには、vCPU とメモリリソースも含まれています。

POST https://compute.googleapis.com/compute/v1/projects/my-project/regions/us-central1/commitments

{
  "name": "commitment-03",
  "plan": "TWELVE_MONTH",
  "type": "GENERAL_PURPOSE",
  "resources":
  [
    {
      "amount": "96",
      "type": "VCPU"
    },
    {
      "amount": "638976",
      "type": "MEMORY"
    },
    {
      "acceleratorType": "nvidia-tesla-v100",
      "amount": "1",
      "type": "ACCELERATOR"
    },
    {
      "amount": "768000",
      "type": "LOCAL_SSD"
    }
  ],
  "reservations":
  [
    {
      "name": "res-01",
      "specificReservation":
      {
        "count": "1",
        "instanceProperties":
        {
          "guestAccelerators":
          [
            {
              "acceleratorCount": 1,
              "acceleratorType": "nvidia-tesla-v100"
            }
          ],
          "machineType": "n1-standard-2"
        }
      },
      "specificReservationRequired": true,
      "zone": "us-central1-a"
    },
    {
      "name": "res-02",
      "specificReservation":
      {
        "count": "1",
        "instanceProperties":
        {
          "localSsds":
          [
            {
              "diskSizeGb": "375",
              "interface": "SCSI"
            },
            {
              "diskSizeGb": "375",
              "interface": "NVME"
            }
          ]
          "machineType": "n1-standard-8"
        }
      },
      "specificReservationRequired": false,
      "zone": "us-central1-a"
    }
  ]
}

コミットメントに関連付けられている予約を置き換える

コミットされたリソースを使用する VM のタイプと数を変更する場合は、コミットメントに関連付けられた既存の予約を新しい予約に置き換えます。

許可された変更

コミットメントの既存の予約を新しい予約に置き換える場合は、次の変更をリクエストできます。

  • 別のマシンタイプから VM を予約できます。ただし、予約済みリソースの CUD を引き続き受けるには、同じマシンシリーズから引き続き VM を予約する必要があります。
  • 予約する VM の数を変更できます。
  • 予約済み GPU とローカル SSD ディスクの合計数が同じである場合に限り、VM ごとに関連付けられる GPU とローカル SSD ディスクの数を変更できます。
  • 置換された予約を、ローカル予約または共有予約のいずれかに指定できます。

要件

コミットメントに関連付けられている予約を新しい予約に置き換える場合、リクエストは次の要件をすべて満たす必要があります。

  • 関連付けられた予約を新しく関連付けられた予約に置き換えることができるのは、一度に 1 つずつだけです。関連付けられた予約を置き換えるには、VM 数を 0 に設定して既存の予約を削除し、関連付けられた新しい予約を定義します。
  • 新しい予約は、コミットメントと同じプロジェクトに存在している必要があります。
  • 新しい予約は、削除された予約と同じゾーンに存在している必要があります。
  • 新しい予約に指定された GPU の数とタイプは、削除された予約と一致している必要があります。
  • 新しい予約で指定されたローカル SSD ディスクの数とタイプは、削除された予約と一致している必要があります。
  • VM を変更できるのは、リクエストごとに最大 100 個までです。100 個を超える VM に関する変更を行うには、変更を複数の小さなリクエストに分割するか、Google Cloud サポートにご連絡ください。

予約の置き換えリクエストも、その時点での容量の可用性によって異なります。リクエストの容量が使用できない場合、リクエストは失敗し、リソースの可用性エラーが返されます。このエラーは、リクエストを変更または延期することで解決できます。 詳細については、リソースの可用性のトラブルシューティングのドキュメントをご覧ください。

関連付けられた予約の置換リクエストが失敗した場合、接続された予約と既存の予約済みリソースは影響を受けません。容量を保持するため、予約の置き換えリクエストが成功してから VM に対応する変更を行ってください。

関連付けられた予約を置き換える手順

コミットメントの予約は、Google Cloud CLI または REST を使用して置換できます。

gcloud

コミットメントに関連付けられている予約を置き換えるには、次のようにします。

  1. 現在のディレクトリに、次の関連付けられた予約の構成を含む YAML ファイルを作成します。

    • 置き換える現在の予約。

      この予約の詳細を取得するには、予約の詳細を表示するをご覧ください。

    • 新しい置き換える予約。

    YAML ファイルの内容は次のようになります。

    - reservation: CURRENT_RESERVATION_NAME
      reservation_zone: CURRENT_RESERVATION_ZONE
      vm_count: 0
      machine_type: CURRENT_RESERVATION_MACHINE_TYPE
      accelerator:
      - count: CURRENT_RESERVATION_NUMBER_OF_ACCELERATORS
        type: CURRENT_RESERVATION_ACCELERATOR_TYPE
      localssd:
      - interface: CURRENT_RESERVATION_INTERFACE_1
        size: 375
      - interface: CURRENT_RESERVATION_INTERFACE_2
        size: 375
      project: CURRENT_RESERVATION_PROJECT_ID
      share-setting: CURRENT_RESERVATION_SHARE_SETTING
      share-with:
      - CURRENT_RESERVATION_CONSUMER_PROJECT_ID_1
      - CURRENT_RESERVATION_CONSUMER_PROJECT_ID_2
    - reservation: REPLACEMENT_RESERVATION_NAME
      reservation_zone: REPLACEMENT_RESERVATION_ZONE
      vm_count: REPLACEMENT_RESERVATION_NUMBER_OF_VMs
      machine_type: REPLACEMENT_RESERVATION_MACHINE_TYPE
      accelerator:
      - count: REPLACEMENT_RESERVATION_ACCELERATOR_COUNT
        type: REPLACEMENT_RESERVATION_ACCELERATOR_TYPE
      localssd:
      - interface: REPLACEMENT_RESERVATION_INTERFACE_1
        size: 375
      - interface: REPLACEMENT_RESERVATION_INTERFACE_2
        size: 375
      project: REPLACEMENT_RESERVATION_PROJECT_ID
      share-setting: REPLACEMENT_RESERVATION_SHARE_SETTING
      share-with:
      - REPLACEMENT_RESERVATION_CONSUMER_PROJECT_ID_1
      - REPLACEMENT_RESERVATION_CONSUMER_PROJECT_ID_2
    
    

    以下を、現在の予約と置き換える予約の対応するプロパティに置き換えます。

    現在の予約

    現在の予約では、次のすべてのプロパティが予約を表示したときと完全に一致している必要があります。現在の予約にまだ含まれていないプロパティについては、フィールドを省略します。

    • CURRENT_RESERVATION_NAME: 現在関連付けられている予約の名前。
    • CURRENT_RESERVATION_ZONE: 現在関連付けられている予約のゾーン。
    • CURRENT_RESERVATION_MACHINE_TYPE: 現在関連付けられている予約のマシンタイプ
    • CURRENT_RESERVATION_NUMBER_OF_ACCELERATORS: 現在関連付けられている予約で予約されている GPU の数。
    • CURRENT_RESERVATION_ACCELERATOR_TYPE: 現在の関連付けられた予約で予約されているアクセラレータのタイプ
    • CURRENT_RESERVATION_INTERFACE_1CURRENT_RESERVATION_INTERFACE_2: 現在関連付けられている予約で、各予約済み VM のローカル SSD ディスクが使用するインターフェースのタイプ。有効なオプションは scsinvme です。各ローカル SSD ディスクは 375 GB です。予約済みのすべてのローカル SSD ディスクに local_ssd パラメータを繰り返します。
    • CURRENT_RESERVATION_PROJECT_ID: コミットメントと予約が関連付けられている現在のプロジェクトのプロジェクト ID。現在関連付けられている予約が複数のコンシューマ プロジェクト間で共有されている場合は、このフィールドを指定します。
    • CURRENT_RESERVATION_SHARE_SETTING: 現在の予約の共有タイプ。現在関連付けられている予約が複数のコンシューマ プロジェクト間で共有されている場合は、このフィールドに projects の値を指定します。
    • CURRENT_RESERVATION_CONSUMER_PROJECT_ID_1CURRENT_RESERVATION_CONSUMER_PROJECT_ID_2: 現在の予約を共有するプロジェクトのプロジェクト ID(例: project-1project-2)です。

    置換予約

    置換予約では、必要に応じて次のプロパティを設定します。これらのプロパティを指定するときは、すべての要件を満たしていることを確認してください。使用しないその他のフィールドは省略します。

    • REPLACEMENT_RESERVATION_NAME: 新しい置換予約の名前。
    • REPLACEMENT_RESERVATION_ZONE: 新しい置換予約のゾーン。
    • REPLACEMENT_RESERVATION_NUMBER_OF_VMS: 新しい置換予約で予約する VM の数。
    • REPLACEMENT_RESERVATION_MACHINE_TYPE: 新しい置換予約の VM に必要なマシンタイプ

      • マシンタイプが事前定義の場合は、MACHINE_FAMILY-standard-CPUS の形式を使用します(例: n2-standard-4)。
      • マシンタイプがカスタムの場合は、MACHINE_FAMILY-custom-CPUS-MEMORY の形式を使用します(例: n2-custom-4-5120)。詳しい制限事項については、カスタム マシンタイプの仕様をご覧ください。

      次のように置き換えます。

      • MACHINE_FAMILY: マシンタイプのファミリー。たとえば、N2 VM の場合は n2 を指定します。
      • CPUS: vCPU の数。
      • MEMORY: 予約済み VM の合計メモリ。メモリの量には、256 MB の倍数を MB 単位で指定します。たとえば、4 個の vCPU と 5 GB(5,120 MB)のメモリを搭載した N2 VM を作成するには、n2-custom-4-5120 を使用します。
    • REPLACEMENT_RESERVATION_NUMBER_OF_ACCELERATORS: 置換予約で VM ごとに追加する GPU の数。

    • REPLACEMENT_RESERVATION_ACCELERATOR_TYPE: 置換予約に追加するアクセラレータのタイプ

    • REPLACEMENT_RESERVATION_INTERFACE_1REPLACEMENT_RESERVATION_INTERFACE_2: 各予約済み VM のローカル SSD ディスクで使用するインターフェースのタイプ。有効なオプションは scsinvme です。各ローカル SSD ディスクは 375 GB です。追加するローカル SSD ディスクごとに local_ssd パラメータを繰り返します。ローカル SSD ディスクは 24 個まで指定できます。

    • REPLACEMENT_RESERVATION_PROJECT_ID: コミットメントと予約が関連付けられている現在のプロジェクトのプロジェクト ID。複数のコンシューマ プロジェクトで置換予約を共有する場合は、このフィールドを指定します。

    • REPLACEMENT_RESERVATION_SHARE_SETTING: 置換予約の共有タイプ。複数のコンシューマ プロジェクトで置換予約を共有する場合は、このフィールドに projects の値を指定します。

    • REPLACEMENT_RESERVATION_CONSUMER_PROJECT_ID_1REPLACEMENT_RESERVATION_CONSUMER_PROJECT_ID_2: この予約を共有できるプロジェクトのプロジェクト ID(例: project-1,project-2)をご覧ください。最大 100 個のコンシューマ プロジェクトを含めることができます。これらのプロジェクトは、オーナー プロジェクトと同じ組織に存在している必要があります。この予約の使用はデフォルトで許可されているため、REPLACEMENT_RESERVATION_PROJECT_ID は使用しないでください。

  2. gcloud beta compute commitments update-reservations コマンドを実行し、--reservations-from-file フラグを使用して YAML ファイルのパスを指定します。

    gcloud beta compute commitments update-reservations COMMITMENT_NAME \
        --project= PROJECT_ID \
        --region= REGION \
        --reservations-from-file= YAML_FILE
    

    次のように置き換えます。

    • COMMITMENT_NAME: 予約が関連付けられたコミットメントの名前。
    • PROJECT_ID: 予約が関連付けられたコミットメントのプロジェクト ID。
    • REGION: コミットメントのリージョン。
    • YAML_FILE: 現在の予約と置換予約の構成を含む YAML ファイルのパス。

コミットメントに関連付けられている予約を置き換える例

これを説明するために、このセクションでは、予約が関連付けられたコミットメントの例と、関連付けられた予約の例を置き換える方法について説明します。

予約が関連付けられたコミットメントの例

たとえば、次のコマンドを使用して購入した my-commitment-with-reservations コミットメントに関連付けられた予約を更新するとします。

  gcloud beta compute commitments create my-commitment-with-reservations \
      --region=asia-east1 \
      --resources=vcpu=16,memory=60GB,local-ssd=3000GB \
      --resources-accelerator=type=nvidia-tesla-p100,count=4 \
      --plan=12-month \
      --type=general-purpose \
      --reservations-from-file=one-reservation.yaml

この例では、このコマンドの実行時に one-reservation.yaml が現在のディレクトリにある次の内容のファイルで、res-1 という名前の関連付けられた予約が定義されているとします。

  - reservation: res-1
    reservation_zone: asia-east1-a
    vm_count: 4
    machine_type: n1-standard-4
    accelerator:
    - count: 1
      type: nvidia-tesla-p100
    local_ssd:
    - interface: scsi
      size: 375
    - interface: scsi
      size: 375

この my-commitment-with-reservations コミットメントと関連付けられた予約 res-1 により、次の確約リソースと予約済みリソースが作成されました。

リソースの種類 確約中のリソース
my-commitment-with-reservations
現在の関連付けられた予約のリソース
res-1
vCPU とメモリ 16 個の vCPU と 60 GB 16 個の vCPU と 60 GB
(4 個の予約された n1-standard-4 VM)*
GPU 4 個の P100 GPU 4 個の P100 GPU
(4 個の VM の場合、VM あたり 1 個の P100 GPU)*
ローカル SSD ディスク 3,000 GB または 8 個のローカル SSD ディスク 3,000 GB または 8 個のローカル SSD ディスク
(4 個の VM の場合、VM あたり 750 GB または 2 個のローカル SSD ディスク)*

*具体的には、関連付けられた予約の例(res-1)では、それぞれ scsi インターフェースの 1 個の P100 GPU と 2 個のローカル SSD ディスクを使用する 4 個の n1-standard-4 VM を予約します。n1-standard-4 マシンタイプでは、各 VM に 4 個の vCPU と 15 GB が使用されます。

関連付けられた予約の例を置き換える

関連付けられた予約 res-1 を新しい予約 res-2 に置き換え、予約済みリソースを次のように変更するとします。

リソースの種類 確約中のリソース
my-commitment-with-reservations
現在の関連付けられた予約のリソース
res-1
置き換える関連付けられた予約のリソース
res-2
vCPU とメモリ 16 個の vCPU と 60 GB 16 個の vCPU と 60 GB
(4 個の予約された n1-standard-4 VM)*
16 個の vCPU と 60 GB
(2 個の予約済みおよび共有 n1-standard-8 VM)
GPU 4 個の P100 GPU 4 個の P100 GPU
(4 個の VM の場合、VM あたり 1 個の P100 GPU)*
4 個の P100 GPU
(2 個の VM の場合、VM あたり 2 個の P100 GPU)
ローカル SSD ディスク 3,000 GB または 8 個のローカル SSD ディスク 3,000 GB または 8 個のローカル SSD ディスク
(4 個の VM の場合、VM あたり 750 GB または 2 個のローカル SSD ディスク)*
3,000 GB または 8 個のローカル SSD ディスク
(2 個の VM の場合、VM あたり 1,500 GB または 4 個のローカル SSD ディスク)*

*具体的には、関連付けられた予約の例(res-1)では、それぞれ scsi インターフェースの 1 個の P100 GPU と 2 個のローカル SSD ディスクを使用する 4 個の n1-standard-4 VM を予約します。n1-standard-4 マシンタイプでは、各 VM に 4 個の vCPU と 15 GB が使用されます。

置換の関連付けられた予約では、それぞれ scsi インターフェース タイプの 1 個の P100 GPU と 4 個のローカル SSD ディスクを使用する 2 個の n1-standard-8 VM を予約する res-2 を定義します。また、res-2 は他の 2 つのプロジェクト project-1project-2 と共有され、現在のプロジェクト my-project によって所有されます。n1-standard-8 マシンタイプでは、各 VM に 8 個の vCPU と 30 GB が使用されます。

my-commitment-with-reservations コミットメントに関連付けられた予約 res-1res-2 に置き換えるには、次の操作を行います。

  1. 現在のディレクトリに、次の内容を含む two-reservations.yaml という名前のファイルを作成します。

    - reservation: res-1
      reservation_zone: asia-east1-a
      vm_count: 0
      machine_type: n1-standard-4
      accelerator:
      - count: 1
        type: nvidia-tesla-p100
      local_ssd:
      - interface: scsi
        size: 375
      - interface: scsi
        size: 375
    - reservation: res-2
      reservation_zone: asia-east1-a
      vm_count: 2
      machine_type: n1-standard-8
      accelerator:
      - count: 2
        type: nvidia-tesla-p100
      project: my-project
      share-setting: projects
      share-with:
      - project-1
      - project-2
      local_ssd:
      - interface: scsi
        size: 375
      - interface: scsi
        size: 375
      - interface: scsi
        size: 375
      - interface: scsi
        size: 375
    
  2. 次のコマンドを実行します。

    gcloud beta compute commitments update-reservations my-commitment-with-reservations \
        --region=asia-east1-a \
        --reservations-from-file=two-reservations.yaml
    

REST

コミットメントに関連付けられている予約を置き換えるには、regionCommitments.updateReservations メソッドを使用して POST リクエストを行います。

POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/COMMITMENT_ZONE/commitments/COMMITMENT_NAME/updateReservations

{
  "reservations":
  [
    {
      "name": "REPLACEMENT_RESERVATION_NAME",
      "specificReservation":
      {
        "count": "REPLACEMENT_RESERVATION_NUMBER_OF_VMS",
        "instanceProperties":
        {
          "guestAccelerators":
          [
            {
              "acceleratorCount": "REPLACEMENT_RESERVATION_NUMBER_OF_ACCELERATORS",
              "acceleratorType": "REPLACEMENT_RESERVATION_ACCELERATOR_TYPE"
            }
          ],
          "localSsds":
          [
            {
              "diskSizeGb": "375",
              "interface": "REPLACEMENT_RESERVATION_INTERFACE_1"
            },
            {
              "diskSizeGb": "375",
              "interface": "REPLACEMENT_RESERVATION_INTERFACE_2"
            }
          ],
          "machineType": "REPLACEMENT_RESERVATION_MACHINE_TYPE"

        }
      },
      "zone": "REPLACEMENT_RESERVATION_ZONE",
      "shareSettings":
      {
        "shareType": "SPECIFIC_PROJECTS",
        "projectMap":
        {
          "REPLACEMENT_RESERVATION_CONSUMER_PROJECT_ID_1":
          {
            "projectId": "REPLACEMENT_RESERVATION_CONSUMER_PROJECT_ID_1"
          },
          "REPLACEMENT_RESERVATION_CONSUMER_PROJECT_ID_2":
          {
            "projectId": "REPLACEMENT_RESERVATION_CONSUMER_PROJECT_ID_2"
          }
         }
      }
    },
    {
      "name": "CURRENT_RESERVATION_NAME",
      "specificReservation":
      {
        "count": "0",
        "instanceProperties":
        {
          "guestAccelerators":
          [
            {
              "acceleratorCount": "CURRENT_RESERVATION_NUMBER_OF_ACCELERATORS",
              "acceleratorType": "CURRENT_RESERVATION_ACCELERATOR_TYPE"
            }
          ],
          "localSsds":
          [
            {
              "diskSizeGb": "375",
              "interface": "CURRENT_RESERVATION_INTERFACE_1"
            },
            {
              "diskSizeGb": "375",
              "interface": "CURRENT_RESERVATION_INTERFACE_2"
            }
          ],
          "machineType": "CURRENT_RESERVATION_MACHINE_TYPE"

        }
      },
      "zone": "CURRENT_RESERVATION_ZONE",
      "shareSettings":
      {
        "shareType": "SPECIFIC_PROJECTS",
        "projectMap":
        {
          "CURRENT_RESERVATION_CONSUMER_PROJECT_ID_1":
          {
            "projectId": "CURRENT_RESERVATION_CONSUMER_PROJECT_ID_1"
          },
          "CURRENT_RESERVATION_CONSUMER_PROJECT_ID_2":
          {
            "projectId": "CURRENT_RESERVATION_CONSUMER_PROJECT_ID_2"
          }
         }
      }
    }
  ]
}

以下を、コミットメント、現在の予約、置換予約の対応するプロパティに置き換えます。

コミットメント

  • COMMITMENT_NAME: 予約が関連付けられたコミットメントの名前。
  • PROJECT_ID: 予約が関連付けられたコミットメントのプロジェクト ID。これは、現在の予約と関連付けられた予約のプロジェクト ID でもあります。
  • COMMITMENT_ZONE: 予約が関連付けられているコミットメントのゾーン。

現在の予約

現在の予約では、次のすべてのプロパティが予約を表示したときと完全に一致している必要があります。現在の予約にまだ指定されていないプロパティについては、フィールドを省略します。

  • CURRENT_RESERVATION_NAME: 現在関連付けられている予約の名前。
  • CURRENT_RESERVATION_ZONE: 現在関連付けられている予約のゾーン。
  • CURRENT_RESERVATION_MACHINE_TYPE: 現在関連付けられている予約のマシンタイプ
  • CURRENT_RESERVATION_NUMBER_OF_ACCELERATORS: 現在関連付けられている予約で予約されている GPU の数。
  • CURRENT_RESERVATION_ACCELERATOR_TYPE: 現在の関連付けられた予約で予約されているアクセラレータのタイプ
  • CURRENT_RESERVATION_INTERFACE_1CURRENT_RESERVATION_INTERFACE_2: 現在関連付けられている予約で、各予約済み VM のローカル SSD ディスクが使用するインターフェースのタイプ。有効なオプションは scsinvme です。各ローカル SSD ディスクは 375 GB です。予約済みのすべてのローカル SSD ディスクに localSsds パラメータを繰り返します。
  • CURRENT_RESERVATION_SHARE_SETTING: 現在の予約の共有タイプ。現在接続されている予約が複数のコンシューマ プロジェクト間で共有されている場合は、このパラメータの値を projects として指定します。
  • CURRENT_RESERVATION_CONSUMER_PROJECT_ID_1CURRENT_RESERVATION_CONSUMER_PROJECT_ID_2: 現在の予約を共有するプロジェクトのプロジェクト ID(例: project-1project-2)です。

置換予約

置換予約では、必要に応じて次のプロパティを設定します。これらのプロパティを指定するときは、すべての要件を満たしていることを確認してください。使用しないその他のフィールドは省略します。

  • REPLACEMENT_RESERVATION_NAME: 新しい置換予約の名前。
  • REPLACEMENT_RESERVATION_ZONE: 新しい置換予約のゾーン。
  • REPLACEMENT_RESERVATION_NUMBER_OF_VMS: 新しい置換予約で予約する VM の数。
  • REPLACEMENT_RESERVATION_MACHINE_TYPE: 新しい置換予約の VM に必要なマシンタイプ

    • マシンタイプが事前定義の場合は、MACHINE_FAMILY-standard-CPUS の形式を使用します(例: n2-standard-4)。
    • マシンタイプがカスタムの場合は、MACHINE_FAMILY-custom-CPUS-MEMORY の形式を使用します(例: n2-custom-4-5120)。詳しい制限事項については、カスタム マシンタイプの仕様をご覧ください。

    次のように置き換えます。

    • MACHINE_FAMILY: マシンタイプのファミリー。たとえば、N2 VM の場合は n2 を指定します。
    • CPUS: vCPU の数。
    • MEMORY: 予約済み VM の合計メモリ。メモリの量には、256 MB の倍数を MB 単位で指定します。たとえば、4 個の vCPU と 5 GB(5,120 MB)のメモリを搭載した N2 VM を作成するには、n2-custom-4-5120 を使用します。
  • REPLACEMENT_RESERVATION_NUMBER_OF_ACCELERATORS: 置換予約で VM ごとに追加する GPU の数。

  • REPLACEMENT_RESERVATION_ACCELERATOR_TYPE: 置換予約に追加するアクセラレータのタイプ

  • REPLACEMENT_RESERVATION_INTERFACE_1REPLACEMENT_RESERVATION_INTERFACE_2: 各予約済み VM のローカル SSD ディスクで使用するインターフェースのタイプ。有効なオプションは scsinvme です。各ローカル SSD ディスクは 375 GB です。追加するローカル SSD ディスクごとに localSsds パラメータを繰り返します。ローカル SSD ディスクは 24 個まで指定できます。

  • REPLACEMENT_RESERVATION_SHARE_SETTING: 置換予約の共有タイプ。複数のコンシューマ プロジェクトで置換予約を共有する場合は、このパラメータの値を projects として指定します。

  • REPLACEMENT_RESERVATION_CONSUMER_PROJECT_ID_1REPLACEMENT_RESERVATION_CONSUMER_PROJECT_ID_2: この予約を共有できるプロジェクトのプロジェクト ID(例: project-1,project-2)をご覧ください。最大 100 個のコンシューマ プロジェクトを含めることができます。これらのプロジェクトは、オーナー プロジェクトと同じ組織に存在している必要があります。この予約の使用はデフォルトで許可されているため、PROJECT_ID は使用しないでください。

コミットメントに関連付けられている予約を置き換える例

これを説明するために、このセクションでは、予約が関連付けられたコミットメントの例と、関連付けられた予約の例を置き換える方法について説明します。

予約が関連付けられたコミットメントの例

たとえば、次の POST リクエストによって購入された my-commitment-with-reservations コミットメントに関連付けられている予約 res-1 を置き換えるとします。

  POST https://compute.googleapis.com/compute/beta/projects/my-project/regions/asia-east1/commitments

  {
    "name": "my-commitment-with-reservations",
    "plan": "TWELVE_MONTH",
    "reservations":
    [
      {
        "name": "res-1",
        "specificReservation":
        {
          "count": "4",
          "instanceProperties":
          {
            "guestAccelerators":
            [
              {
                "acceleratorCount": "1",
                "acceleratorType": "nvidia-tesla-p100"
              }
            ],
            "localSsds":
            [
              {
                "diskSizeGb": "375",
                "interface": "scsi"
              },
              {
                "diskSizeGb": "375",
                "interface": "scsi"
              }
            ],
            "machineType": "n1-standard-4"
          }
        },
        "zone": "asia-east1-a"
      }
    ],
    "resources":
    [
      {
        "amount": "16",
        "type": "VCPU"
      },
      {
        "amount": "61440",
        "type": "MEMORY"
      },
      {
        "acceleratorType": "nvidia-tesla-p100",
        "amount": "4",
        "type": "ACCELERATOR"
      }
      {
        "amount": "3072000",
        "type": "LOCAL_SSD"
      }
    ],
    "type": "GENERAL_PURPOSE"
  }

この my-commitment-with-reservations コミットメントと関連付けられた予約 res-1 により、次の確約リソースと予約済みリソースが作成されました。

リソースの種類 確約中のリソース
my-commitment-with-reservations
現在の関連付けられた予約のリソース
res-1
vCPU とメモリ 16 個の vCPU と 60 GB 16 個の vCPU と 60 GB
(4 個の予約された n1-standard-4 VM)*
GPU 4 個の P100 GPU 4 個の P100 GPU
(4 個の VM の場合、VM あたり 1 個の P100 GPU)*
ローカル SSD ディスク 3,000 GB または 8 個のローカル SSD ディスク 3,000 GB または 8 個のローカル SSD ディスク
(4 個の VM の場合、VM あたり 750 GB または 2 個のローカル SSD ディスク)*

*具体的には、関連付けられた予約の例(res-1)では、それぞれ scsi インターフェースの 1 個の P100 GPU と 2 個のローカル SSD ディスクを使用する 4 個の n1-standard-4 VM を予約します。n1-standard-4 マシンタイプでは、各 VM に 4 個の vCPU と 15 GB が使用されます。

関連付けられた予約の例を置き換える

関連付けられた予約 res-1 を新しい予約 res-2 に置き換え、予約済みリソースを次のように変更するとします。

リソースの種類 確約中のリソース
my-commitment-with-reservations
現在の関連付けられた予約のリソース
res-1
置き換える関連付けられた予約のリソース
res-2
vCPU とメモリ 16 個の vCPU と 60 GB 16 個の vCPU と 60 GB
(4 個の予約された n1-standard-4 VM)*
16 個の vCPU と 60 GB
(2 個の予約済みおよび共有 n1-standard-8 VM)
GPU 4 個の P100 GPU 4 個の P100 GPU
(4 個の VM の場合、VM あたり 1 個の P100 GPU)*
4 個の P100 GPU
(2 個の VM の場合、VM あたり 2 個の P100 GPU)
ローカル SSD ディスク 3,000 GB または 8 個のローカル SSD ディスク 3,000 GB または 8 個のローカル SSD ディスク
(4 個の VM の場合、VM あたり 750 GB または 2 個のローカル SSD ディスク)*
3,000 GB または 8 個のローカル SSD ディスク
(2 個の VM の場合、VM あたり 1,500 GB または 4 個のローカル SSD ディスク)*

*具体的には、関連付けられた予約の例(res-1)では、それぞれ scsi インターフェースの 1 個の P100 GPU と 2 個のローカル SSD ディスクを使用する 4 個の n1-standard-4 VM を予約します。n1-standard-4 マシンタイプでは、各 VM に 4 個の vCPU と 15 GB が使用されます。

置換の関連付けられた予約では、それぞれ scsi インターフェース タイプの 1 個の P100 GPU と 4 個のローカル SSD ディスクを使用する 2 個の n1-standard-8 VM を予約する res-2 を定義します。また、res-2 は他の 2 つのプロジェクト project-1project-2 と共有され、現在のプロジェクト my-project によって所有されます。n1-standard-8 マシンタイプでは、各 VM に 8 個の vCPU と 30 GB が使用されます。

my-commitment-with-reservations コミットメントの関連付けられた予約 res-1res-2 に置き換えるには、regionCommitments.updateReservations メソッドを使用して次の POST リクエストを行います。

  POST https://compute.googleapis.com/compute/beta/projects/my-project/regions/asia-east1/commitments/my-commitment-with-reservations/updateReservations

  {
    "reservations":
    [
      {
        "name": "res-2",
        "specificReservation":
        {
          "count": "2",
          "instanceProperties":
          {
            "guestAccelerators":
            [
              {
                "acceleratorCount": 2,
                "acceleratorType": "nvidia-tesla-p100"
              }
            ],
            "localSsds":
            [
              {
                "diskSizeGb": "375",
                "interface": "scsi"
              },
              {
                "diskSizeGb": "375",
                "interface": "scsi"
              },
              {
                "diskSizeGb": "375",
                "interface": "scsi"
              },
              {
                "diskSizeGb": "375",
                "interface": "scsi"
              }
            ],
            "machineType": "n1-standard-8"
          }
        },
        "zone": "asia-east1-a"
      },
      {
        "name": "res-1",
        "specificReservation":
        {
          "count": "0",
          "instanceProperties":
          {
            "guestAccelerators":
            [
              {
                "acceleratorCount": 1,
                "acceleratorType": "nvidia-tesla-p100"
              }
            ],
            "localSsds":
            [
              {
                "diskSizeGb": "375",
                "interface": "scsi"
              },
              {
                "diskSizeGb": "375",
                "interface": "scsi"
              }
            ],
            "machineType": "n1-standard-4"
          }
        },
        "zone": "asia-east1-a"
      }
    ]
  }

次のステップ