予約を使用する


このドキュメントでは、Compute Engine を使用して次の操作を行う方法について説明します。

  • 予約済みの仮想マシン(VM)インスタンスを使用する。

  • 予約の消費を確認する。

  • 予約使用状況レポートを表示する。

VM を使用する他の Google Cloud プロダクトで予約を使用する方法については、次のプロダクトの予約に関するドキュメントをご覧ください。

始める前に

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

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.
    3. REST

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

        Install the Google Cloud CLI, then initialize it by running the following command:

        gcloud init

      詳細については、Google Cloud 認証ドキュメントの REST を使用して認証するをご覧ください。

必要なロール

予約を使用するために必要な権限を取得するには、プロジェクトに対する Compute インスタンス管理者(v1)roles/compute.instanceAdmin.v1)の IAM ロールを付与するよう管理者に依頼します。ロールの付与の詳細については、アクセス権の管理をご覧ください。

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

必要な権限

予約を使用するには、次の権限が必要です。

  • 予約を作成する権限: プロジェクトに対する compute.reservations.create
  • VM を作成する権限:
    • プロジェクトに対する compute.instances.create
    • カスタム イメージを使用して VM を作成する: イメージに対する compute.images.useReadOnly
    • スナップショットを使用して VM を作成する: スナップショットに対する compute.snapshots.useReadOnly
    • インスタンス テンプレートを使用して VM を作成する: インスタンス テンプレートに対する compute.instanceTemplates.useReadOnly
    • レガシー ネットワークを VM に割り当てる: プロジェクトに対する compute.networks.use
    • VM の静的 IP アドレスを指定する: プロジェクトに対する compute.addresses.use
    • レガシー ネットワークの使用時に VM に外部 IP アドレスを割り当てる: プロジェクトに対する compute.networks.useExternalIp
    • VM のサブネットを指定する: プロジェクトまたは選択したサブネットに対する compute.subnetworks.use
    • VPC ネットワークの使用時に VM に外部 IP アドレスを割り当てる: プロジェクトまたは選択したサブネットに対する compute.subnetworks.useExternalIp
    • VM の VM インスタンス メタデータを設定する: プロジェクトに対する compute.instances.setMetadata
    • VM にタグを設定する: VM に対する compute.instances.setTags
    • VM にラベルを設定する: VM に対する compute.instances.setLabels
    • VM が使用するサービス アカウントを設定する: VM に対する compute.instances.setServiceAccount
    • VM に新しいディスクを作成する: プロジェクトに対する compute.disks.create
    • 既存のディスクを読み取り専用モードまたは読み取り / 書き込みモードでアタッチする: ディスクに対する compute.disks.use
    • 既存のディスクを読み取り専用モードでアタッチする: ディスクに対する compute.disks.useReadOnly
  • インスタンス テンプレートを作成する: プロジェクトに対する compute.instanceTemplates.create

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

予約済み VM を消費する

仮想マシン(VM)インスタンスを作成すると、VM と予約の両方のプロパティが一致している場合にのみ、VM による予約の消費が開始されます。また、VM の予約アフィニティ プロパティは次のいずれかのオプションに設定する必要があります。

  • 一致する任意の予約を使用する - VM は、プロパティが一致するすべての予約を自動的に使用できます(デフォルト)。

    このオプションは、大量の VM の作成または削除を行い、可能な場合には常に予約を使用する必要がある場合に便利です。このシナリオでは、プロパティが予約と一致するかどうかにかかわらず、VM を作成できます。一致する場合、VM は予約の使用順序に応じて予約の使用を開始します。

  • 特定の予約を使用する - VM は特定の予約のみを使用できます。予約は自動的に使用できません。

    このオプションは、特別なイベント用のバックアップとして特定の容量を確保する場合に便利です。このシナリオでは、VM のプロパティと特定の予約のプロパティが一致している場合にのみ、VM を作成できます。

  • 予約をまったく使用できない - VM は予約を使用できません。

    このオプションは、予約済みリソースを消費しない一時的な VM を作成する場合などに役立ちます。

一致する任意の予約から VM を使用する

この消費モデルでは、プロパティが予約で指定された VM プロパティと一致すると、既存の VM と新しい VM が予約を自動的に消費します。

この使用量モデルを使用する場合、共有予約を使用する前に、現在のプロジェクトの VM は、すべての単一プロジェクト予約を最初に使用します。予約が自動的に使用されるようにする方法の詳細については、使用順序をご覧ください。

予約の作成時に、特定の予約が必要であることを示すフラグやオプションを使用しない限り、これがデフォルト諸費モデルになります。

コンソール

  1. 任意の予約を消費するように構成した予約アフィニティ プロパティがある VM によって使用されるリソース(デフォルト)を使用して予約を作成するには、次の操作を行います。

    1. 作成するフィールドのタイプを選択します。

      • スタンドアロン予約を作成するには、次の操作を行います。

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

          [予約] に移動

        2. [オンデマンド予約] タブ(デフォルト)で、[ 予約を作成] をクリックします。

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

      • コミットメントに関連付けられた予約を作成するには、次の操作を行います。

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

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

          [コミットメント リスト] ページが開きます。

        2. [コミットメントを購入] をクリックします。

          [確約利用割引の購入] ページが表示されます。

        3. コミットメントのプロパティを指定します。次に、[予約] セクションで [項目を追加] をクリックします。

          [新しい予約を追加] セクションが表示されます。

          予約が関連付けられたコミットメントを購入する方法については、予約が関連付けられているコミットメントを購入するをご覧ください。

    2. [名前] フィールドに、予約の名前を入力します。この例では、「reservation-01」と入力します。

    3. リソースを予約するリージョンゾーンを選択します。この例では、リージョンとして us-central1、ゾーンとして us-central1-a を選択します。

    4. 希望する共有タイプを選択します。

      • 単一プロジェクトの予約を作成するには、[ローカル] を選択します。
      • 複数のプロジェクト間で共有予約を作成するには、[共有] を選択します。この予約を他のプロジェクトと共有するには、 [プロジェクトを追加] をクリックして、現在のプロジェクトの組織から目的のプロジェクトを選択します。
    5. [VM インスタンスでの使用] セクションで、[予約を自動的に使用する] を選択して、一致するすべての VM でこの予約を自動的に使用できるようにします。

    6. [VM インスタンスの数] フィールドに、予約する VM の数を入力します。この例では、「2」と入力します。

    7. VM ごとに予約するリソースを指定します。

      • 既存のインスタンス テンプレートと一致する VM を予約する場合は、[インスタンス テンプレートを使用する] を選択し、リストからインスタンス テンプレートを選択します。
      • それ以外の場合は、[マシンタイプを指定する] を選択し、次のように指定します。
        1. [マシン ファミリー]、[シリーズ]、[マシンタイプ] の各フィールドで、マシン ファミリー、シリーズ、マシンタイプを選択します。
        2. 省略可: 最小 CPU プラットフォームや GPU を指定します。
          1. [CPU プラットフォームと GPU] セクションを展開するには、 展開矢印をクリックします。
          2. 省略可: 最小 CPU プラットフォームを指定するには、[CPU プラットフォーム] リストでオプションを選択します。
          3. 省略可: GPU を追加するには、 [GPU を追加する] をクリックします。それから、[GPU タイプ] フィールドと [GPU の数] フィールドで、各 VM の GPU のタイプと数を選択します。
        3. 省略可: ローカル SSD を追加します。
          1. [ディスクの数] フィールドで、各 VM のローカル SSD の数を選択します。
          2. [インターフェース タイプ] フィールドで、ローカル SSD のインターフェースを選択します。

      この例では、[マシンタイプを指定] を選択します。次に、General-purpose マシン ファミリーと N2 シリーズに n2-standard-32 マシンタイプを選択し、最小 CPU プラットフォーム Intel Cascade Lake を選択します。

    8. 予約の作成を完了します。

      • スタンドアロンの予約を作成する場合は、[作成] をクリックします。

      • コミットメントに関連付けられた予約を作成する場合:

        1. この予約のプロパティの指定を完了するには、[完了] をクリックします。
        2. コミットメントと関連付けられた予約の作成を完了するには、[購入] をクリックします。
  2. 予約が共有されているプロジェクトまたは予約と同じプロジェクトで、有効な予約を対象とする VM を作成します。

    VM のプロパティが reservation-01 内の VM プロパティ(ゾーン、マシンタイプ(マシン ファミリー、vCPU、メモリ)、最小 CPU プラットフォーム、GPU の量とタイプ、ローカル SSD インターフェースとサイズなど)と一致していることを確認します。

    VM の作成方法の詳細については、VM を作成して起動するをご覧ください。

    1. Google Cloud コンソールで、[インスタンスの作成] ページに移動します。

      [インスタンスの作成] に移動

      [インスタンスの作成] ページが開きます。

    2. VM の名前を指定します。

    3. 以降のセクションでは、予約のすべてのプロパティ(オプションのプロパティを含む)と完全に一致する構成を選択します。この例では、次の VM プロパティを reservation-01 と一致させる必要があります。

      • リージョン: us-central1
      • ゾーン: us-central1-a
      • マシンタイプ: n2-standard-32
      • 最小 CPU プラットフォーム: Intel Cascade Lake
      • GPU: なし
      • ローカル SSD: なし
    4. [詳細オプション] セクションを開き、[管理] セクションを開きます。[予約] リストで、[作成済みの予約を自動的に使用する] を選択します。

    5. VM を作成するには、[作成] をクリックします。

gcloud

  1. reservation-01という予約を作成します。

    gcloud compute reservations create reservation-01 \
        --vm-count=2 \
        --machine-type=n2-standard-32 \
        --min-cpu-platform="Intel Cascade Lake" \
        --zone=us-central1-a
    
  2. 利用可能な予約を対象とし、reservation-01 の VM プロパティに一致する VM を作成します。これには、ゾーン、マシンタイプ(マシン ファミリー、vCPU、メモリ)、最小 CPU プラットフォーム、GPU の量とタイプ、ローカル SSD の量とインターフェースなどが含まれます。

    gcloud compute instances create instance-1 \
        --machine-type=n2-standard-32 \
        --min-cpu-platform="Intel Cascade Lake" \
        --zone=us-central1-a \
        --reservation-affinity=any
    

REST

  1. reservation-01という予約を作成します。

    POST https://compute.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/reservations
    
    {
      "name": "reservation-01",
      "specificReservation": {
        "count": "2",
        "instanceProperties": {
          "machineType": "n2-standard-32",
          "minCpuPlatform": "Intel Cascade Lake",
        }
      }
    }
    
  2. 利用可能な予約を対象とし、reservation-01 の VM プロパティに一致する VM を作成します。これには、ゾーン、マシンタイプ(マシン ファミリー、vCPU、メモリ)、最小 CPU プラットフォーム、GPU の量とタイプ、ローカル SSD の量とインターフェースなどが含まれます。

    POST https://compute.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/instances
    
    {
      "name": "instance-1",
      "machineType": "zones/us-central1-a/machineTypes/n2-standard-32",
      "minCpuPlatform": "Intel Cascade Lake",
      "disks": [
        {
          "boot": true,
          "initializeParams": {
            "sourceImage": "projects/debian-cloud/global/images/family/debian-12"
          }
        }
      ],
      "networkInterfaces": [
        {
          "network": "global/networks/default"
        }
      ],
      "reservationAffinity": {
        "consumeReservationType": "ANY_RESERVATION"
      }
    }
    

特定の予約から VM を使用する

この消費モデルでは、特定の予約名を対象としている新しい VM だけがその予約を消費し、予約が自動的に消費されることはありません。

予約を作成するときは、次のいずれかの方法を使用して、特定の予約をターゲットにするために VM が必要であることを指定します。

  • Google Cloud コンソールで、[特定の予約を選択する] チェックボックスをオンにします。
  • gcloud CLI で、--require-specific-reservation フラグを含めます。
  • Compute Engine API で、specificReservationRequired フィールドを true に設定します。
  • Terraform で、specific_reservation_required フィールドを true に設定します。

次に、その予約を対象とする VM を作成します。特定の予約を対象とする VM は、VM のプロパティと予約のプロパティが一致している場合にのみ作成できます。それ以外の場合、VM の作成に失敗します

インスタンス テンプレートを使用してリージョン マネージド インスタンス グループに VM を作成する場合は、該当する各ゾーンに同じ名前で同一の予約を作成します。次に、グループのインスタンス テンプレートの名前を使用して、予約を対象にします。

たとえば、reservation-02 という名前の予約を作成して、この予約を対象とし、予約の VM プロパティに一致する VM を作成します。

使用する VM のタイプに応じて、特定の単一プロジェクト予約を消費する、または、特定の共有予約を消費するの手順で操作します。

特定の単一プロジェクト予約を使用する

特定の単一プロジェクトの予約を使用するには、次のいずれかのオプションを選択します。

コンソール

  1. この予約の対象となる VM でのみ使用されるリソースの共有予約を作成するには、次の操作を行います。

    1. 次のオプションのいずれかを選択します。

      • スタンドアロン予約を作成するには、次の操作を行います。

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

          [予約] に移動

        2. [オンデマンド予約] タブ(デフォルト)で、[ 予約を作成] をクリックします。

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

      • コミットメントに関連付けられた予約を作成するには、次の操作を行います。

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

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

        2. [コミットメントを購入] をクリックします。

          [確約利用割引の購入] ページが表示されます。

        3. コミットメントのプロパティを指定します。次に、[予約] セクションで [項目を追加] をクリックします。

          [新しい予約を追加] セクションが表示されます。

          予約が関連付けられたコミットメントを購入する方法については、予約が関連付けられているコミットメントを購入するをご覧ください。

    2. [名前] フィールドに、予約の名前を入力します。この例では、「reservation-02」と入力します。

    3. リソースを予約するリージョンゾーンを選択します。この例では、リージョンとして us-central1、ゾーンとして us-central1-a を選択します。

    4. 予約が単一プロジェクトの予約であることを指定するには、[共有タイプ] として [ローカル] を選択します。

    5. [VM インスタンスでの使用] セクションで、[特定の予約を選択する] を選択にして、この予約名を対象とする VM だけがこの予約を使用できるようにします。

    6. [VM インスタンスの数] フィールドに、予約する VM の数を入力します。この例では、「10」と入力します。

    7. VM ごとに予約するリソースを指定します。

      • 既存のインスタンス テンプレートと一致する VM を予約する場合は、[インスタンス テンプレートを使用する] を選択し、リストからインスタンス テンプレートを選択します。
      • それ以外の場合は、[マシンタイプを指定する] を選択し、次のように指定します。
        1. [マシン ファミリー]、[シリーズ]、[マシンタイプ] の各フィールドで、マシン ファミリー、シリーズ、マシンタイプを選択します。
        2. 省略可: 最小 CPU プラットフォームや GPU を指定します。
          1. [CPU プラットフォームと GPU] セクションを展開するには、 展開矢印をクリックします。
          2. 省略可: 最小 CPU プラットフォームを指定するには、[CPU プラットフォーム] リストでオプションを選択します。
          3. 省略可: GPU を追加するには、 [GPU を追加する] をクリックします。それから、[GPU タイプ] フィールドと [GPU の数] フィールドで、各 VM の GPU のタイプと数を選択します。
        3. 省略可: ローカル SSD を追加します。
          1. [ディスクの数] フィールドで、各 VM のローカル SSD の数を選択します。
          2. [インターフェース タイプ] フィールドで、ローカル SSD のインターフェースを選択します。

      この例では、[マシンタイプを指定] を選択します。次に、General-purpose マシン ファミリーと N2 シリーズに n2-standard-32 マシンタイプを選択し、最小 CPU プラットフォーム Intel Cascade Lake を選択します。

    8. 予約の作成を完了します。

      • スタンドアロンの予約を作成する場合は、[作成] をクリックします。

      • コミットメントに関連付けられた予約を作成する場合:

        1. この予約のプロパティの指定を完了するには、[完了] をクリックします。
        2. コミットメントと関連付けられた予約の作成を完了するには、[購入] をクリックします。
  2. 同じプロジェクトで、名前を使用して特定の予約を対象とする VM を作成します。

    VM のプロパティが、特定の予約の VM プロパティ(ゾーン、マシンタイプ(マシン ファミリー、vCPU、メモリ)、最小 CPU プラットフォーム、GPU の量とタイプ、ローカル SSD インターフェースとサイズなど)と一致していることを確認します。

    VM の作成方法の詳細については、VM を作成して起動するをご覧ください。

    1. Google Cloud コンソールで、[インスタンスの作成] ページに移動します。

      [インスタンスの作成] に移動

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

    3. 以降のセクションでは、予約のすべてのプロパティ(オプションのプロパティを含む)と完全に一致する構成を選択します。この例では、次の VM プロパティを reservation-02 と一致させる必要があります。

      • リージョン: us-central1
      • ゾーン: us-central1-a
      • マシンタイプ: n2-standard-32
      • 最小 CPU プラットフォーム: Intel Cascade Lake
      • GPU: なし
      • ローカル SSD: なし
    4. [詳細オプション] セクションを開き、次の操作を行います。

      1. [管理] セクションを開きます。

      2. [予約] セクションの [アプリケーション ポリシー] リストで、[特定の予約を選択する] を選択します。

      3. VM で使用する VM プロパティに一致する予約を選択します。この例では、reservation-02 を選択します。

    5. VM を作成するには、[作成] をクリックします。

gcloud

  1. --require-specific-reservation フラグのある reservation-02 という名前の予約を作成します。これらの予約済みリソースは、この予約名を対象とする VM でのみ使用できます。

    gcloud compute reservations create reservation-02 \
        --machine-type=n2-standard-32 \
        --min-cpu-platform="Intel Cascade Lake" \
        --vm-count=10 \
        --zone=us-central1-a \
        --require-specific-reservation
    
  2. --reservation-affinity--reservation フラグを使用して reservation-02 の名前を対象とする VM を作成します。

    VM のプロパティが、予約の VM プロパティ(ゾーン、マシンタイプ(マシン ファミリー、vCPU、メモリ)、最小 CPU プラットフォーム、GPU の量とタイプ、ローカル SSD インターフェースとサイズなど)と一致していることを確認します。

    gcloud compute instances create instance-2 \
        --machine-type=n2-standard-32 \
        --min-cpu-platform="Intel Cascade Lake" \
        --zone=us-central1-a \
        --reservation-affinity=specific \
        --reservation=reservation-02
    

REST

  1. specificReservationRequiredtrue に設定した reservation-02 という名前の予約を作成します。

    POST https://compute.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/reservations
    
    {
      "name":"reservation-02",
      "specificReservation":{
        "count":"10",
        "instanceProperties":{
          "machineType":"n2-standard-32",
          "minCpuPlatform": "Intel Cascade Lake",
        }
      },
      "specificReservationRequired": true
    }
    
  2. reservationAffinity を使用して、reservation-02 という名前を対象とする VM を作成します。

    VM のプロパティが、予約の VM プロパティ(ゾーン、マシンタイプ(マシン ファミリー、vCPU、メモリ)、最小 CPU プラットフォーム、GPU の量とタイプ、ローカル SSD インターフェースとサイズなど)と一致していることを確認します。

    POST https://compute.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/instances
    
    {
      "name": "instance-2",
      "machineType": "zones/us-central1-a/machineTypes/n2-standard-32",
      "minCpuPlatform": "Intel Cascade Lake",
      "disks": [
        {
          "boot": true,
          "initializeParams": {
            "sourceImage": "projects/debian-clouid/global/images/family/debian-12"
          }
        }
      ],
      "networkInterfaces": [
        {
          "network": "global/networks/default"
        }
      ],
      "reservationAffinity": {
        "consumeReservationType": "SPECIFIC_RESERVATION",
        "key": "compute.googleapis.com/reservation-name",
        "values": [
          "reservation-02"
        ]
      }
    }
    

特定の共有予約を消費する

特定の共有予約を使用するには、次のいずれかのオプションを選択します。

コンソール

  1. この予約の対象となる VM でのみ使用されるリソースの共有予約を作成するには、次の操作を行います。

    1. 次のオプションのいずれかを選択します。

      • スタンドアロン予約を作成するには、次の操作を行います。

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

          [予約] に移動

        2. [オンデマンド予約] タブ(デフォルト)で、[ 予約を作成] をクリックします。

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

      • コミットメントに関連付けられた予約を作成するには、次の操作を行います。

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

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

        2. [コミットメントを購入] をクリックします。

          [確約利用割引の購入] ページが表示されます。

        3. コミットメントのプロパティを指定します。次に、[予約] セクションで [項目を追加] をクリックします。

          [新しい予約を追加] セクションが表示されます。

          予約が関連付けられたコミットメントを購入する方法については、予約が関連付けられているコミットメントを購入するをご覧ください。

    2. [名前] フィールドに、予約の名前を入力します。この例では、「reservation-02」と入力します。

    3. リソースを予約するリージョンゾーンを選択します。この例では、リージョンとして us-central1、ゾーンとして us-central1-a を選択します。

    4. 予約が共有予約であることを指定するには、[共有タイプ] として [共有] を選択します。

    5. [プロジェクトを追加] をクリックし、予約を共有する現在のプロジェクトの組織からプロジェクトを選択します。

    6. [VM インスタンスでの使用] セクションで、[特定の予約を選択する] を選択にして、この予約名を対象とする VM だけがこの予約を使用できるようにします。

    7. [VM インスタンスの数] フィールドに、予約する VM の数を入力します。この例では、「10」と入力します。

    8. VM ごとに予約するリソースを指定します。

      • 既存のインスタンス テンプレートと一致する VM を予約する場合は、[インスタンス テンプレートを使用する] を選択し、リストからインスタンス テンプレートを選択します。
      • それ以外の場合は、[マシンタイプを指定する] を選択し、次のように指定します。
        1. [マシン ファミリー]、[シリーズ]、[マシンタイプ] の各フィールドで、マシン ファミリー、シリーズ、マシンタイプを選択します。
        2. 省略可: 最小 CPU プラットフォームや GPU を指定します。
          1. [CPU プラットフォームと GPU] セクションを展開するには、 展開矢印をクリックします。
          2. 省略可: 最小 CPU プラットフォームを指定するには、[CPU プラットフォーム] リストでオプションを選択します。
          3. 省略可: GPU を追加するには、 [GPU を追加する] をクリックします。それから、[GPU タイプ] フィールドと [GPU の数] フィールドで、各 VM の GPU のタイプと数を選択します。
        3. 省略可: ローカル SSD を追加します。
          1. [ディスクの数] フィールドで、各 VM のローカル SSD の数を選択します。
          2. [インターフェース タイプ] フィールドで、ローカル SSD のインターフェースを選択します。

      この例では、[マシンタイプを指定] を選択します。次に、General-purpose マシン ファミリーと N2 シリーズに n2-standard-32 マシンタイプを選択し、最小 CPU プラットフォーム Intel Cascade Lake を選択します。1. 予約の作成を完了します。

      • スタンドアロンの予約を作成する場合は、[作成] をクリックします。

      • コミットメントに関連付けられた予約を作成する場合:

        1. この予約のプロパティの指定を完了するには、[完了] をクリックします。
        2. コミットメントと関連付けられた予約の作成を完了するには、[購入] をクリックします。
  2. 同じプロジェクト、または予約が共有されているプロジェクトで、名前を使用して特定の予約を対象とする VM を作成します。

    VM のプロパティが、特定の予約の VM プロパティ(ゾーン、マシンタイプ(マシン ファミリー、vCPU、メモリ)、最小 CPU プラットフォーム、GPU の量とタイプ、ローカル SSD インターフェースとサイズなど)と一致していることを確認します。

    1. Google Cloud コンソールで、[インスタンスの作成] ページに移動します。

      [インスタンスの作成] に移動

      [インスタンスの作成] ページが開きます。

    2. VM の名前を指定します。

    3. 以降のセクションでは、予約のすべてのプロパティ(オプションのプロパティを含む)と完全に一致する構成を選択します。この例では、次の VM プロパティを reservation-02 と一致させる必要があります。

      • リージョン: us-central1
      • ゾーン: us-central1-a
      • マシンタイプ: n2-standard-32
      • 最小 CPU プラットフォーム: Intel Cascade Lake
      • GPU: なし
      • ローカル SSD: なし
    4. [詳細オプション] セクションを開き、[管理] セクションを開きます。[予約] リストで [特定の予約を選択する] を選択し、次の操作を行います。

      1. 現在のプロジェクトと共有されている予約がある [予約プロジェクト] を選択します。この例では、reservation-02 の作成に使用したプロジェクトを選択します。
      2. この VM で消費する共有予約の [予約名] を選択します。この例では、「reservation-02」を選択します。
    5. VM を作成するには、[作成] をクリックします。

gcloud

  1. --require-specific-reservation フラグのある reservation-02 という名前の予約を作成します。これらの予約済みリソースは、この予約名を対象とする VM でのみ使用できます。

    gcloud compute reservations create reservation-02 \
        --machine-type=n2-standard-32 \
        --min-cpu-platform="Intel Cascade Lake" \
        --vm-count=10 \
        --zone=us-central1-a \
        --project=my-owner-project \
        --share-setting=projects \
        --share-with=project-1,project-2 \
        --require-specific-reservation
    
  2. --reservation-affinity--reservation フラグを使用して reservation-02 の名前を対象とする VM を作成します。この予約が共有されているユーザー プロジェクトからこの予約を消費するには、予約を作成したプロジェクト、my-owner-project も指定する必要があります。

    VM のプロパティが、予約の VM プロパティ(ゾーン、マシンタイプ(マシン ファミリー、vCPU、メモリ)、最小 CPU プラットフォーム、GPU の量とタイプ、ローカル SSD インターフェースとサイズなど)と一致していることを確認します。

    gcloud compute instances create instance-2 \
        --machine-type=n2-standard-32 \
        --min-cpu-platform="Intel Cascade Lake" \
        --zone=us-central1-a \
        --reservation-affinity=specific \
        --reservation=projects/my-owner-project/reservations/reservation-02
    

REST

  1. specificReservationRequiredtrue に設定した reservation-02 という名前の予約を作成します。

    POST https://compute.googleapis.com/compute/v1/projects/my-owner-project/zones/us-central1-a/reservations
    
    {
      "name":"reservation-02",
      "specificReservation":{
        "count":"10",
        "instanceProperties":{
          "machineType":"n2-standard-32",
          "minCpuPlatform": "Intel Cascade Lake"
        }
      },
      "shareSettings": {
        "shareType": "SPECIFIC_PROJECTS",
        "projectMap": {
          "project-1": {
            "projectId": "project-1"
          },
          "project-2": {
            "projectId": "project-2"
          }
        }
      },
      "specificReservationRequired": true
    }
    
  2. reservationAffinity を使用して、reservation-02 という名前を対象とする VM を作成します。この予約が共有されているコンシューマ プロジェクトからこの予約を消費するには、予約のオーナー プロジェクト、my-owner-project も指定する必要があります。

    VM のプロパティが、予約の VM プロパティ(ゾーン、マシンタイプ(マシン ファミリー、vCPU、メモリ)、最小 CPU プラットフォーム、GPU の量とタイプ、ローカル SSD インターフェースとサイズなど)と一致していることを確認します。

    POST https://compute.googleapis.com/compute/v1/projects/project-2/zones/us-central1-a/instances
    
    {
      "name": "instance-2",
      "machineType": "zones/us-central1-a/machineTypes/n2-standard-32",
      "minCpuPlatform": "Intel Cascade Lake",
      "disks": [
        {
          "boot": true,
          "initializeParams": {
            "sourceImage": "projects/debian-clouid/global/images/family/debian-12"
          }
        }
      ],
      "networkInterfaces": [
        {
          "network": "global/networks/default"
        }
      ],
      "reservationAffinity": {
        "consumeReservationType": "SPECIFIC_RESERVATION",
        "key": "compute.googleapis.com/reservation-name",
        "values": [
          "projects/my-owner-project/reservations/reservation-02"
        ]
      }
    }
    

予約を使用せずに VM を作成する

自動消費される予約を作成すると、プロジェクト内でプロパティが一致する実行中の VM は、その予約を消費します。1 つ以上の VM が予約を使用しないようにするには、次の操作を行います。

  • このセクションで説明するように、VM の予約アフィニティ プロパティを設定して、予約を明示的に使用しないようにします。

  • VM が予約の VM プロパティと一致していないことを確認します。

予約を明示的に使用しない VM を作成するには、次のいずれかの方法を選択します。

予約を使用しない VM を作成する

予約を明示的に消費しない VM を作成するには、次のいずれかのオプションを選択します。

コンソール

  1. Google Cloud コンソールで、[インスタンスの作成] ページに移動します。

    [インスタンスの作成] に移動

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

  3. [リージョン] リストと [ゾーン] リストで、VM を作成するリージョンとゾーンを選択します。

  4. [マシンの構成] セクションで、VM に使用するマシンタイプを指定します。

  5. [詳細オプション] セクションを開き、次の操作を行います。

    1. [管理] セクションを開きます。

    2. [予約] セクションの [アプリケーション ポリシー] リストで、[使用しない] を選択します。

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

gcloud

予約を明示的に使用しない VM を作成するには、--reservation-affinity=none フラグを指定して gcloud compute instances create コマンドを使用します。

gcloud compute instances create VM_NAME \
    --machine-type=MACHINE_TYPE \
    --reservation-affinity=none \
    --zone=ZONE

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

  • VM_NAME: VM の名前。

  • MACHINE_TYPE: VM に使用するマシンタイプ。

  • ZONE: VM インスタンスを作成するゾーン。

REST

予約を明示的に消費しない VM を作成するには、instances.insert メソッドPOST リクエストを送信します。リクエストの本文に、NO_RESERVATION に設定された consumeReservationType フィールドを含めます。

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

{
  "name": "VM_NAME",
  "machineType": "zones/ZONE/machineTypes/MACHINE_TYPE",
  "disks": [
    {
      "boot": true,
      "initializeParams": {
        "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
      }
    }
  ],
  "networkInterfaces": [
    {
      "network": "global/networks/default"
    }
  ],
  "reservationAffinity": {
    "consumeReservationType": "NO_RESERVATION"
  }
}

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

  • PROJECT_ID: VM を作成するプロジェクトの ID。

  • ZONE: VM インスタンスを作成するゾーン。

  • VM_NAME: VM の名前。

  • MACHINE_TYPE: VM に使用するマシンタイプ。

  • IMAGE_PROJECT: OS イメージを含むイメージ プロジェクト(例: debian-cloud)。サポートされているイメージ プロジェクトの詳細については、公開イメージをご覧ください。

  • IMAGE: 次のいずれかを指定します。

    • OS イメージの特定のバージョン。例: debian-12-bookworm-v20240617

    • イメージ ファミリーfamily/IMAGE_FAMILY の形式にする必要があります。これにより、非推奨ではない最新の OS イメージが指定されます。たとえば、family/debian-12 を指定すると、Debian 12 イメージ ファミリーの最新バージョンが使用されます。イメージ ファミリーの使用の詳細については、イメージ ファミリーのベスト プラクティスをご覧ください。

VM の作成の詳細については、Compute Engine インスタンスの作成と開始をご覧ください。

予約を使用しないインスタンス テンプレートを作成する

予約を明示的に使用しない VM を作成するインスタンス テンプレートを作成するには、次のいずれかのオプションを選択します。

コンソール

  1. Google Cloud コンソールで、[インスタンス テンプレートの作成] ページに移動します。

    [インスタンス テンプレートの作成] に移動

  2. [名前] フィールドに、インスタンス テンプレートの名前を入力します。

  3. [ロケーション] セクションで、リージョン(デフォルト)またはグローバルのインスタンス テンプレートを作成するかどうかを指定します。

  4. [マシンの構成] セクションで、テンプレートを使用して作成する VM に使用するマシンタイプを指定します。

  5. [詳細オプション] セクションを開き、次の操作を行います。

    1. [管理] セクションを開きます。

    2. [予約] セクションの [アプリケーション ポリシー] リストで、[使用しない] を選択します。

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

gcloud

予約を明示的に使用しない VM を作成するインスタンス テンプレートを作成するには、--reservation-affinity=none フラグを指定して gcloud compute instances-templates create コマンドを使用します。

たとえば、予約を明示的に使用しない VM を作成するグローバル インスタンス テンプレートを作成するには、次のコマンドを実行します。

gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
    --machine-type=MACHINE_TYPE \
    --reservation-affinity=none

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

  • INSTANCE_TEMPLATE_NAME: インスタンス テンプレートの名前。

  • MACHINE_TYPE: インスタンス テンプレートを使用して作成された VM に使用するマシンタイプ。

REST

予約を明示的に使用しない VM を作成するインスタンス テンプレートを作成するには、次のいずれかのメソッドに POST リクエストを送信します。

リクエストの本文に consumeReservationType フィールドを含め、NO_RESERVATION に設定します。

たとえば、予約を明示的に使用しない VM を作成するグローバル インスタンス テンプレートを作成するには、次のようにリクエストを送信します。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/InstanceTemplates

{
  "name": "INSTANCE_TEMPLATE_NAME",
  "properties": {
    "machineType": "MACHINE_TYPE",
    "disks": [
      {
        "boot": true,
        "initializeParams": {
          "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
        }
      }
    ],
    "networkInterfaces": [
      {
        "network": "global/networks/default"
      }
    ],
    "reservationAffinity": {
      "consumeReservationType": "NO_RESERVATION"
    }
  }
}

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

  • PROJECT_ID: インスタンス テンプレートを作成するプロジェクトの ID。

  • INSTANCE_TEMPLATE_NAME: インスタンス テンプレートの名前。

  • MACHINE_TYPE: インスタンス テンプレートを使用して作成された VM に使用するマシンタイプ。

  • IMAGE_PROJECT: OS イメージを含むイメージ プロジェクト(例: debian-cloud)。サポートされているイメージ プロジェクトの詳細については、公開イメージをご覧ください。

  • IMAGE: 次のいずれかを指定します。

    • OS イメージの特定のバージョン。例: debian-12-bookworm-v20240617

    • イメージ ファミリーfamily/IMAGE_FAMILY の形式にする必要があります。これにより、非推奨ではない最新の OS イメージが指定されます。たとえば、family/debian-12 を指定すると、Debian 12 イメージ ファミリーの最新バージョンが使用されます。イメージ ファミリーの使用の詳細については、イメージ ファミリーのベスト プラクティスをご覧ください。

インスタンス テンプレート作成の詳細については、インスタンス テンプレートを作成するをご覧ください。

VM のプロパティが予約と一致することをテストする

VM が予約を自動的に使用できるかどうかをテストするには、予約のコピーを特定の予約として作成し、作成する予定の VM がその予約を使用できるかどうかを確認します。VM を正常に作成できた場合は、VM が一致する予約を正しく使用できることを確認できたことになります。それ以外の場合は、 プロパティが一致しない か、 使用可能な予約済みリソースがない ため、VM の作成に失敗します。テスト後に、次のうち 1 つ以上の操作を実施できます。

予約の使用を確認する

VM が予約を正しく使用していることを確認するには、次のいずれかの方法を使用します。

  • VM の作成または更新の前と後で予約の詳細を表示します。

    変更後に予約で使用されている VM の数が 1 つ増加した場合、その変更によって VM が予約の使用を開始する可能性があります。これは予約の使用を確認する最も簡単な方法ですが、予約をどの VM が使用しているかを正確に確認することはできません。

  • 特定の予約を対象とする VM を作成します

    特定の予約を対象とする VM を正常に作成できた場合、その VM は予約を使用しています。これは、特定の VM が予約を使用していることと、VM プロパティが予約と一致していることを確認する最も信頼性の高い方法です。

  • 予約の使用量をモニタリングします

    Cloud Monitoring を使用すると、現在のプロジェクトで作成された予約の使用に関連する情報にアクセスして表示できます。予約の測定値が変更された場合は、VM が予約を使用したことを意味します。この方法は、1 つ以上の予約の消費傾向を確認し、十分に活用されていないか未使用の予約の通知を受け取るのに役立ちます。

VM の予約アフィニティが予約を使用できること、予約を使い切っていないこと、VM と予約のプロパティが一致していることを確認した後に、VM が予約を使用していない場合は、リソースの可用性についてのトラブルシューティングのドキュメントをご覧ください。

予約使用状況レポートを表示する

エクスポート機能を使用すると、Compute Engine の使用状況レポートを Cloud Storage バケットにエクスポートできます。手順については、使用状況レポートの表示をご覧ください。

使用状況レポートには、次の情報が表示されます。

  • 使用中の予約済みリソース。通常の vCPU、メモリ、GPU、ローカル SSD リソースが表示されます。
  • 未使用の予約済みリソース。通常の SKU 名と予約リソースの URI が表示されます。
  • 予約済みリソースの合計。予約の SKU 名と予約リソースの URI が表示されます。これらのエントリに対して、費用は一切かかりません。これらのエントリから、使用している予約の量を計算します。
測定対象 MeasurementId 形式 Resource URI 形式
使用中の予約済みリソース com.google.cloud/services/compute-engine/SKU_NAME https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/RESOURCE_TYPE/RESOURCE_NAME.

例: https://compute.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/instances/my-instance
未使用の予約済みリソース com.google.cloud/services/compute-engine/SKU_NAME https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME.

例: https://compute.googleapis.com/compute/v1/projects/my-project/zones/europe-west1-b/reservations/my-reservation
予約済みリソースの合計 com.google.cloud/services/compute-engine/ReservationSKU_NAME https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME.

例: https://compute.googleapis.com/compute/v1/projects/my-project/zones/europe-west1-b/reservations/my-reservation

たとえば、my-reservation という予約の使用状況レポートを見てみましょう。

  • 1 行目は、現在使用中の予約済み RAM を示しています。行の ResourceId は、この RAM が my-instance という VM によって使用されていることを示しています。
  • 2 行目は、使用されていない予約済み RAM を示しています。行の ResourceId は、この予約済みの RAM が my-reservation によって保持され、どの VM でも使用されていないことを示します。
  • 3 行目は、予約済み RAM の合計を示しています。
Report Date,MeasurementId,Quantity,Unit,Resource URI,ResourceId,Location
2019-06-06,com.google.cloud/services/compute-engine/VmimageN2StandardRam,166970074857472,byte-seconds,https://compute.googleapis.com/compute/v1/projects/my-project/zones/us-central2-a/instances/my-instance,1775485842510981624,us-central2-a
2019-06-06,com.google.cloud/services/compute-engine/VmimageN2StandardRam,166970074857472,byte-seconds,https://compute.googleapis.com/compute/v1/projects/my-project/zones/us-central2-a/reservations/my-reservation,7.58809E+17,us-central2-a
2019-06-06,com.google.cloud/services/compute-engine/ReservationN2StandardRam,333940149714944,byte-seconds,https://compute.googleapis.com/compute/v1/projects/my-project/zones/us-central2-a/reservations/my-reservation,7.58809E+17,us-central2-a
...

トラブルシューティング

予約の使用に関する問題をトラブルシューティングする方法を学習する。

次のステップ