単一テナントノードに VM をプロビジョニングする


このページでは、単一テナントノードで VM をプロビジョニングする方法について説明します。単一テナントノードは、単一プロジェクトからの VM のみを実行する物理サーバーです。単一テナントノードで VM をプロビジョニングする前に、単一テナントノードの概要をご覧ください。

単一テナントノードで VM をプロビジョニングするには、次の手順を行う必要があります。

  1. 単一テナントノード テンプレートを作成する。単一テナントノード テンプレートは、単一テナントノード グループ内のすべての単一テナントノードに共通のプロパティを指定します。

  2. 前の手順で作成した単一テナントノード テンプレートを使用して、単一テナントノードを作成する。

  3. VM を作成し、単一テナントノード グループで VM をプロビジョニングする。

始める前に

  • 単一テナントノードで VM をプロビジョニングする前に、割り当てを確認します。予約するノードの数とサイズによっては、割り当て量の追加リクエストが必要になる場合があります。
  • まだ設定していない場合は、認証を設定します。認証とは、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 を使用して認証するをご覧ください。

単一テナントノード テンプレートを作成する

単一テナントノード テンプレートは、単一テナントノード グループのプロパティを指定するリージョン リソースです。ノードグループを作成する前に、ノード テンプレートを作成する必要があります。ただし、Google Cloud コンソールを使用している場合は、単一テナントノードの作成中にノード テンプレートを作成する必要があります。

コンソール

ノードグループを作成する前に、単一テナントノード テンプレートを作成する必要があります。Google Cloud コンソールを使用して、単一テナントノード グループの作成中にノード テンプレートを作成する必要があります。新しいノード テンプレートは、ノードグループのプロパティで指定したリージョンと同じリージョンに作成されます。

  1. Google Cloud Console で、[単一テナントノード] ページに移動します。

    [単一テナントノード] ページに移動

  2. [ノードグループを作成] をクリックします。

  3. ノードグループの名前を指定します。

  4. ノード テンプレートを作成する [リージョン] を指定します。指定したリージョンの任意のゾーンで、このノード テンプレートを使用してノードグループを作成できます。

  5. ゾーンを指定し、[続行] をクリックします。

  6. [ノード テンプレート] リストで、[ノード テンプレートを作成] をクリックして、単一テナントノード テンプレートの作成を開始します。

  7. ノード テンプレートの名前を指定します。

  8. このノード テンプレートに基づいて作成する、ノードグループ内の単一テナントノードのノードタイプを指定します。

  9. (省略可): ノード テンプレートには次のプロパティも指定できます。

    • ローカル SSDGPU アクセラレータを追加します。
    • [CPU のオーバーコミットを有効にする] を選択して、ノードにスケジュールされている各 VM の CPU のオーバーコミット レベルを制御します。

    • ノード アフィニティ ラベルを追加します。アフィニティ ラベルを使用すると、ノードとノードグループを論理的にグループ化できます。後で VM をプロビジョニングする際、VM にアフィニティ ラベルを指定して、特定のノードまたはノードグループのセットに VM をスケジュールできます。詳細については、ノード アフィニティとアンチアフィニティをご覧ください。

  10. [作成] をクリックして、ノード テンプレートの作成を完了します。

  11. (省略可)別のリージョンに新しい単一テナントノード テンプレートを追加するには、上記の手順を繰り返します。

ノード テンプレートを表示するには、[単一テナントノード] ページで [ノード テンプレート] をクリックします。

gcloud

gcloud compute sole-tenancy node-templates create コマンドを使用してノード テンプレートを作成します。

gcloud compute sole-tenancy node-templates create TEMPLATE_NAME \
  --node-type=NODE_TYPE \
  [--region=REGION \]
  [--node-affinity-labels=AFFINITY_LABELS \]
  [--accelerator type=GPU_TYPE,count=GPU_COUNT \]
  [--disk type=local-ssd,count=DISK_COUNT,size=DISK_SIZE \]
  [--cpu-overcommit-type=CPU_OVERCOMMIT_TYPE]

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

  • TEMPLATE_NAME: 新しいノード テンプレートの名前。

  • NODE_TYPE: このテンプレートに基づいて作成された単一テナントノードのノードタイプ。gcloud compute sole-tenancy node-types list コマンドを使用して、各ゾーンで使用可能なノードタイプのリストを取得します。

  • REGION: ノード テンプレートを作成するリージョン。指定したリージョンの任意のゾーンで、このテンプレートを使用してノードグループを作成できます。

  • AFFINITY_LABELS: アフィニティ ラベルの Key-Value([KEY=VALUE,...])。アフィニティ ラベルを使用すると、ノードとノードグループを論理的にグループ化できます。後で VM をプロビジョニングする際、VM にアフィニティ ラベルを指定して、特定のノードまたはノードグループのセットに VM をスケジュールできます。詳細については、ノード アフィニティとアンチアフィニティをご覧ください。

  • GPU_TYPE: このノード テンプレートに基づいて作成された各単一テナントノードの GPU のタイプ。GPU のゾーンの可用性については、gcloud compute accelerator-types list コマンドを使用して、n1 または g2 単一テナントノード タイプが利用可能なゾーンを選択します。ゾーンの可用性に応じて、次のいずれかに設定します。

    • nvidia-l4
    • nvidia-tesla-p100
    • nvidia-tesla-p4
    • nvidia-tesla-t4
    • nvidia-tesla-v100
  • GPU_COUNT: GPU のタイプに応じて指定する GPU の数。次の表に示すように、GPU のタイプに対して指定された値を設定します。

    GPU_TYPE GPU_COUNT
    nvidia-l4 8
    nvidia-tesla-p100 4
    nvidia-tesla-p4 4
    nvidia-tesla-t4 4
    nvidia-tesla-v100 8
  • DISK_COUNT: SSD ディスクの数。16 または 24 に設定します。

  • DISK_SIZE: ローカル SSD のパーティション サイズの値(省略可)。単位は GB です。サポートされているパーティション サイズは 375 のみです。この値を設定しない場合は、デフォルト値の 375 が使用されます。

  • CPU_OVERCOMMIT_TYPE: VM の CPU のオーバーコミット タイプ。enabled または none に設定します。

REST

nodeTemplates.insert メソッドを使用してノード テンプレートを作成します。

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

{
  "name": "TEMPLATE_NAME",
  "nodeType": "NODE_TYPE",
  "nodeAffinityLabels": {
    "KEY": "VALUE",
    ...
  },
  "accelerators": [
    {
      "acceleratorType": "GPU_TYPE",
      "acceleratorCount": GPU_COUNT
    }
  ],
  "disks": [
    {
      "diskType": "local-ssd",
      "diskSizeGb": DISK_SIZE,
      "diskCount": DISK_COUNT
    }
  ],
  "cpuOvercommitType": CPU_OVERCOMMIT_TYPE
}

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

  • PROJECT_ID: プロジェクト ID。

  • REGION: ノード テンプレートを作成するリージョン。指定したリージョンの任意のゾーンで、このテンプレートを使用してノードグループを作成できます。

  • TEMPLATE_NAME: 新しいノード テンプレートの名前。

  • NODE_TYPE: このテンプレートに基づいて作成された単一テナントノードのノードタイプ。nodeTypes.list メソッドを使用して、各ゾーンで使用可能なノードタイプのリストを取得します。

  • KEY: Key-Value ペアとして表現されるノード アフィニティ ラベルのキー部分を指定する nodeAffinityLabels の値。アフィニティ ラベルを使用すると、ノードとノードグループを論理的にグループ化できます。後で VM をプロビジョニングする際、VM にアフィニティ ラベルを指定して、特定のノードまたはノードグループのセットに VM をスケジュールできます。詳細については、ノード アフィニティとアンチアフィニティをご覧ください。

  • VALUE: ノード アフィニティ ラベルの Key-Value ペアの値の部分を指定する nodeAffinityLabels の値。

  • GPU_TYPE: このノード テンプレートに基づいて作成された各単一テナントノードの GPU のタイプ。GPU のゾーンの可用性については、gcloud compute accelerator-types list コマンドを使用して、n1 または g2 単一テナントノード タイプが利用可能なゾーンを選択します。ゾーンの可用性に応じて、次のいずれかに設定します。

    • nvidia-l4
    • nvidia-tesla-p100
    • nvidia-tesla-p4
    • nvidia-tesla-t4
    • nvidia-tesla-v100
  • GPU_COUNT: このノード テンプレートに基づいて作成された各単一テナントノードの GPU の数。次の表に示すように、GPU のタイプに対して指定された値を設定します。

    GPU_TYPE GPU_COUNT
    nvidia-l4 8
    nvidia-tesla-p100 4
    nvidia-tesla-p4 4
    nvidia-tesla-t4 4
    nvidia-tesla-v100 8
  • DISK_SIZE: ローカル SSD のパーティション サイズの値(省略可)。単位は GB です。サポートされているパーティション サイズは 375 のみです。この値を設定しない場合は、デフォルト値の 375 が使用されます。

  • DISK_COUNT: SSD ディスクの数。16 または 24 に設定します。

  • CPU_OVERCOMMIT_TYPE: CPU オーバーコミット タイプ。enablednoneCPU_OVERCOMMIT_TYPE_UNSPECIFIED のいずれかに設定します。

単一テナントノード グループを作成する

以前の手順で作成した単一テナントノードのテンプレートを使用して、単一テナントノードを作成します。単一テナントノード グループは、単一テナントノード テンプレートで指定されたプロパティを継承します。また、指定しなければならない追加の値があります。

コンソール

  1. Google Cloud Console で、[単一テナントノード] ページに移動します。

    [単一テナントノード] ページに移動

  2. [ノードグループを作成] をクリックしてノードグループの作成を開始します。

  3. ノードグループの名前を指定します。

  4. ノードグループのリージョンを指定して、そのリージョンで使用可能なノード テンプレートを表示します。

  5. ノードグループを作成するリージョン内の [ゾーン] を指定します。

  6. ノード テンプレートを指定してノードグループを作成するか、[ノード テンプレートを作成] をクリックして新しい単一テナントノード テンプレートを作成します。選択したノード テンプレートがノードグループに適用されます。

  7. ノードグループのオートスケーラー自動スケーリング モードには、次のいずれかを選択します。

    • オフ: ノードグループのサイズを手動で管理します。

    • オン: ノードグループに対するノードの追加または削除を自動的に行います。

    • スケールアウトのみ: 追加の容量が必要な場合に、ノードグループにノードを追加します。

  8. ノードグループのノード数を指定します。ノードグループのオートスケーラーを有効にする場合は、ノードグループのサイズの範囲を指定します。この値は後で手動で変更できます。

  9. [メンテナンス設定の構成] セクションで、単一テナントノード グループのメンテナンス ポリシーを次のいずれかの値に設定します。メンテナンス ポリシーを使用すると、ホスト メンテナンス イベント中のノードグループ上の VM の動作を構成できます。詳細については、メンテナンス ポリシーをご覧ください。

    • デフォルト
    • 再起動
    • ノードグループ内で移行
  10. 単一テナントノード グループのメンテナンスは、次のように通常のメンテナンスの時間枠と高度なメンテナンス管理のいずれかを選択できます。

    • メンテナンスの時間枠: 単一テナントノード グループ内のノードに対して計画的なメンテナンス イベントを発生させる期間を選択します。

    • 単一テナンシーに対して高度なメンテナンス管理を有効にする: 単一テナンシーに対する高度なメンテナンス管理により、単一テナントノード グループの計画メンテナンス イベントを制御し、メンテナンス関連の中断を最小限に抑えることができます。高度なメンテナンス管理を有効にするには、[単一テナンシーに対して高度なメンテナンス管理を有効にする] をクリックして、オンの位置に切り替えます。ノードのメンテナンスにこのオプションを使用すると、[メンテナンスの時間枠] フィールドは無効になり、メンテナンスは高度なメンテナンス管理での構成に従って行われます。

    高度なメンテナンス管理は、デフォルトのメンテナンス ポリシーのみをサポートします。

  11. 共有設定の構成で次のいずれかを指定して、共有設定を構成します。

    • ノードグループを組織内のすべてのプロジェクトと共有するには、[このノードグループを組織内のすべてのプロジェクトと共有する] を選択します。
    • ノードグループを組織内の特定のプロジェクトと共有するには、[このノードグループを組織内の選択したプロジェクトと共有する] を選択します。

    ノードグループを共有しない場合は、[このノードグループを他のプロジェクトと共有しない] を選択します。ノードグループの共有の詳細については、単一テナントノード グループを共有するをご覧ください。

  12. [作成] をクリックして、ノードグループの作成を完了します。

gcloud

gcloud compute sole-tenancy node-groups create コマンドを実行して、以前の手順で作成したノード テンプレートに基づいてノードグループを作成します。

gcloud compute sole-tenancy node-groups create GROUP_NAME \
  --node-template=TEMPLATE_NAME \
  --target-size=TARGET_SIZE \
  [--zone=ZONE \]
  [--maintenance-policy=MAINTENANCE_POLICY \]
  [--maintenance-window-start-time=START_TIME \]
  [--autoscaler-mode=AUTOSCALER_MODE: \
  --min-nodes=MIN_NODES \
  --max-nodes=MAX_NODES]

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

  • GROUP_NAME: 新しいノードグループの名前。

  • TEMPLATE_NAME: このグループの作成に使用するノード テンプレートの名前。

  • TARGET_SIZE: グループ内に作成するノードの数。

  • ZONE: ノードグループを作成するゾーン。これは、ノードグループのベースとするノード テンプレートと同じリージョンに存在している必要があります。

  • MAINTENANCE_POLICY: ノードグループに適用するメンテナンス ポリシー。詳細については、メンテナンス ポリシーをご覧ください。次のいずれかの値を指定する必要があります。

    • default
    • restart-in-place
    • migrate-within-node-group

    また、--maintenance-interval フラグを使用して、単一テナントノード グループに高度なメンテナンス管理を有効にすることもできます。詳細については、単一テナントノードで高度なメンテナンス管理を有効にするをご覧ください。

  • START_TIME: このノードグループに含まれる VM のメンテナンスの時間枠の開始時刻(GMT)。00:0004:0008:0012:0016:0020:00 のいずれかに設定します。設定しないと、ノードグループにメンテナンスの時間枠が設定されません。

  • AUTOSCALER_MODE: ノードグループに適用するオートスケーラー ポリシー。次のいずれかを指定する必要があります。

    • off: ノードグループのサイズを手動で管理します。

    • on: ノードグループにノードを自動的に追加する、またはノードグループからノードを自動的に削除します。

    • only-scale-out: 追加の容量が必要な場合にノードをノードグループに追加します。

  • MIN_NODES: ノードグループの最小サイズ。デフォルト値は 0 で、MAX_NODES 以下の整数値にする必要があります。

  • MAX_NODES: ノードグループの最大サイズ。指定する値は 100 以下で、MIN_NODES 以上でなければなりません。AUTOSCALER_MODEoff に設定されていない場合は、この値を指定する必要があります。

REST

以前の手順で作成したノード テンプレートに基づいてノードグループを作成するには、nodeGroups.insert メソッドを使用します。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/nodeGroups?initialNodeCount=TARGET_SIZE
{ "nodeTemplate": "regions/REGION/nodeTemplates/TEMPLATE_NAME", "name": "GROUP_NAME", "maintenancePolicy": MAINTENANCE_POLICY, "maintenanceWindow": { "startTime": "START_TIME" } "autoscalingPolicy": { "mode": AUTOSCALER_MODE, "minNodes": MIN_NODES, "maxNodes": MAX_NODES }, }

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

  • PROJECT_ID: プロジェクト ID。

  • ZONE: ノードグループを作成するゾーン。これは、ノードグループのベースとなるノード テンプレートと同じリージョンに存在している必要があります。

  • TARGET_SIZE: グループ内に作成するノードの数。

  • REGION: ノードグループを作成するリージョン。使用するノード テンプレートは、選択したリージョン内に存在している必要があります。

  • TEMPLATE_NAME: このグループの作成に使用するノード テンプレートの名前。

  • GROUP_NAME: 新しいノードグループの名前。

  • MAINTENANCE_POLICY: ノードグループに適用するメンテナンス ポリシー。次のいずれかの値を指定する必要があります。

    • DEFAULT
    • RESTART_IN_PLACE
    • MIGRATE_WITHIN_NODE_GROUP

    また、maintenanceInterval フィールドを使用して、単一テナントノード グループに高度なメンテナンス管理を有効にすることもできます。詳細については、単一テナントノードで高度なメンテナンス管理を有効にするをご覧ください。

  • START_TIME: このノードグループに含まれる VM のメンテナンスの時間枠の開始時刻(GMT)。00:0004:0008:0012:0016:0020:00 のいずれかに設定します。設定しないと、ノードグループにメンテナンスの時間枠が設定されません。

  • AUTOSCALER_MODE: ノードグループに適用するオートスケーラー ポリシー。次のいずれかの値を指定する必要があります。

    • OFF: ノードグループのサイズを手動で管理します。

    • ON: ノードグループにノードを自動的に追加する、またはノードグループからノードを自動的に削除します。

    • ONLY_SCALE_OUT: 追加の容量が必要な場合にノードをノードグループに追加します。

  • MIN_NODES: ノードグループの最小サイズ。デフォルトは 0 です。MAX_NODES 以下の整数値を指定する必要があります。

  • MAX_NODES: ノードグループの最大サイズ。指定する値は 100 以下で、MIN_NODES 以上でなければなりません。AUTOSCALER_MODEOFF に設定されていない場合は、この値を指定する必要があります。

単一テナント VM をプロビジョニングする

以前の手順で作成したノード テンプレートに基づいてノードグループを作成したら、単一テナントノード グループに個々の VM をプロビジョニングできます。

前の手順でノード テンプレートに割り当てたアフィニティ ラベルと一致するアフィニティ ラベルを使用する特定のノードまたはノードグループに VM をプロビジョニングするには、VM インスタンスを作成する標準的な手順に沿って、VM にアフィニティ ラベルを割り当てます。

または、次の手順を使用して、ノードグループの詳細ページから単一テナントノードに VM をプロビジョニングできます。VM をプロビジョニングするノードグループに基づき、Compute Engine によってアフィニティ ラベルが割り当てられます。

コンソール

  1. Google Cloud Console で、[単一テナントノード] ページに移動します。

    [単一テナントノード] ページに移動

  2. [ノードグループ] をクリックします。

  3. VM インスタンスをプロビジョニングするノードグループの [名前] をクリックします。また任意ですが、特定の単一テナントノードで VM をプロビジョニングするには、VM をプロビジョニングする特定の単一テナントノードの名前をクリックします。

  4. [インスタンスを作成] をクリックしてこのノードグループに VM インスタンスをプロビジョニングして、自動的に割り当てられる [名前]、[リージョン]、[ゾーン] の値を確認し、必要に応じて値を変更します。

  5. [マシン ファミリー]、[シリーズ]、[マシンタイプ] を指定して、[マシンの構成] を選択します。単一テナントノードのタイプに対応する [シリーズ] を選択します。

  6. [ブートディスク]、[ファイアウォール] などの設定を必要に応じて変更します。

  7. [単一テナンシー] をクリックして、自動的に割り当てられた [ノード アフィニティのラベル] を確認し、[参照] を使用して必要に応じて調整します。

  8. [管理] をクリックし、[ホスト メンテナンス時] で次のいずれかを選択します。

    • VM インスタンスを移行(推奨): メンテナンス イベント中にノードグループ内の別のノードに VM が移行される。

    • 終了: メンテナンス イベント中に VM が停止します。

  9. [自動再起動] で次のいずれかを選択します。

    • オン(推奨): メンテナンス イベントのために VM が停止した場合、VM を自動的に再起動します。

    • オフ: メンテナンス イベント後、VM は自動的に再起動しません。

  10. [作成] をクリックして、単一テナント VM の作成を完了します。

gcloud

gcloud compute instances create コマンドを使用して、単一テナントノード グループに VM をプロビジョニングします。

gcloud compute instances create VM_NAME \
  [--zone=ZONE \]
  --image-family=IMAGE_FAMILY \
  --image-project=IMAGE_PROJECT \
  --node-group=GROUP_NAME \
  --machine-type=MACHINE_TYPE \
  [--maintenance-policy=MAINTENANCE_POLICY \]
  [--accelerator type=GPU_TYPE,count=GPU_COUNT \]
  [--local-ssd interface=SSD_INTERFACE \]
  [--restart-on-failure]

--restart-on-failure フラグは、単一テナント VM が停止後に再起動するかどうかを示します。このフラグは、デフォルトで有効になっています。無効にするには --no-restart-on-failure を使用します。

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

  • VM_NAME: 新しい単一テナント VM の名前。

  • ZONE: 単一テナント VM をプロビジョニングするゾーン。

  • IMAGE_FAMILY: VM の作成に使用するイメージのイメージ ファミリー

  • IMAGE_PROJECT: イメージ ファミリーのイメージ プロジェクト

  • GROUP_NAME: VM をプロビジョニングするノードグループの名前。

  • MACHINE_TYPE: 単一テナント VM のマシンタイプ。gcloud compute machine-types list コマンドを使用して、プロジェクトで使用可能なマシンタイプのリストを取得します。

  • MAINTENANCE_POLICY: メンテナンス イベント中の単一テナント VM の再起動動作を指定します。次のいずれかに設定します。

    • MIGRATE: メンテナンス イベント中にノードグループの別のノードに VM が移行されます。

    • TERMINATE: メンテナンス イベント中に VM が停止します。

  • GPU_TYPE: GPU のタイプ。ノード テンプレートの作成時に指定されたアクセラレータ タイプのいずれかに設定します。

  • GPU_COUNT: この VM に接続するノード テンプレートによって指定された合計 GPU の数。デフォルト値は 1 です。

  • SSD_INTERFACE: ローカル SSD インターフェースのタイプ。ローカル SSD をサポートするノード テンプレートから作成されたインスタンスにのみ設定できます。インスタンスの作成時にこれを指定し、ノード テンプレートがローカル SSD をサポートしていない場合は、インスタンスの作成に失敗します。ブートディスク イメージ ドライバが NVMe 用に最適化されている場合は nvme、それ以外の場合は scsi に設定します。ローカル SSD パーティションごとに、このフラグと対応する値を 1 回指定します。

REST

instances.insert メソッドを使用して、単一テナントノード グループに VM をプロビジョニングします。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/VM_ZONE/instances
{ "machineType": "zones/MACHINE_TYPE_ZONE/machineTypes/MACHINE_TYPE", "name": "VM_NAME", "scheduling": { "onHostMaintenance": MAINTENANCE_POLICY, "automaticRestart": RESTART_ON_FAILURE, "nodeAffinities": [ { "key": "compute.googleapis.com/node-group-name", "operator": "IN", "values": [ "GROUP_NAME" ] } ] }, "networkInterfaces": [ { "network": "global/networks/NETWORK", "subnetwork": "regions/REGION/subnetworks/SUBNETWORK" } ], "guestAccelerators": [ { "acceleratorType": GPU_TYPE, "acceleratorCount": GPU_COUNT } ], "disks": [ { "boot": true, "initializeParams": { "sourceImage": "projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY" } }, { "type":"SCRATCH", "initializeParams":{ "diskType":"zones/LOCAL_SSD_ZONE/diskTypes/local-ssd" }, "autoDelete":true, "interface":"SSD_INTERFACE" } ] }

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

  • PROJECT_ID: プロジェクト ID。

  • VM_ZONE: 単一テナント VM をプロビジョニングするゾーン。

  • MACHINE_TYPE_ZONE: マシンタイプのゾーン。

  • MACHINE_TYPE: 単一テナント VM のマシンタイプ。machineTypes.list メソッドを使用して、プロジェクトで使用可能なマシンタイプのリストを取得します。

  • VM_NAME: 新しい単一テナント VM の名前。

  • MAINTENANCE_POLICY: メンテナンス イベント中の単一テナント VM の再起動動作を指定します。次のいずれかに設定します。

    • MIGRATE: メンテナンス イベント中にノードグループの別のノードに VM が移行されます。

    • TERMINATE: メンテナンス イベント中に VM が停止します。

  • RESTART_ON_FAILURE: 停止後に単一テナントの VM を再起動するかどうかを示します。デフォルトは true です。

  • GROUP_NAME: VM をプロビジョニングするノードグループの名前。

  • NETWORK: この VM のネットワーク リソースの URL。

  • REGION: この VM のサブネットワークが属するリージョン。

  • SUBNETWORK: この VM のサブネットワーク リソースの URL。

  • GPU_TYPE: GPU のタイプ。ノード テンプレートの作成時に指定されたアクセラレータ タイプのいずれかに設定します。

  • GPU_COUNT: この VM に接続するノード テンプレートによって指定された合計 GPU の数。デフォルト値は 1 です。

  • IMAGE_PROJECT: イメージ ファミリーのイメージ プロジェクト

  • IMAGE_FAMILY: VM の作成に使用するイメージのイメージ ファミリー

  • LOCAL_SSD_ZONE: ローカル SSD のゾーン。

  • SSD_INTERFACE: ローカル SSD インターフェースのタイプ。ブートディスク イメージ ドライバが NVMe 用に最適化されている場合は NVME、それ以外の場合は SCSI に設定します。

単一テナント VM のグループのプロビジョニング

マネージド インスタンス グループ(MIG)を使用すると、同一の単一テナント VM のグループをプロビジョニングできます。アフィニティ ラベルを使用すると、単一テナント VM のグループをプロビジョニングする単一テナントノードまたはノードグループを指定できます。

リージョン MIG の場合、各リージョン MIG のゾーンにノードグループを作成し、リージョン MIG のインスタンス テンプレートでノードグループのノード アフィニティを指定する必要があります。

gcloud

  1. gcloud compute instance-templates create コマンドを使用して、単一テナントノード グループで作成する VM のグループのマネージド インスタンス グループ テンプレートを作成します。

    gcloud compute instance-templates create INSTANCE_TEMPLATE \
      --machine-type=MACHINE_TYPE \
      --image-project=IMAGE_PROJECT \
      --image-family=IMAGE_FAMILY \
      --node-group=GROUP_NAME \
      [--accelerator type=GPU_TYPE,count=GPU_COUNT \]
      [--local-ssd interface=SSD_INTERFACE]
    

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

    • INSTANCE_TEMPLATE: 新しいインスタンス テンプレートの名前。

    • MACHINE_TYPE: 単一テナント VM のマシンタイプ。gcloud compute machine-types list コマンドを使用して、プロジェクトで使用可能なマシンタイプのリストを取得します。

    • IMAGE_PROJECT: イメージ ファミリーのイメージ プロジェクト

    • IMAGE_FAMILY: VM の作成に使用するイメージのイメージ ファミリー

    • GROUP_NAME: VM をプロビジョニングするノードグループの名前。このインスタンス テンプレートを使用して、複数のゾーンに存在するリージョン MIG を作成する場合は、--node-affinity-file フラグを使用して、リージョン MIG のノードグループの値のリストを指定します。

    • GPU_TYPE: GPU のタイプ。ノード テンプレートの作成時に指定されたアクセラレータ タイプのいずれかに設定します。

    • GPU_COUNT: この VM に接続するノード テンプレートによって指定された合計 GPU の数。デフォルト値は 1 です。

    • SSD_INTERFACE: ローカル SSD インターフェースのタイプ。ブートディスク イメージ ドライバが NVMe 用に最適化されている場合は nvme、それ以外の場合は scsi に設定します。ローカル SSD パーティションごとに、このフラグと対応する値を 1 回指定します。

  2. gcloud compute instance-groups managed create コマンドを使用して、単一テナントノード グループ内に、マネージド インスタンス グループを作成します。

    gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \
      --size=SIZE \
      --template=INSTANCE_TEMPLATE \
      --zone=ZONE
    

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

    • INSTANCE_GROUP_NAME: このインスタンス グループの名前。

    • SIZE: このインスタンス グループに含める VM の数。ノードグループには、このマネージド インスタンス グループのインスタンスに対応する十分なリソースが必要です。マネージド インスタンス グループ オートスケーラーを使用して、マネージド インスタンス グループのサイズを自動的に管理します。

    • INSTANCE_TEMPLATE: この MIG の作成に使用するインスタンス テンプレートの名前。テンプレートには、適切なノードグループを指す 1 つ以上のノード アフィニティ ラベルが必要です。

    • ZONE: マネージド インスタンス グループを作成するゾーン。リージョン MIG の場合は、--zone フラグを --region フラグに置き換えてリージョンを指定します。また、--zones フラグを追加して、ノードグループが存在するすべてのゾーンを指定します。

REST

  1. instanceTemplates.insert メソッドを使用して、単一テナントノード グループ内に、マネージド インスタンス グループ テンプレートを作成します。

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/TEMPLATE_ZONE/instance-templates
    { "name": "INSTANCE_TEMPLATE", "properties": { "machineType": "zones/MACHINE_TYPE_ZONE/machineTypes/MACHINE_TYPE", "scheduling": { "nodeAffinities": [ { "key": "compute.googleapis.com/node-group-name", "operator": "IN", "values": [ "GROUP_NAME" ] } ] }, "networkInterfaces": [ { "network": "global/networks/NETWORK", "subnetwork": "regions/REGION/subnetworks/SUBNETWORK" } ], "guestAccelerators": [ { "acceleratorType": GPU_TYPE, "acceleratorCount": GPU_COUNT } ], "disks": [ { "boot": true, "initializeParams": { "sourceImage": "projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY" } }, { "type":"SCRATCH", "initializeParams":{ "diskType":"zones/LOCAL_SSD_ZONE/diskTypes/local-ssd" }, "autoDelete":true, "interface":"SSD_INTERFACE" } ] } }

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

    • PROJECT_ID: プロジェクト ID。

    • TEMPLATE_ZONE: インスタンス テンプレートを作成するゾーン。

    • INSTANCE_TEMPLATE: 新しいインスタンス テンプレートの名前。

    • MACHINE_TYPE_ZONE: マシンタイプのゾーン。

    • MACHINE_TYPE: 単一テナント VM のマシンタイプ。machineTypes.list メソッドを使用して、プロジェクトで使用可能なマシンタイプのリストを取得します。

    • GROUP_NAME: VM をプロビジョニングするノードグループの名前。このインスタンス テンプレートを使用して、複数のゾーンに存在するリージョン MIG を作成する場合は、リージョン MIG のゾーンと同じゾーンに存在するノードグループのリストを指定します。

    • NETWORK: このインスタンス テンプレートのネットワーク リソースの URL。

    • REGION: このインスタンス テンプレートのサブネットワークが属するリージョン。

    • SUBNETWORK: このインスタンス テンプレートのサブネットワーク リソースの URL。

    • GPU_TYPE: GPU のタイプ。ノード テンプレートの作成時に指定されたアクセラレータ タイプのいずれかに設定します。

    • GPU_COUNT: この VM に接続するノード テンプレートによって指定された合計 GPU の数。デフォルト値は 1 です。

    • IMAGE_PROJECT: イメージ ファミリーのイメージ プロジェクト

    • IMAGE_FAMILY: VM の作成に使用するイメージのイメージ ファミリー

    • LOCAL_SSD_ZONE: ローカル SSD のゾーン。

    • SSD_INTERFACE: ローカル SSD インターフェースのタイプ。ブートディスク イメージ ドライバが NVMe 用に最適化されている場合は NVME、それ以外の場合は SCSI に設定します。

  2. instanceGroupManagers.insert メソッドを使用して、以前に作成したインスタンス テンプレートに基づいて単一テナントノード グループに MIG を作成します。また、リージョン MIG を作成する場合は、regionInstanceGroupManagers.insert メソッドを使用し、インスタンス テンプレートに指定されているように、すべてのノードグループのリージョンとゾーンを指定します。

    たとえば、ゾーン MIG を作成するには、次のリクエストを使用します。

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers
    {
      "baseInstanceName": "NAME_PREFIX",
      "name": "INSTANCE_GROUP_NAME",
      "targetSize": SIZE,
      "instanceTemplate": "global/instanceTemplates/INSTANCE_TEMPLATE"
    }
    

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

    • PROJECT_ID: プロジェクト ID。

    • ZONE: マネージド インスタンス グループを作成するゾーン。

    • NAME_PREFIX: マネージド インスタンス グループ内の各インスタンスの接頭辞名。

    • INSTANCE_GROUP_NAME: インスタンス グループの名前。

    • SIZE: このインスタンス グループに含める VM の数。ノードグループには、このマネージド インスタンス グループのインスタンスに対応する十分なリソースが必要です。マネージド インスタンス グループ オートスケーラーを使用して、マネージド インスタンス グループのサイズを自動的に管理します。

    • INSTANCE_TEMPLATE: このグループの作成に使用するインスタンス テンプレートの URL。テンプレートには、適切なノードグループを指すノード アフィニティ ラベルが必要です。

ノード アフィニティ ラベルの構成

ノード アフィニティ ラベルを使用すると、ノードグループを論理的にグループ化し、特定のノードグループのセットに VM をスケジュールできます。ノード アフィニティ ラベルを使用して、異なるゾーンのノードグループに VM をスケジュールすることもできます。その場合でも、ノードグループの論理グループを維持できます。次の手順は、アフィニティ ラベルを使用して、本番環境のワークロードに使用される特定のノードグループに VM を関連付ける例を示しています。この例では、単一の VM をスケジュールする方法を示していますが、マネージド インスタンス グループを使用して VM のグループをスケジュールすることもできます。

gcloud

  1. gcloud compute sole-tenancy node-templates create コマンドを使用して、本番環境ワークロードのアフィニティ ラベルのセットを含むノード テンプレートを作成します。

    gcloud compute sole-tenancy node-templates create prod-template \
      --node-type=n1-node-96-624 \
      --node-affinity-labels workload=frontend,environment=prod
    
  2. gcloud compute sole-tenancy node-templates describe コマンドを使用して、ノード テンプレートに割り当てられたノード アフィニティ ラベルを確認します。

  3. gcloud compute sole-tenancy node-groups create コマンドを使用して、本番環境テンプレートを使用するノードグループを作成します。

    gcloud compute sole-tenancy node-groups create prod-group \
      --node-template=prod-template \
      --target-size=1
    
  4. 本番環境の VM 用に、VM のアフィニティを指定する node-affinity-prod.json ファイルを作成します。たとえば、workload=frontendenvironment=prod の両方のアフィニティを持つノード上でのみ実行される VM を指定するファイルを作成する場合があります。Cloud Shell を使用してノード アフィニティ ファイルを作成するか、選択したロケーションでノード アフィニティ ファイルを作成します。

    [
      {
        "key" : "workload",
        "operator" : "IN",
        "values" : ["frontend"]
      },
      {
        "key" : "environment",
        "operator" : "IN",
        "values" : ["prod"]
      }
    ]
    
  5. gcloud compute instances create コマンドnode-affinity-prod.json ファイルを使用して、アフィニティ ラベルが一致するノードグループで VM をスケジュールします。

    gcloud compute instances create prod-vm \
      --node-affinity-file node-affinity-prod.json \
      --machine-type=n1-standard-2
    
  6. gcloud compute instances describe コマンドを使用して scheduling フィールドを確認し、VM に割り当てられたノード アフィニティを表示します。

ノード アンチアフィニティ ラベルの構成

ノード アフィニティ ラベルをアンチアフィニティ ラベルとして構成すると、VM が特定のノードで実行されるのを防ぐことができます。たとえば、アンチアフィニティ ラベルを使用すると、開発目的で使用している VM が、本番環境の VM と同じノードでスケジュールされないようにすることが可能です。次の例は、アフィニティ ラベルを使用して、特定のノードグループで VM が実行されないようにする方法を示しています。この例では、単一の VM をスケジュールする方法を示していますが、マネージド インスタンス グループを使用して VM のグループをスケジュールすることもできます。

gcloud

  1. 開発用の VM の場合、Cloud Shell を使用して node-affinity-dev.json を作成するか、選択したロケーションで作成することで、開発用の VM のアフィニティを指定します。たとえば、workload=frontend が指定されているノードグループで、environment=prod でないノードグループであれば、どのノードグループでも実行される VM を構成するファイルを作成します。

    [
      {
        "key" : "workload",
        "operator" : "IN",
        "values" : ["frontend"]
      },
      {
        "key" : "environment",
        "operator" : "NOT_IN",
        "values" : ["prod"]
      }
    ]
    
  2. gcloud compute instances create コマンドnode-affinity-dev.json ファイルを使用して、開発用 VM を作成します。

    gcloud compute instances create dev-vm \
      --node-affinity-file=node-affinity-dev.json \
      --machine-type=n1-standard-2
    
  3. gcloud compute instances describe コマンドを使用して scheduling フィールドを確認し、VM に割り当てられているノード アンチアフィニティを表示します。

ノードグループの削除

単一テナントノード グループを削除する必要がある場合は、まずノードグループからすべての VM を削除します。

コンソール

  1. [単一テナントノード] ページに移動します。

    [単一テナントノード] ページに移動

  2. 削除するノードグループの [名前] をクリックします。

  3. ノードグループ内のノードごとに、ノードの名前をクリックして、ノードの詳細ページで個々の VM インスタンスを削除するか、個々の VM を削除する標準的な手順を行います。マネージド インスタンス グループ内の VM を削除するには、マネージド インスタンス グループを削除します。

  4. ノードグループのすべてのノードで実行されているすべての VM インスタンスを削除したら、[単一テナントノード] ページに戻ります。

    [単一テナントノード] ページに移動

  5. [ノードグループ] をクリックします。

  6. 削除するノードグループの名前を選択します。

  7. [削除] をクリックします。

gcloud

  1. gcloud compute sole-tenancy node-groups list-nodes コマンドを使用して、ノードグループのノードで実行中の VM インスタンスを一覧表示します。

    gcloud compute sole-tenancy node-groups list-nodes GROUP_NAME \
      --zone=ZONE

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

    • GROUP_NAME: ノードグループの名前

    • ZONE: ノードグループのゾーン

  2. ノードグループで実行されている VM がある場合は、個別の VM を削除する手順またはマネージド インスタンス グループを削除する手順を行います。

  3. ノードグループのすべてのノードで実行されているすべての VM を削除したら、gcloud compute sole-tenancy node-groups delete コマンドを使用してノードグループを削除します。

    gcloud compute sole-tenancy node-groups delete GROUP_NAME \
        --zone=ZONE

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

    • GROUP_NAME: ノードグループの名前

    • ZONE: ノードグループのゾーン

REST

  1. nodeGroups.listNodes メソッドを使用して、ノードグループ内のノードで実行中の VM インスタンスを一覧表示します。

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/nodeGroups/GROUP_NAME/listNodes

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

    • PROJECT_ID: プロジェクト ID

    • ZONE: ノードグループのゾーン

    • GROUP_NAME: VM を一覧表示するグループ

  2. ノードグループで実行されている VM がある場合は、個別の VM を削除する手順またはマネージド インスタンス グループを削除する手順を行います。

  3. ノードグループのすべてのノードで実行されるすべての VM を削除したら、nodeGroups.delete メソッドを使用してノードグループを削除します。

    DELETE https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/nodeGroups/GROUP_NAME
    

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

    • PROJECT_ID: プロジェクト ID

    • ZONE: ノードグループのゾーン

    • GROUP_NAME: 削除するノードグループの名前

ノード テンプレートの削除

ノード テンプレートは、そのテンプレートを使用しているすべてのノードグループを削除した後に削除できます。

コンソール

  1. Google Cloud Console で、[単一テナントノード] ページに移動します。

    [単一テナントノード] ページに移動

  2. [ノード テンプレート] をクリックします。

  3. 未使用のノード テンプレートの名前を選択します。

  4. [削除] をクリックします。

gcloud

gcloud compute sole-tenancy node-templates delete コマンドを使用して、未使用のノード テンプレートを削除します。

gcloud compute sole-tenancy node-templates delete TEMPLATE_NAME \
  --region=REGION

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

  • TEMPLATE_NAME: 削除するノード テンプレートの名前

  • REGION: ノード テンプレートのリージョン

REST

compute.nodeTemplates.delete メソッドを使用して、未使用のノード テンプレートを削除します。

 DELETE https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/nodeTemplates/TEMPLATE_NAME
 

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

  • PROJECT_ID: プロジェクト ID

  • REGION: ノード テンプレートを含む Google Cloud リージョン

  • TEMPLATE_NAME: 削除するノード テンプレートの名前

次のステップ