一括作成された VM のインスタンスの柔軟性について

Compute Engine を使用してリージョンに仮想マシン(VM)を一括で作成する場合、アプリケーションが単一のマシンタイプに制限されていない場合は、インスタンスの柔軟性を構成することで、必要な数の VM のプロビジョニングの成功率を高めることができます。インスタンスの柔軟性により、ワークロードに適した 1 つ以上のマシンタイプを指定できます。Compute Engine は、容量と割り当ての可用性に基づいて、これらのマシンタイプのいずれかを使用して VM をプロビジョニングします。

インスタンスの柔軟性により、需要の急増時にリソースの可用性を最大化し、費用対効果を高め、最新のハードウェアを安全に導入できます。詳細については、コンピューティング プロビジョニングを最適化するをご覧ください。

このドキュメントでは、一括作成された VM のインスタンスの柔軟性の仕組みについて説明します。これには、最小 CPU プラットフォームとディスクのインスタンス プロパティのオーバーライドと制限事項が含まれます。インスタンスの柔軟性を構成する方法の詳細については、インスタンスの柔軟性を使用して VM を一括作成するをご覧ください。

インスタンスの柔軟性を使用する

インスタンスの柔軟性を構成するには、リージョン一括挿入リクエストで 1 つ以上のインスタンス選択を定義して、適切なマシンタイプをリストします。たとえば、REST リクエストでは instanceFlexibilityPolicy オブジェクトを含めます。このオブジェクト内で、1 つ以上の instanceSelections オブジェクトを定義します。各オブジェクトには、マシンタイプのリストが含まれます。

また、異なる CPU プラットフォームで実行されるマシンタイプ、異なるアーキテクチャ(x86 や Arm など)を持つマシンタイプ、異なるディスク要件を持つマシンタイプを指定することもできます。ハードウェア要件が異なるマシンタイプを使用するには、インスタンス選択を使用して、リクエストのインスタンス プロパティ(instanceProperties)から対応するプロパティをオーバーライドします。詳細については、インスタンス選択でのインスタンス プロパティのオーバーライドをご覧ください。

Compute Engine は、リクエストを受信すると、まずマシンタイプとそのゾーン互換性を検証し、無効なエントリを除外します。有効な構成が 1 つ以上存在する場合、オペレーションは続行されます。

Compute Engine は、使用可能なハードウェア、割り当て、予約に基づいて VM のプロビジョニングを試みます。インスタンスの選択にランクを構成すると、ランクの低い選択が優先されます。各ランク内で、Compute Engine は未使用の予約と Spot VM のガイダンスを考慮して、プリエンプションの可能性が低いマシンタイプを選択します。

インスタンスの選択でのインスタンス プロパティのオーバーライド

インスタンス選択を行うときに、最小 CPU プラットフォーム(minCpuPlatform)やディスク(disks)などの追加のインスタンス プロパティを指定して、リクエストのインスタンス プロパティ(instanceProperties)で定義したプロパティをオーバーライドまたは追加できます。Compute Engine がインスタンス選択からマシンタイプを選択して VM を作成するときは、その選択で指定したインスタンス プロパティを使用します。インスタンス選択のオーバーライドを指定しない場合、Compute Engine は、その選択から作成する VM に instanceProperties の対応するプロパティを使用します。

インスタンス選択レベルでインスタンス プロパティをオーバーライドすると、単一の一括挿入リクエストで異なるハードウェア構成を使用する場合に、より詳細な制御と柔軟性を実現できます。

最小 CPU プラットフォームのオーバーライド

インスタンス選択のマシンタイプから Compute Engine が作成する VM の最小 CPU プラットフォーム(minCpuPlatform)を指定できます。このオーバーライドを使用すると、異なるマシンタイプを混在させ、最小 CPU プラットフォームを選択的に適用できます。インスタンス選択の各マシンタイプは、選択で指定されているか instanceProperties から継承されているかに関係なく、有効な最小 CPU プラットフォームをサポートしている必要があります。

または、minCpuPlatform フィールドを AUTOMATIC に設定することもできます。この設定は instanceProperties の minCpuPlatform 値をオーバーライドし、Compute Engine がインスタンス選択のマシンタイプに互換性のある CPU プラットフォームを使用できるようにします。

1 つのシリーズのみが特定の CPU プラットフォームをサポートするマシンタイプを混在させるには、それらを別々のインスタンス選択に配置します。たとえば、N4 マシンタイプは Intel Emerald Rapids プラットフォームをサポートしていますが、96 個未満の vCPU を備えた N2 マシンタイプは Intel Ice Lake と Intel Cascade Lake をサポートしています。一括挿入リクエストで N4 と N2 を混在させ、N2 を Intel Ice Lake で実行する必要がある場合は、次のように 2 つのインスタンス選択を構成します。

  • N2 の選択: minCpuPlatform フィールドを Intel Ice Lake に設定します。
  • N4 の選択: minCpuPlatform フィールドを未設定のままにするか、AUTOMATIC に設定します。

両方のインスタンス選択に同じランクを割り当てることで、両方のマシンタイプに同じ優先度を設定できます。

ディスクのオーバーライド

インスタンス選択でカスタム ディスク構成を指定して、instanceProperties で指定されたブートディスクまたは追加ディスクをオーバーライドするか、追加ディスクをアタッチできます。このオーバーライドを使用すると、アーキテクチャが異なるマシンタイプや、サポートするディスクタイプが異なるマシンタイプを混在させることができます。また、各マシンタイプに必要なブートイメージまたはディスクを指定することもできます。

たとえば、個別のインスタンス選択を使用して、異なる要件のディスクをオーバーライドできます。

  • 異なるアーキテクチャ: C4(x86 アーキテクチャ)と C4A(Arm アーキテクチャ)のマシンタイプを混在させることができます。x86 マシンタイプと Arm マシンタイプでは異なるブートイメージが必要になるため、ブートディスクをオーバーライドして、各アーキテクチャに互換性のあるイメージを指定できます。
  • 異なるディスクタイプ: N2 マシンタイプと N4 マシンタイプを混在させることができます。N2 はブートディスクに Persistent Disk のみをサポートし、N4 は Google Cloud Hyperdisk のみをサポートするため、ディスク構成をオーバーライドして、各マシンシリーズでサポートされているディスクタイプを指定できます。

どちらのシナリオでも、インスタンス選択に同じランクを割り当てることで、両方のマシンタイプに同じ優先度を設定できます。

インスタンス選択のディスクに instanceProperties のディスクと一致する deviceName がある場合、Compute Engine はそのディスクの構成をオーバーライドします。deviceName が instanceProperties のどのディスクとも一致しない場合、Compute Engine はそれを追加ディスクとしてアタッチします。有効なディスク構成が、インスタンス選択のすべてのマシンタイプと互換性があることを確認する必要があります。

次の図は、Compute Engine が instanceProperties とインスタンスの選択からディスク構成を統合する方法を示しています。

インスタンス選択のディスクが、インスタンス プロパティで一致するデバイス名のディスクをオーバーライドし、デバイス名が一致しない場合は追加のディスクとしてアタッチされることを示す図。

VM を一括で作成するときに最小 CPU プラットフォームとディスクのオーバーライドを指定する手順については、複数のマシンタイプ、最小 CPU プラットフォーム、ディスクのオーバーライドを使用して VM を作成するをご覧ください。

インスタンス選択オーバーライドを使用する場合の制限事項の詳細については、このドキュメントの制限事項をご覧ください。

例: 最小 CPU プラットフォームとディスクのオーバーライド

インスタンスの柔軟性ポリシーでオーバーライドを使用すると、異なる CPU プラットフォーム、ブートイメージ、ディスクタイプを必要とするマシンシリーズ全体で VM をプロビジョニングできます。

デフォルトの pd-balanced ブートディスクを定義する次のベース instanceProperties 構成を含む一括挿入リクエストについて考えてみましょう。

"instanceProperties": {
  "disks": [
    {
      "autoDelete": true,
      "deviceName": "boot-disk",
      "boot": true,
      "initializeParams": {
        "sourceImage": "projects/debian-cloud/global/images/family/debian-12",
        "diskSizeGb": "10",
        "diskType": "pd-balanced"
      }
    }
  ],
  "networkInterfaces": [{}]
}

同じリクエスト内の次の instanceFlexibilityPolicy 構成は、3 つのインスタンス選択にわたって最小 CPU プラットフォームとディスク構成を指定することで、ベースの instanceProperties 構成をオーバーライドします。

"instanceFlexibilityPolicy": {
  "instanceSelections": {
    "first-preference": {
      "rank": 1,
      "machineTypes": ["n4-standard-4"],
      "disks": [
        {
          "autoDelete": true,
          "deviceName": "boot-disk",
          "boot": true,
          "initializeParams": {
            "sourceImage": "projects/debian-cloud/global/images/family/debian-12",
            "diskSizeGb": "10",
            "diskType": "hyperdisk-balanced"
          }
        }
      ]
    },
    "second-preference": {
      "rank": 2,
      "machineTypes": ["c4a-standard-4"],
      "disks": [
        {
          "autoDelete": true,
          "deviceName": "boot-disk",
          "boot": true,
          "initializeParams": {
            "sourceImage": "projects/debian-cloud/global/images/family/debian-12-arm64",
            "diskSizeGb": "10",
            "diskType": "hyperdisk-balanced"
          }
        },
        {
          "autoDelete": true,
          "deviceName": "data-disk",
          "boot": false,
          "initializeParams": {
            "diskSizeGb": "100",
            "diskType": "hyperdisk-balanced"
          }
        }
      ]
    },
    "third-preference": {
      "rank": 3,
      "machineTypes": ["n2-standard-4"],
      "minCpuPlatform": "Intel Ice Lake",
      "disks": [
        {
          "autoDelete": true,
          "deviceName": "boot-disk",
          "boot": true,
          "initializeParams": {
            "sourceImage": "projects/debian-cloud/global/images/family/debian-12",
            "diskSizeGb": "10",
            "diskType": "pd-ssd"
          }
        }
      ]
    }
  }
}

この例では、Compute Engine は、VM の作成に使用するインスタンスの選択に応じて、次のオーバーライドを適用します。

  • 優先度 1(first-preference): n4-standard-4 VM の場合、この選択により boot-disk がオーバーライドされ、ベースの pd-balanced ディスクではなく hyperdisk-balanced ディスクが使用されます。
  • 2 番目の優先度(second-preference): c4a-standard-4(Arm)VM の場合、この選択により boot-disk がオーバーライドされ、hyperdisk-balanced ディスクで Arm 互換ブートイメージ(debian-12-arm64)が使用され、data-disk という名前の 100 GB の hyperdisk-balanced ディスクが追加でアタッチされます。
  • 3 番目の設定(third-preference): n2-standard-4 VM の場合、この設定を選択すると、minCpuPlatform が Intel Ice Lake に設定され、boot-disk がオーバーライドされて pd-ssd ディスクが使用されます。

ターゲット分配形態が定義されている場合のゾーンの選択

リージョン bulkInsert リクエストでインスタンスの柔軟性を使用する場合は、ターゲット分配形態を指定して、リージョン内のゾーン間で VM を分散する方法を制御できます。Compute Engine は、この形状に基づいて、次のように VM をプロビジョニングするゾーンを選択します。

  • ANY_SINGLE_ZONE: Compute Engine は、優先度の高いマシンタイプで最も容量の多い単一のゾーンを選択します。
  • BALANCED: Compute Engine は、使用可能なリソースのあるゾーン間で VM をできるだけ均等に分散します。各ゾーン内で、Compute Engine は優先度の高いマシンタイプを優先します。
  • ANY: Compute Engine が使用可能なリソースがあるゾーンを選択します。ランクが構成されている場合、Compute Engine は優先度の高いマシンタイプで VM をプロビジョニングするゾーンを優先します。

詳細については、リージョン内に VM を一括作成するをご覧ください。

最小 VM プロビジョニングとインスタンスの柔軟性

bulkInsert リクエストで最小 VM 数(minCount)の値を定義すると、API は少なくともその数の VM を作成しようとします。Compute Engine が最小限必要な数の VM(minCount)をプロビジョニングできない場合、オペレーション全体が失敗し、Compute Engine は VM を作成しません。インスタンスの柔軟性で minCount を使用すると、Compute Engine は次のように、ランクよりも取得可能性に基づいて VM のプロビジョニングを優先します。

  • Compute Engine は、優先度の低いマシンを使用することになっても、最大 count 台の VM をプロビジョニングすることを優先します。たとえば、リクエストで必要な VM の最小数(minCount=1)が 1、VM の最大数(count=10)が 10 と指定されていて、Compute Engine に優先度の高い VM を 1 つプロビジョニングする容量と優先度の低い VM を 6 つプロビジョニングする容量がある場合、Compute Engine は優先度の低い VM を 6 つプロビジョニングします。
  • Compute Engine が異なるインスタンス選択を使用して最大 count 個の VM をプロビジョニングできる場合、優先度の高い選択が優先されます。たとえば、リクエストで必要な VM の最小数(minCount=1)が 1、VM の最大数(count=10)が 10 と指定されていて、Compute Engine が優先度の高いインスタンス選択または優先度の低いインスタンス選択のいずれかを使用して 6 個の VM をプロビジョニングできる場合、Compute Engine は優先度の高い選択から 6 個の VM をプロビジョニングします。

詳細については、bulkInsert の minCount プロパティをご覧ください。

一括挿入の検証とエラー シナリオ

Compute Engine は、マシンタイプとそのゾーン互換性の初期検証を行い、無効なエントリを考慮から除外します。この初期チェックの後に有効な構成が 1 つ以上残っている場合、Compute Engine は VM の作成に進みます。

ただし、構成の検証の一部は、インスタンスの柔軟性ポリシーと使用可能な容量に基づいて、プロビジョニングに使用するゾーンとマシンタイプが Compute Engine によって選択された後にのみ実行できます。この後の検証段階で、プロビジョニング用に選択された特定のマシンタイプとゾーンの組み合わせが無効であることが判明した場合、一括挿入リクエスト全体が検証エラーで失敗します。このエラーは、instanceFlexibilityPolicy 内の他の構成が最初は有効であった場合でも発生する可能性があります。

制限事項

インスタンスの柔軟性を使用して VM を一括作成する場合、次の制限が適用されます。

  • インスタンスの柔軟性は、リージョン bulkInsert リクエストに対してのみ指定できます。ゾーン リクエストでは使用できません。
  • インスタンスの柔軟性では、Flex Start VM と将来の予約はサポートされていません。
  • インスタンスの柔軟性は、AI Hypercomputer の機能、A3 Ultra、A4 以降の GPU では使用できません。
  • 最大 10 個の異なるインスタンス選択で、最大 10 個の異なるマシンタイプを指定できます。
  • インスタンス選択で minCpuPlatform または disks をオーバーライドする場合は、次の制限も適用されます。
    • インスタンス選択で minCpuPlatform または disks を構成する場合は、machineTypes フィールドも追加する必要があります。machineTypes フィールドを省略すると、オペレーションはエラーで失敗します。
    • ローカル SSD ディスクをオーバーライドできるのは、複数のローカル SSD ディスクを選択できるマシンタイプのみです。ローカル SSD ディスクを自動的にアタッチするマシンタイプの -lssd バリアントのローカル SSD ディスクをオーバーライドすることはできません。

次のステップ