単一プロジェクトの予約を作成する


このドキュメントでは、単一プロジェクトの予約を作成する方法について説明します。予約は、同じプロジェクト内の仮想マシン(VM)インスタンスでのみ使用できます。予約の詳細については、Compute Engine ゾーンリソースの予約をご覧ください。

予約を作成するその他の方法については、次のページをご覧ください。

  • 現在のプロジェクトに 1 年間または 3 年間のコミットメントがある場合、予約したリソースには該当する確約利用割引が自動的に適用されます。コミットメントの購入時に、予約を作成してコミットメントに関連付けることもできます。詳細については、予約をコミットメントに関連付けるをご覧ください。

  • 複数のプロジェクトで使用できる予約を作成するには、共有予約を作成するをご覧ください。

始める前に

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

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

    コンソール

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

    gcloud

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

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

    Terraform

    このページの Terraform サンプルをローカル開発環境から使用するには、gcloud CLI をインストールして初期化し、自身のユーザー認証情報を使用してアプリケーションのデフォルト認証情報を設定してください。

    1. Google Cloud CLI をインストールします。
    2. gcloud CLI を初期化するには:

      gcloud init
    3. Google アカウントのローカル認証情報を作成します。

      gcloud auth application-default login

    詳細については、 ローカル開発環境の認証の設定 をご覧ください。

    REST

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

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

      gcloud init

必要なロール

単一プロジェクトの予約の作成に必要な権限を取得するために、プロジェクトに対する Compute 管理者roles/compute.admin)の IAM ロールの付与を管理者に依頼してください。ロールの付与の詳細については、アクセスの管理をご覧ください。

この事前定義ロールには、単一プロジェクトの予約の作成に必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。

必要な権限

単一プロジェクトの予約を作成するには、次の権限が必要です。

  • プロジェクトに対する compute.reservations.create
  • インスタンス テンプレートを指定するには: インスタンス テンプレートに対する compute.instanceTemplates.useReadOnly 権限

カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。

単一プロジェクトの予約を作成する

このセクションでは、単一プロジェクトの予約を作成する方法について説明します。

予約を使用するには、VM がその予約と完全に一致するプロパティが必要です。予約する VM のプロパティを指定するには、このドキュメントの次のいずれかのセクションを選択します。

デフォルトでは、一致するプロパティを持つすべての VM が予約を自動的に使用できます。予約の使用を制御する場合は、次のいずれかを行います。

また、単一プロジェクトの予約を作成するときにコンパクト プレースメント ポリシーを指定できます。コンパクト プレースメント ポリシーでは、ネットワーク レイテンシを短縮するために、VM を相互にできるだけ近づけることを指定します。

インスタンス テンプレートを指定する

インスタンス テンプレートを指定して単一プロジェクトの予約を作成するには、Google Cloud コンソール、gcloud CLI、または REST を使用します。

コンソール

インスタンス テンプレートを指定して単一プロジェクトの予約を作成する手順は、次のとおりです。

  1. Google Cloud コンソールの [予約] ページに移動します。

    [予約] に移動

  2. [予約を作成] をクリックします。

    [予約の作成] ページが開きます。

  3. [名前] フィールドに、予約の名前を入力します。

  4. リソースを予約するリージョンゾーンを選択します。

  5. [共有タイプ] セクションで [ローカル](デフォルト)をクリックします。

  6. [VM インスタンスでの使用] セクションで、次のオプションのいずれかを選択します。

    • 一致する VM がこの予約を自動的に使用できるようにするには、[予約を自動的に使用する] をクリックします(デフォルト)。

    • 特にこの予約名を対象にし、条件を満たしている VM を作成する場合にのみ、この予約のリソースを使用するには、[特定の予約を選択する] を選択します。

  7. [VM インスタンスの数] フィールドに、予約する VM の数を入力します。

  8. [マシンの構成] セクションで、次の操作を行います。

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

    2. [インスタンス テンプレート] フィールドで、任意のインスタンス テンプレートを選択します。リージョン インスタンス テンプレートを選択した場合は、インスタンス テンプレートのリージョン内のリソースのみを予約できます。

  9. [自動削除] セクションで自動削除オプションを有効にして、Compute Engine が特定の日時に予約を自動的に削除するようにできます。予約を自動的に削除すると、予約の使用を停止したときに不要な料金が発生しないようにできます。

  10. 予約を作成するには、[作成] をクリックします。

    [予約] ページが開きます。単一プロジェクトの予約の作成が完了するまでに、最長 1 分かかることがあります。

gcloud

インスタンス テンプレートを指定して単一プロジェクトの予約を作成するには、gcloud compute reservations create コマンドを使用します。

オプションのフラグを使用せずにインスタンス テンプレートを指定して単一プロジェクトの予約を作成するには、次のコマンドを実行します。

gcloud compute reservations create RESERVATION_NAME \
    --project=PROJECT_ID \
    --source-instance-template=projects/PROJECT_ID/LOCATION/instanceTemplates/INSTANCE_TEMPLATE_NAME \
    --vm-count=NUMBER_OF_VMS \
    --zone=ZONE

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

  • RESERVATION_NAME: 作成する予約の名前。

  • PROJECT_ID: インスタンス テンプレートが存在しており、リソースを予約するプロジェクトの ID。

  • LOCATION: インスタンス テンプレートのロケーション。次のいずれかの値を指定します。

    • グローバル インスタンス テンプレートの場合: global

    • リージョン インスタンス テンプレートの場合: regions/REGIONREGION は、インスタンス テンプレートが配置されているリージョンに置き換えます。リージョン インスタンス テンプレートを指定する場合は、インスタンス テンプレートのリージョン内でのみ VM を予約できます。

  • INSTANCE_TEMPLATE_NAME: 既存のインスタンス テンプレートの名前。コンパクト プレースメント ポリシーを含むインスタンス テンプレートを指定した場合は、--require-specific-reservation フラグを指定する必要があります。これは、この予約を対象とする VM のみがこの予約を使用できることを意味します。

  • NUMBER_OF_VMS: 予約する VM の数。

  • ZONE: リソースを予約するゾーン。

たとえば、グローバル インスタンス テンプレートを指定してゾーン us-central1-a で 10 個の VM の予約を作成するには、次のコマンドを実行します。

gcloud compute reservations create my-reservation \
    --project=example-project \
    --source-instance-template=projects/example-project/global/example-instance-template \
    --vm-count=10 \
    --zone=us-central1-a

必要に応じて、以下の 1 つ以上の操作を行うことができます。

  • この予約を対象とする VM のみがこの予約を使用できることを指定するには、--require-specific-reservation フラグを指定します。

    gcloud compute reservations create example-reservation \
        --require-specific-reservation \
        ...
    
  • Compute Engine で予約を自動的に削除できるようにするには、次のいずれかのメソッドを選択します。

    • 特定の日時の予約を削除するには、--delete-at-time フラグを指定した gcloud beta compute reservations create コマンドを使用します。

      gcloud beta compute reservations create reservation-example \
          --delete-at-time=DELETE_AT_TIME \
          ...
      

      DELETE_AT_TIME は、RFC 3339 タイムスタンプ形式の日時に置き換えます。これは次のようにする必要があります。

      YYYY-MM-DDTHH:MM:SSOFFSET
      

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

      • YYYY-MM-DD: 4 桁の年、2 桁の月、その月の 2 桁の日をハイフン(-)で区切った日付。

      • HH:MM:SS: 24 時間制の 2 桁の時間、2 桁の分、2 桁の秒をコロン(:)で区切った時刻。

      • OFFSET: 協定世界時(UTC)のオフセット形式で示されるタイムゾーン。たとえば、太平洋標準時(PST)を使用する場合は -08:00 を指定します。オフセットを使用しない場合は、Z を指定します。

    • 特定の期間の経過後に予約を削除するには、gcloud beta compute reservations create コマンドを使用し、--delete-after-duration フラグを指定します。

      gcloud beta compute reservations create reservation-example \
          --delete-after-duration=DELETE_AFTER_DURATION \
          ...
      

      DELETE_AFTER_DURATION は、期間(日、時、分、秒)に置き換えます。たとえば、30 分の場合は 30m を指定し、1 日、2 時間、3 分、4 秒の場合は 1d2h3m4s を指定します。

REST

インスタンス テンプレートを指定して単一プロジェクトの予約を作成するには、reservations.insert メソッドPOST リクエストを行います。

オプションのフラグを使用せずにインスタンス テンプレートを指定して単一プロジェクトの予約を作成するには、次の POST リクエストを送信します。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/reservations

{
  "name": "RESERVATION_NAME",
  "specificReservation": {
    "count": "NUMBER_OF_VMS",
    "sourceInstanceTemplate": "projects/PROJECT_ID/LOCATION/instanceTemplates/INSTANCE_TEMPLATE_NAME"
  }
}

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

  • PROJECT_ID: リソースを予約する、インスタンス テンプレートが存在するプロジェクトの ID。

  • ZONE: リソースを予約するゾーン。

  • RESERVATION_NAME: 作成する予約の名前。

  • NUMBER_OF_VMS: 予約する VM の数。

  • LOCATION: インスタンス テンプレートのロケーション。次のいずれかの値を指定します。

    • グローバル インスタンス テンプレートの場合: global

    • リージョン インスタンス テンプレートの場合: regions/REGIONREGION は、インスタンス テンプレートが配置されているリージョンに置き換えます。リージョン インスタンス テンプレートを指定する場合は、インスタンス テンプレートのリージョン内でのみ VM を予約できます。

  • INSTANCE_TEMPLATE_NAME: 既存のインスタンス テンプレートの名前。コンパクト プレースメント ポリシーを含むインスタンス テンプレートを指定する場合は、リクエスト本文で specificReservationRequired フィールドを指定し、true に設定する必要があります。これは、この予約を対象とする VM のみがこの予約を使用できることを意味します。

たとえば、グローバル インスタンス テンプレートを指定してゾーン us-central1-a で 10 個の VM の予約を作成するには、次の POST リクエストを送信します。

POST https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a/reservations

{
  "name": "my-reservation",
  "specificReservation": {
    "count": "10",
    "sourceInstanceTemplate": "projects/example-project/global/instanceTemplates/example-instance-template"
  }
}

必要に応じて、以下の 1 つ以上の操作を行うことができます。

  • この予約を対象とする VM のみがこの予約を使用できることを指定するには、リクエスト本文に specificReservationRequired フィールドを含め、true に設定します。

    POST https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a/reservations
    
    {
      "name": "example-reservation",
      "specificReservationRequired": true,
      ...
    }
    
  • Compute Engine で予約を自動的に削除できるようにするには、次のいずれかのメソッドを選択します。

    • 特定の日時の予約を削除するには、beta.reservations.insert メソッドPOST リクエストを送信します。リクエスト本文に deleteAtTime フィールドを含めます。

      POST https://compute.googleapis.com/compute/beta/projects/example-project/zones/us-central1-a/reservations
      
      {
        "name": "example-reservation",
        "deleteAtTime": "DELETE_AT_TIME",
        ...
      }
      

      DELETE_AT_TIME は、RFC 3339 タイムスタンプ形式の日時に置き換えます。これは次のようにする必要があります。

      YYYY-MM-DDTHH:MM:SSOFFSET
      

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

      • YYYY-MM-DD: 4 桁の年、2 桁の月、その月の 2 桁の日をハイフン(-)で区切った日付。

      • HH:MM:SS: 24 時間制の 2 桁の時間、2 桁の分、2 桁の秒をコロン(:)で区切った時刻。

      • OFFSET: 協定世界時(UTC)のオフセット形式で示されるタイムゾーン。たとえば、太平洋標準時(PST)を使用する場合は -08:00 を指定します。オフセットを使用しない場合は、Z を指定します。

    • 特定の期間の経過後に予約を削除するには、beta.reservations.insert メソッドPOST リクエストを送信します。リクエスト本文に、deleteAfterDuration フィールドを含めます。

      POST https://compute.googleapis.com/compute/beta/projects/example-project/zones/us-central1-a/reservations
      
      {
        "name": "example-reservation",
        "deleteAfterDuration": {
          "seconds": "DELETE_AFTER_DURATION"
        },
        ...
      }
      

      DELETE_AFTER_DURATION は期間(秒単位)に置き換えます。たとえば、86,400 秒(1 日)の場合は 86400 を指定します。

プロパティを直接指定する

プロパティを直接指定して単一プロジェクトの予約を作成するには、Google Cloud コンソール、gcloud CLI、Terraform、または REST を使用します。

コンソール

単一プロジェクトの予約を作成する手順は次のとおりです。

  1. Google Cloud コンソールの [予約] ページに移動します。

    [予約] に移動

  2. [予約を作成] をクリックします。

    [予約の作成] ページが開きます。

  3. [名前] フィールドに、予約の名前を入力します。

  4. リソースを予約するリージョンゾーンを選択します。

  5. [共有タイプ] セクションで [ローカル](デフォルト)をクリックします。

  6. [VM インスタンスでの使用] セクションで、次のオプションのいずれかを選択します。

    • 一致する VM がこの予約を自動的に使用できるようにするには、[予約を自動的に使用する] をクリックします(デフォルト)。

    • 特にこの予約名を対象にし、条件を満たしている VM を作成する場合にのみ、この予約のリソースを使用するには、[特定の予約を選択する] を選択します。

  7. [VM インスタンスの数] フィールドに、予約する VM の数を入力します。

  8. [マシンの構成] セクションで、[マシンタイプを指定] を選択し、次の項目を指定します。

    1. [マシン ファミリー]、[シリーズ]、[マシンタイプ] の各フィールドで、マシン ファミリー、シリーズ、マシンタイプを選択します。

    2. 省略可: 最小 CPU プラットフォーム / GPU を指定する方法は次のとおりです。

      1. [CPU プラットフォームと GPU] セクションを展開するには、 展開矢印をクリックします。

      2. 省略可: 最小 CPU プラットフォームを指定するには、[CPU プラットフォーム] リストでオプションを選択します。

      3. 省略可: GPU を追加するには、 [GPU を追加する] をクリックします。それから、[GPU タイプ] フィールドと [GPU の数] フィールドで、各 VM の GPU のタイプと数を選択します。

    3. 省略可: ローカル SSD を追加するには、次の操作を行います。

      1. [ディスクの数] フィールドで、各 VM のローカル SSD の数を選択します。

      2. [インターフェース タイプ] フィールドで、ローカル SSD のインターフェースを選択します。

    4. 省略可: 要件を満たす予約のコンパクト プレースメント ポリシーを指定するには、[グループ プレースメント ポリシーを選択または作成します] リストをクリックして、次のいずれかの操作を行います。

      • コンパクト プレースメント ポリシーを作成してこの予約で指定するには、次の操作を行います。

        1. [グループ プレースメント ポリシーを作成] をクリックします。

          [グループ プレースメント ポリシーを作成] ペインが表示されます。

        2. [ポリシー名] フィールドに、ポリシーの名前を入力します。

        3. [作成] をクリックします。

          コンパクト プレースメント ポリシーの作成には数秒かかることがあります。

      • それ以外の場合は、既存のコンパクト プレースメント ポリシーを選択します。

  9. [自動削除] セクションで自動削除オプションを有効にして、Compute Engine が特定の日時に予約を自動的に削除するようにできます。予約を自動的に削除すると、予約の使用を停止したときに不要な料金が発生しないようにできます。

  10. 予約を作成するには、[作成] をクリックします。

    単一プロジェクトの予約の作成が完了するまでに時間がかかることがあります。この操作により、[予約] ページにリダイレクトされます。

gcloud

単一プロジェクトの予約を作成するには、gcloud compute reservations create コマンドを使用します。

オプションのフラグを使用せずに単一プロジェクトの予約を作成するには、次のコマンドを実行します。

gcloud compute reservations create RESERVATION_NAME \
    --machine-type=MACHINE_TYPE \
    --project=PROJECT_ID \
    --vm-count=NUMBER_OF_VMS \
    --zone=ZONE

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

  • RESERVATION_NAME: 作成する予約の名前。

  • MACHINE_TYPE: 各 VM に使用するマシンタイプ。次のいずれかの値を指定します。

    • 事前定義されたマシンタイプの場合: MACHINE_FAMILY-standard-CPUS

    • カスタム マシンタイプの場合: MACHINE_FAMILY-custom-CPUS-MEMORYカスタム マシンタイプを指定する前に、カスタム マシンタイプの VM の制限事項を確認してください。

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

    • MACHINE_FAMILY: マシン ファミリー。

    • CPUS: vCPU の数。

    • MEMORY: 予約済み VM の合計メモリ。メモリは 256 MB の倍数で、MB 単位で指定する必要があります。

    たとえば、4 基の vCPU と 5 GB(5,120 MB)のメモリを備えた N2 カスタム マシンタイプを指定するには、n2-custom-4-5120 を指定します。

  • PROJECT_ID: リソースを予約するプロジェクトの ID。

  • NUMBER_OF_VMS: 予約する VM の数。

  • ZONE: リソースを予約するゾーン。

たとえば、ゾーン us-central1-a で 10 個の VM(各 VM は、4 つの vCPU を備えた事前定義されたマシンタイプ N2 を使用)の予約を作成するには、次のコマンドを実行します。

gcloud compute reservations create my-reservation \
    --machine-type=n2-standard-4 \
    --project=example-project \
    --vm-count=10 \
    --zone=us-central1-a

必要に応じて、以下の 1 つ以上の操作を行うことができます。

  • 予約された各 VM に画像処理装置(GPU)を追加するには、--accelerator フラグを指定します。

    gcloud compute reservations create my-reservation \
        --accelerator=count=NUMBER_OF_ACCELERATORS,type=ACCELERATOR_TYPE
        ...
    

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

    • NUMBER_OF_ACCELERATORS: 追加する GPU の数(予約済み VM あたり)。

    • ACCELERATOR_TYPE: 予約済みの VM に追加する GPU のタイプ。

    予約で指定したマシンタイプが指定する GPU のタイプをサポートしていることと、リソースを予約するゾーンで GPU を使用できることを確認します。この条件を満たしていない場合、予約の作成は失敗します。

  • 予約する各 VM に 1 つ以上のローカル SSD を追加するには、1 つ以上の --local-ssd フラグを指定します。ローカル SSD は 24 台まで指定できます。各ローカル SSD は 375 GB です。

    たとえば、予約の作成時に 2 台のローカル SSD を指定するには、2 つの --local-ssd フラグを指定します。

    gcloud compute reservations create my-reservation \
        --local-ssd=size=375,interface=INTERFACE_1 \
        --local-ssd=size=375,interface=INTERFACE_2 \
        ...
    

    INTERFACE_1INTERFACE_2 は、ローカル SSD で使用するインターフェースのタイプに置き換えます。次のいずれかの値を指定します。

    • NVME ディスク インターフェースの場合: nvme

    • SCSI ディスク インターフェースの場合: scsi

    予約済み VM に指定したマシンタイプが、選択したディスク インターフェースをサポートしていることを確認します。この条件を満たしていない場合、予約の作成は失敗します。詳細については、ディスク インターフェースの選択方法をご覧ください。

  • 予約する VM でゾーンのデフォルトの CPU プラットフォームではなく、特定の最小 CPU プラットフォームを使用するには、--min-cpu-platform フラグを指定します。

    gcloud compute reservations create my-reservation \
        --min-cpu-platform="MIN_CPU_PLATFORM" \
        ...
    

    MIN_CPU_PLATFORM は、最小 CPU プラットフォームに置き換えます。リソースを予約するゾーンで CPU プラットフォームが使用可能であることを確認するには、ゾーンごとに使用可能な CPU プラットフォームを表示します。

  • この予約を対象とする VM のみがこの予約を使用できることを指定するには、--require-specific-reservation フラグを指定します。

    gcloud compute reservations create example-reservation \
        --require-specific-reservation \
        ...
    
  • VM 間のネットワーク レイテンシを短縮するためにコンパクト プレースメント ポリシーを指定するには、--resource-policies=policy フラグを指定します。

    gcloud compute reservations create example-reservation \
        --resource-policies=policy=COMPACT_PLACEMENT_POLICY_NAME \
        --require-specific-reservation \
        ...
    

    COMPACT_PLACEMENT_POLICY_NAME は、既存のコンパクト プレースメント ポリシーの名前に置き換えます。また、コンパクト プレースメント ポリシーを指定する単一プロジェクト予約を作成するときにエラーを回避するため、次の項目を指定します。

    • コンパクト プレースメント ポリシーでサポートされているマシンタイプ

    • コンパクト プレースメント ポリシーが配置されているリージョン内のゾーン。

    • --require-specific-reservation フラグ。これは、この予約を対象とする VM のみがこの予約を使用できることを意味します。

  • Compute Engine で予約を自動的に削除できるようにするには、次のいずれかのメソッドを選択します。

    • 特定の日時の予約を削除するには、--delete-at-time フラグを指定した gcloud beta compute reservations create コマンドを使用します。

      gcloud beta compute reservations create reservation-example \
          --delete-at-time=DELETE_AT_TIME \
          ...
      

      DELETE_AT_TIME は、RFC 3339 タイムスタンプ形式の日時に置き換えます。これは次のようにする必要があります。

      YYYY-MM-DDTHH:MM:SSOFFSET
      

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

      • YYYY-MM-DD: 4 桁の年、2 桁の月、その月の 2 桁の日をハイフン(-)で区切った日付。

      • HH:MM:SS: 24 時間制の 2 桁の時間、2 桁の分、2 桁の秒をコロン(:)で区切った時刻。

      • OFFSET: 協定世界時(UTC)のオフセット形式で示されるタイムゾーン。たとえば、太平洋標準時(PST)を使用する場合は -08:00 を指定します。オフセットを使用しない場合は、Z を指定します。

    • 特定の期間の経過後に予約を削除するには、gcloud beta compute reservations create コマンドを使用し、--delete-after-duration フラグを指定します。

      gcloud beta compute reservations create reservation-example \
          --delete-after-duration=DELETE_AFTER_DURATION \
          ...
      

      DELETE_AFTER_DURATION は、期間(日、時、分、秒)に置き換えます。たとえば、30 分の場合は 30m を指定し、1 日、2 時間、3 分、4 秒の場合は 1d2h3m4s を指定します。

Terraform

単一プロジェクトの予約を作成するには、google_compute_reservation Terraform リソースを使用します。


resource "google_compute_reservation" "default" {
  name = "gce-reservation-local"
  zone = "us-central1-a"

  /**
   * To specify a single-project reservation, omit the share_settings block
   * (default) or set the share_type field to LOCAL.
   */
  share_settings {
    share_type = "LOCAL"
  }

  specific_reservation {
    count = 1
    instance_properties {
      machine_type = "n2-standard-2"
    }
  }

  /**
   * To let VMs with affinity for any reservation consume this reservation, omit
   * the specific_reservation_required field (default) or set it to false.
   */
  specific_reservation_required = false
}

Terraform の使用方法の詳細については、Google Cloud で Terraform を使用するをご覧ください。

REST

単一プロジェクトの予約を作成するには、reservations.insert メソッドPOST リクエストを行います。

オプション フィールドを使用せずに単一プロジェクトの予約を作成するには、次の POST リクエストを送信します。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/reservations

{
  "name": "RESERVATION_NAME",
  "specificReservation": {
    "count": "NUMBER_OF_VMS",
    "instanceProperties": {
      "machineType": "MACHINE_TYPE",
    }
  }
}

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

  • PROJECT_ID: リソースを予約するプロジェクトの ID。

  • ZONE: リソースを予約するゾーン。

  • RESERVATION_NAME: 作成する予約の名前。

  • NUMBER_OF_VMS: 予約する VM の数。

  • MACHINE_TYPE: 各 VM に使用するマシンタイプ。次のいずれかの値を指定します。

    • 事前定義されたマシンタイプの場合: MACHINE_FAMILY-standard-CPUS

    • カスタム マシンタイプの場合: MACHINE_FAMILY-custom-CPUS-MEMORYカスタム マシンタイプを指定する前に、カスタム マシンタイプの VM の制限事項を確認してください。

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

    • MACHINE_FAMILY: マシン ファミリー。

    • CPUS: vCPU の数。

    • MEMORY: 予約済み VM の合計メモリ。メモリは 256 MB の倍数で、MB 単位で指定する必要があります。

    たとえば、4 つの vCPU と 5 GB(5,120 MB)のメモリで N2 カスタム マシンタイプを指定するには、n2-custom-4-5120 を指定します。

たとえば、ゾーン us-central1-a で 10 個の VM(各 VM は、4 つの vCPU を備えた事前定義されたマシンタイプ N2 を使用)の予約を作成するには、次の POST リクエストを送信します。

POST https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a/reservations

{
  "name": "my-reservation",
  "specificReservation": {
    "count": "10",
    "instanceProperties": {
      "machineType": "n2-standard-4",
    }
  }
}

必要に応じて、以下の 1 つ以上の操作を行うことができます。

  • 予約する各 VM に画像処理装置(GPU)を追加するには、リクエスト本文に guestAccelerators フィールドを含めます。

    POST https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a/reservations
    
    {
      "name": "example-reservation",
      "specificReservation": {
        "instanceProperties": {
          "guestAccelerators": [
            {
              "acceleratorCount": NUMBER_OF_ACCELERATORS,
              "acceleratorType": "ACCELERATOR_TYPE"
            }
          ],
          ...
        },
        ...
      }
    }
    

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

    • NUMBER_OF_ACCELERATORS: 追加する GPU の数(予約済み VM あたり)。

    • ACCELERATOR_TYPE: 予約済みの VM に追加する GPU のタイプ。

    予約で指定したマシンタイプが指定する GPU のタイプをサポートしていることと、リソースを予約するゾーンで GPU を使用できることを確認します。この条件を満たしていない場合、予約の作成は失敗します。

  • 予約する各 VM に 1 つ以上のローカル SSD を追加するには、リクエスト本文に localSsds フィールドを含めます。ローカル SSD は 24 台まで指定できます。各ローカル SSD は 375 GB です。

    たとえば、予約の作成時に 2 つのローカル SSD を指定するには、次のように指定します。

    POST https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a/reservations
    
    {
      "name": "example-reservation",
      "specificReservation": {
        "instanceProperties": {
          "localSsds": [
            {
              "diskSizeGb": "375",
              "interface": "INTERFACE_1"
            },
            {
              "diskSizeGb": "375",
              "interface": "INTERFACE_2"
            }
          ],
          ...
        },
        ...
      }
    }
    

    INTERFACE_1INTERFACE_2 は、各ローカル SSD で使用するインターフェースのタイプに置き換えます。次のいずれかの値を指定します。

    • NVME ディスク インターフェースの場合: NVME

    • SCSI ディスク インターフェースの場合: SCSI

    予約済み VM に指定したマシンタイプが、選択したディスク インターフェースをサポートしていることを確認します。この条件を満たしていない場合、予約の作成は失敗します。詳細については、ディスク インターフェースの選択方法をご覧ください。

  • 予約する VM でゾーンのデフォルトの CPU プラットフォームではなく、特定の最小 CPU プラットフォームを使用するには、リクエスト本文に minCpuPlatform フィールドを含めます。

    POST https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a/reservations
    
    {
      "name": "example-reservation",
      "specificReservation": {
        "instanceProperties": {
          "minCpuPlatform": "MIN_CPU_PLATFORM",
          ...
        },
        ...
      }
    }
    

    MIN_CPU_PLATFORM は、最小 CPU プラットフォームに置き換えます。リソースを予約するゾーンで CPU プラットフォームが使用可能であることを確認するには、ゾーン別に使用可能な CPU プラットフォームを表示します。

  • 予約する VM 間のネットワーク レイテンシを短縮するために コンパクト プレースメント ポリシーを指定するには、リクエスト本文に resourcePolicies フィールドを含めます。

    POST https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a/reservations
    
    {
      "name": "example-reservation",
      "resourcePolicies": {
        "policy" : "projects/example-project/regions/REGION/resourcePolicies/COMPACT_PLACEMENT_POLICY_NAME"
      },
      "specificReservationRequired": true,
      ...
    }
    

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

    • REGION: コンパクト プレースメント ポリシーが存在するリージョン。プレースメント ポリシーと同じリージョン内でリソースを予約する必要があります。この条件を満たしていない場合、予約の作成は失敗します。

    • COMPACT_PLACEMENT_POLICY_NAME: 既存のコンパクト プレースメント ポリシーの名前。

    また、コンパクト プレースメント ポリシーを指定する単一プロジェクト予約を作成するときにエラーを回避するため、次の項目を指定します。

  • この予約を対象とする VM のみがこの予約を使用できることを指定するには、リクエスト本文に specificReservationRequired フィールドを含め、true に設定します。

    POST https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a/reservations
    
    {
      "name": "example-reservation",
      "specificReservationRequired": true,
      ...
    }
    
  • Compute Engine で予約を自動的に削除できるようにするには、次のいずれかのメソッドを選択します。

    • 特定の日時の予約を削除するには、beta.reservations.insert メソッドPOST リクエストを送信します。リクエスト本文に、deleteAtTime フィールドを含めます。

      POST https://compute.googleapis.com/compute/beta/projects/example-project/zones/us-central1-a/reservations
      
      {
        "name": "example-reservation",
        "deleteAtTime": "DELETE_AT_TIME",
        ...
      }
      

      DELETE_AT_TIME は、RFC 3339 タイムスタンプ形式の日時に置き換えます。これは次のようにする必要があります。

      YYYY-MM-DDTHH:MM:SSOFFSET
      

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

      • YYYY-MM-DD: 4 桁の年、2 桁の月、その月の 2 桁の日をハイフン(-)で区切った日付。

      • HH:MM:SS: 24 時間制の 2 桁の時間、2 桁の分、2 桁の秒をコロン(:)で区切った時刻。

      • OFFSET: 協定世界時(UTC)のオフセット形式で示されるタイムゾーン。たとえば、太平洋標準時(PST)を使用する場合は -08:00 を指定します。オフセットを使用しない場合は、Z を指定します。

    • 特定の期間の経過後に予約を削除するには、beta.reservations.insert メソッドPOST リクエストを送信します。リクエスト本文に、deleteAfterDuration フィールドを含めます。

      POST https://compute.googleapis.com/compute/beta/projects/example-project/zones/us-central1-a/reservations
      
      {
        "name": "example-reservation",
        "deleteAfterDuration": {
          "seconds": "DELETE_AFTER_DURATION"
        },
        ...
      }
      

      DELETE_AFTER_DURATION は期間(秒単位)に置き換えます。たとえば、86,400 秒(1 日)の場合は 86400 を指定します。

トラブルシューティング

予約の作成に関するトラブルシューティング方法を確認してください。

次のステップ