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

このページでは、単一テナントノードで VM インスタンスをプロビジョニングする方法を説明します。単一テナントノードは、特定のプロジェクトの VM の実行に特化した物理サーバーです。単一テナントノードで VM をプロビジョニングする前に、単一テナントノードの概要をご確認ください。

単一テナントノードで VM をプロビジョニングするプロセスは、次の作業からなります。

  1. ノード プロパティを指定する単一テナントノード テンプレートを作成する
  2. テンプレートから単一テナントノード グループを作成する
  3. 単一テナントノードを使用する VM を作成する

始める前に

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

ノードグループを作成して、それらのノードグループで VM をプロビジョニングするには、その前に、単一テナントノード テンプレートを作成する必要があります。ノード テンプレートは、そのノード テンプレートから作成されるノードグループのノードのノード プロパティを定義するリージョン リソースです。

Console

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

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

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

  3. [ノード テンプレートを作成] をクリックしてノード テンプレートの作成を開始します。

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

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

  6. このノード テンプレートから作成される、ノードグループ内の単一テナントノードのそれぞれに適用する [ノードタイプ] を指定します。

  7. [ノード アフィニティ ラベル] を追加します。アフィニティ ラベルによって、単一テナンシーを使用した VM のスケジュールを行えます。このテンプレートから作成される、ノードグループ内のノードでは、ここで指定したアフィニティ ラベルのみが使用されます。ノードグループに別のアフィニティ ラベルを追加することはできません。詳細については、ノードのアフィニティとアンチアフィニティをご覧ください。

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

gcloud

  1. Google Cloud の各ゾーンで使用できる単一テナントノードのノードタイプのリストを取得するには、compute sole-tenancy node-types list コマンドを使用します。

    gcloud compute sole-tenancy node-types list
    
  2. ノードタイプを指定して新しいノード テンプレートを作成するには、compute sole-tenancy node-templates create コマンドを使用します。

    gcloud compute sole-tenancy node-templates create template-name \
      --region=region \
      --node-type=node-type \
      --node-affinity-labels=affinity-labels \
      --server-binding=server-binding
    

    以下を置き換えます。

    • template-name: 新しいノード テンプレートの名前。
    • region: このテンプレートを使用するリージョン。

    • node-type: このテンプレートのノードタイプ。たとえば、80 個の vCPU と 624 GB のメモリを備えたノードを作成するには、n2-node-80-640 ノードタイプを選択します。

    • affinity-labels: アフィニティ ラベルの Key-Value。アフィニティ ラベルによって、単一テナンシーを使用した VM インスタンスのスケジュールを行えます。このテンプレートから作成される、ノードグループ内のノードでは、ここで指定したアフィニティ ラベルのみが使用されます。ノードグループに別のアフィニティ ラベルを追加することはできません。詳細については、ノード アフィニティ ラベルをご覧ください。

    • server-binding: Google Cloud でのノードと物理サーバーのマッピング方法を制御できます。restart-node-on-any-server を指定するか、server-binding フラグを省略すると、ノードのメンテナンス イベントの後に、Google Cloud が任意の物理サーバーを、ノードとして機能するようにプロビジョニングします。Google Cloud にノードに対して同じ物理サーバーを使用させるには、restart-node-on-minimal-servers を指定します。詳細については、--server-binding をご覧ください。

API

  1. ノードタイプのリストを取得するには、compute.nodeTypes.list メソッドを使用します。

    GET https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/nodeTypes
    

    以下を置き換えます。

    • project-id: プロジェクト ID。
    • zone: 使用可能なノードタイプを取得する Google Cloud ゾーン。
  2. ノードタイプを使用するノード テンプレートを作成するには、compute.nodeTemplates.insert メソッドを使用します。

    POST https://compute.googleapis.com/compute/v1/projects/project-id/regions/region/nodeTemplates
    
        {
         "name": "template-name",
         "nodeType": "node-type",
         "nodeAffinityLabels": {
             "key": "value",
             ....
         },
         "serverBinding":
         {
             "type": "server-binding"
         }
        }
    

    以下を置き換えます。

    • project-id: プロジェクト ID。
    • region: ノード テンプレートを作成する Google Cloud リージョン。指定したリージョンの任意のゾーンで、このノード テンプレートを使用してノードグループを作成できます。
    • template-name: 作成するノード テンプレートの名前。

    • node-type: このテンプレートのノードタイプ。たとえば、80 個の vCPU と 640 GB のメモリを備えたノードを作成するには、n2-node-80-640 ノードタイプを選択します。

    • nodeAffinityLabels を使用して、ノードのアフィニティ ラベルを定義する keyvalue のペアを指定します。アフィニティ ラベルによって、単一テナンシーを使用した VM インスタンスのスケジュールを行えます。このテンプレートから作成される、ノードグループ内のノードでは、ここで指定したアフィニティ ラベルのみが使用されます。ノードグループに別のアフィニティ ラベルを追加することはできません。詳細については、ノード アフィニティ ラベルをご覧ください。

    • server-binding: このパラメータを使用して、Google Cloud でのノードと物理サーバーのマッピング方法を制御できます。restart-node-on-any-server を指定するか、serverBinding パラメータを省略すると、ノードのメンテナンス イベントの後に、Google Cloud が任意の物理サーバーを、ノードとして機能するようにプロビジョニングします。Google Cloud にノードに対して同じ物理サーバーを使用させるには、restart-node-on-minimal-servers を指定します。詳細については、--server-binding をご覧ください。

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

ノード テンプレートを作成したら、そのテンプレートに基づいてノードグループを作成します。ノードグループを作成するときは、グループ内の各ノードに適用される次の値を指定する必要があります。

  • リージョン: ノードグループに適用するノード テンプレートが存在するリージョンを選択します。

  • ゾーン: ノードグループを作成する、リージョン内のゾーンを選択します。

  • ノード テンプレート: ノードグループを作成するために使用するノード テンプレートを選択します。

  • ノード数: ノードグループ内に作成する単一テナントノードの数を指定します。ノードグループのサイズを管理するには、ノードグループ オートスケーラーを使用します。作成するノードの数によっては、割り当て追加のリクエストが必要になる場合があります。たとえば、サイズが 2 つのノードグループを作成する場合、ノードタイプとして n2-node-80-640 を選択しているとしたら、少なくとも 160 基の vCPU 割り当てが必要です。

  • メンテナンス ポリシー: ホスト メンテナンス イベント時に VM に適用するメンテナンス ポリシーを指定します。ホスト上の VM を新しい物理サーバーにライブ マイグレーションするか、ノード グループで使用する物理サーバープール内でライブ マイグレーションするか、終了して同じ物理サーバーで再起動するかを選択します。物理サーバーのアフィニティ要件(物理コアごとに評価されるソフトウェア ライセンスを使用している場合など)がない場合は、デフォルトのメンテナンス ポリシーを使用してください。

  • 自動スケーリング対象のノードグループ: ノードグループのオートスケーラーを有効にして、ノードグループ内のノード数が必要に応じて自動的に増減されるようにします。

Console

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

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

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

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

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

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

  6. 使用する [ノード テンプレート] を指定します。使用するノード テンプレートは、選択したリージョン内に存在している必要があります。

  7. グループ内で実行するノードの数を指定します。この数は後から手動で変更できます。または、ノードグループ オートスケーラーを有効化することもできます。現在のところ、ノードグループ オートスケーラーはベータ版です。

  8. [メンテナンス ポリシー] を指定します。

    • デフォルト: VM は新しい物理サーバーにライブ マイグレーションされます。
    • 再起動: VM は同じ物理サーバーで再起動されます。
    • ノードグループ内で移行: VM はノードグループ内で移行されます。
  9. [作成] をクリックして、ノードグループの作成を完了します。

gcloud

次のコマンドを実行して、前に作成したノード テンプレートに基づいてノードグループを作成します。

gcloud compute sole-tenancy node-groups create group-name \
  --zone=zone \
  --node-template=template-name \
  --target-size=target-size \
  --maintenance-policy=maintenance-policy \
  --autoscaler-mode=autoscaler-mode \
  --min-nodes=min-nodes \
  --max-nodes=max-nodes

以下を置き換えます。

  • group-name: 新しいノードグループの名前。
  • zone: ノードグループを作成するゾーン。これは、ノードグループのベースとするノード テンプレートと同じリージョンに存在している必要があります。
  • template-name: このグループを作成するために使用するノード テンプレートの名前。
  • target-size: グループ内に作成するノードの数。
  • maintenance-policy: ノードグループに適用するメンテナンス ポリシー。次のいずれかを指定します。
    • default: VM は新しい物理サーバーにライブ マイグレーションされます。
    • migrate-within-node-group: VM はノードグループ内の別のノードにライブ マイグレーションされます。このポリシーはベータ版です。gcloud beta compute sole-tenancy node-groups create コマンドを使用して指定する必要があります。
    • restart-in-place: VM は終了し、メンテナンス イベント後に同じ物理サーバーで再起動されます。
  • autoscaler-mode: ノードグループに適用するオートスケーラー ポリシー。次のいずれかを指定します。
    • off: ノードグループの自動スケーリングを無効にします。
    • on: ノードグループの自動スケールイン / スケールアウトを有効にします。
    • only-scale-out: 自動スケールアウトのみを有効にします。
  • min-nodes: ノードグループの最小サイズ。デフォルトは 0 です。max- nodes 以下の整数値を指定する必要があります。
  • max-nodes: ノードグループの最大サイズ。指定する値は 100 以下、かつ、min- nodes 以上でなければなりません。autoscaler-modeoff に設定されていない場合は指定する必要があります。

API

ノード テンプレートを作成したら、ノードグループを作成します。ノードグループを作成するには、nodeGroups.insert メソッドを使用します。

POST https://www.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, "autoscalingPolicy": { "mode": autoscaler-mode, "minNodes": min-nodes, "maxNodes": max-nodes }, }

以下を置き換えます。

  • project-id: プロジェクトの ID。
  • zone: ノードグループを作成するゾーン。これは、ノードグループのベースとするノード テンプレートと同じリージョンに存在している必要があります。
  • target-size: グループ内に作成するノードの数。
  • region: このノードグループのベースとするノード テンプレートが存在するリージョン。
  • template-name: このグループを作成するために使用するノード テンプレートの名前。
  • group-name: 新しいノードグループの名前。
  • maintenance-policy: ノードグループに適用するメンテナンス ポリシー。次のいずれかを指定します。
    • DEFAULT: VM は、ホスト メンテナンス イベント時に従来のメンテナンス動作に従います。VM がホスト メンテナンス イベント時に移行されるように設定されている場合は、新しいホストにライブ マイグレーションできます。ホスト メンテナンス イベント時に移行されるように設定されていない VM は終了します。
    • MIGRATE_WITHIN_NODE_GROUP: VM はノードグループ内の別のノードにライブ マイグレーションされます。このポリシーはベータ版です。gcloud beta compute sole-tenancy node-groups create コマンドを使用して指定する必要があります。
    • RESTART_IN_PLACE: VM は終了し、メンテナンス イベント後に同じ物理サーバーで再起動します。
  • autoscaler-mode: ノードグループに適用するオートスケーラー ポリシー。次のいずれかを指定します。
    • OFF: ノードグループの自動スケーリングを無効にします。
    • ON: ノードグループの自動スケールイン / スケールアウトを有効にします。
    • ONLY_SCALE_OUT: 自動スケールアウトのみを有効にします。
  • max-nodes: ノードグループの最大サイズ。指定する値は 100 以下、かつ、min- nodes 以上でなければなりません。autoscaler-modeoff に設定されていない場合は指定する必要があります。
  • min-nodes: ノードグループの最小サイズ。デフォルトは 0 です。max-nodes 以下の整数値を指定する必要があります。

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

ノード テンプレートに基づいてノードグループを作成したら、事前定義されたマシンタイプまたは 2 基以上の vCPU を備えたカスタム マシンタイプを使用して、単一テナントノードまたはノードグループで直接 VM をプロビジョニングします。このようにして VM をプロビジョニングすると、Compute Engine は VM がプロビジョニングされるノードまたはノードグループに基づいて自動的にアフィニティ ラベルを割り当てます。

以下の手順は、ノードグループに個々の VM をプロビジョニングする方法を説明しています。

Console

  • ノード アフィニティ ラベルの使用: VM インスタンスの標準的な作成手順に従い、Cloud Console で、アフィニティ ラベルを使用して新しい VM インスタンスを単一テナントノードに関連付けます。

  • あるいは、ノードグループの詳細ページで VM インスタンスを作成します。

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

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

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

    3. VM インスタンスをプロビジョニングするノードグループの名前をクリックします。

    4. [インスタンスを作成] をクリックして、このノードグループに VM インスタンスをプロビジョニングします。Compute Engine によって自動的に割り当てられた、[リージョン]、[ゾーン]、[マシン構成]、[ノード アフィニティ ラベル]、[ホスト メンテナンス時]、[自動再起動] の値を確認し、ワークロードの要件に応じて値を変更します。

    5. [作成] をクリックして、インスタンスの作成を完了します。

gcloud

ノードグループに、カスタム マシンタイプを使用した VM をプロビジョニングするには、次のコマンドを使用します。

gcloud compute instances create vm-name \
  --zone=zone \
  --image-family=image-family \
  --image-project=image-project \
  --node-group=group-name \
  --custom-cpu=vcpus \
  --custom-memory=memory \
  --maintenance-policy=maintenance-policy \
  --restart-on-failure

以下を置き換えます。

  • vm-name: 新しい VM の名前。
  • zone: 新しい VM を作成するゾーン。
  • image-family: VM の作成に使用するイメージが含まれているイメージ ファミリー
  • image-project: イメージ ファミリーが属するイメージ プロジェクト
  • group-name: VM をプロビジョニングするノードグループの名前。
  • vcpus: この VM で使用する vCPU の数。
  • memory: メモリ量(256 MB 単位)。たとえば、5.25 GB または 5,376 MB を指定できます。
  • maintenance-policy: メンテナンス時の VM の動作を指定します。次のいずれかに設定します。
    • MIGRATE: VM は新しいホストに移行します。
    • TERMINATE: VM は終了します。
  • --restart-on-failure: VM を終了後に再起動するかどうかを示すパラメータ。無効にするには --no-restart-on- failure を使用します。

API

ノードグループに、カスタム マシンタイプを使用した VM をプロビジョニングするには、次の instances.insert REST リクエストを使用します。

POST https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instances
{ "machineType": "zones/zone/machineTypes/custom-vcpus-memory", "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" } ], "disks": [ { "boot": true, "initializeParams": { "sourceImage": "projects/image-project/global/images/family/image-family" } } ] }

以下を置き換えます。

  • project-id: プロジェクトの ID。
  • zone: 新しい VM を作成するゾーン。
  • vcpus: この VM で使用する vCPU の数。
  • memory: メモリ量(256 MB 単位)。たとえば、5.25 GB または 5,376 MB を指定できます。
  • 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。
  • image-project: イメージ ファミリーが属するイメージ プロジェクト
  • image-family: VM の作成に使用するイメージが含まれているイメージ ファミリー

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

複数のまったく同じ VM を同時に 1 つのノードまたはノードグループでプロビジョニングするには、マネージド インスタンス グループ(MIG)を使用し、これらの VM を実行する単一テナントノードまたはノードグループをアフィニティ ラベルで指定します。

マネージド インスタンス グループのサイズを自動的に管理するには MIG オースケーラーを使用し、ノードグループのサイズを自動的に管理するにはノードグループ オートスケーラーを使用します。

次のコマンドは、カスタム マシンタイプを使用してマネージド インスタンス グループを作成する方法を示しています。

gcloud

  1. ノードグループ内に MIG テンプレートを作成するには、gcloud compute instance-templates create コマンドを使用します。

    gcloud compute instance-templates create instance-template \
    --image-family=image-family \
    --image-project=image-project \
    --node-group=group-name \
    --custom-cpu=vcpus \
    --custom-memory=memory
    

    以下を置き換えます。

    • instance-template: 新しいインスタンス テンプレートの名前。
    • image-family: VM の作成に使用するイメージが含まれているイメージ ファミリー
    • image-project: イメージ ファミリーが属するイメージ プロジェクト
    • group-name: VM をプロビジョニングするノードグループの名前。
    • vcpus: この VM で使用する vCPU の数。
    • memory: メモリ量(256 MB 単位)。たとえば、5.25 GB または 5,376 MB を指定できます。
  2. インスタンス グループを作成するには、gcloud compute instance-groups managed create コマンドを使用します。

    gcloud compute instance-groups managed create instance-group-name --zone zone --size size --template instance-template
    

    以下を置き換えます。

    • instance-group-name: このインスタンス グループの名前。
    • zone: マネージド インスタンス グループを作成するゾーン。
    • size: このインスタンス グループに含める VM の数。ノードグループには、このマネージド インスタンス グループのインスタンスに対応する十分なリソースが必要です。
    • instance-template: このグループを作成するために使用するインスタンス テンプレートの名前。テンプレートには、該当するノードグループを指すノード アフィニティを指定する必要があります。

API

  1. ノードグループ内に MIG テンプレートを作成するには、instanceTemplates.insert REST リクエストを使用します。

    POST https://www.googleapis.com/compute/v1/projects/project-id/zones/zone/instance-templates
    { "name": "template-name", "properties": { "machineType": "custom-vcpus-memory", "scheduling": { "nodeAffinities": [ { "key": "compute.googleapis.com/node-group-name", "operator": "IN", "values": [ "group-name" ] } ] }, "networkInterfaces": [ { "network": "global/networks/network", "subnetwork": "regions/region/subnetworks/subnetwork" } ], "disks": [ { "boot": true, "initializeParams": { "sourceImage": "projects/image-project/global/images/family/image-family" } } ] } }

    以下を置き換えます。

    • project-id: プロジェクトの ID。
    • zone: 新しいインスタンス テンプレートを作成するゾーン。
    • template-name: 新しいインスタンス テンプレートの名前。
    • vcpus: インスタンス グループの各 VM に使用する vCPU の数。
    • memory: インスタンス グループの各 VM に割り当てるメモリ量(256 MB 単位)。たとえば、5.25 GB または 5,376 MB を指定できます。
    • group-name: VM をプロビジョニングするノードグループの名前。
    • network: この VM に使用するネットワークの URL。
    • region: この VM に使用するサブネットワークが属するリージョン。
    • subnetwork: この VM に使用するサブネットワークの URL。
    • image-project: イメージ ファミリーが属するイメージ プロジェクト
    • image-family: VM の作成に使用するイメージが含まれているイメージ ファミリー
  2. インスタンス グループを作成するには、instanceGroupManagers.create コマンドを使用します。

    POST https://www.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroupManagers
    {
     "baseInstanceName": "name-prefix",
     "name": "instance-group-name",
     "targetSize": sizevar>,
     "instanceTemplate": "global/instanceTemplates/instance-template"
    }
    

    以下を置き換えます。

    • project-id: プロジェクトの ID。
    • zone: マネージド インスタンス グループを作成するゾーン。
    • name-prefix: マネージド インスタンス グループの各インスタンスに使用する接頭辞名。
    • instance-group-name: このインスタンス グループの名前。
    • size: このインスタンス グループに含める VM の数。ノードグループには、このマネージド インスタンス グループのインスタンスに対応する十分なリソースが必要です。
    • instance-template: このグループを作成するために使用するインスタンス テンプレートの名前。テンプレートには、該当するノードグループを指すノード アフィニティを指定する必要があります。

インスタンスのアフィニティの例

ノード アフィニティ ラベルを使用すると、ノードグループを論理的にグループ化し、特定のノードグループのセットに VM をスケジュールできます。ノード アフィニティ ラベルを使用して、異なるゾーンのノードグループに VM をスケジュールすることもできます。その場合でも、ノードグループの論理グループを維持できます。次の手順は、アフィニティ ラベルを使用して VM を特定のノードグループに関連付ける例を示しています。

gcloud

  1. 本番環境のワークロードに使用する一連のアフィニティ ラベルを設定したノード テンプレートを作成します。

    gcloud compute sole-tenancy node-templates create production-template --node-type=n2-node-80-640 --node-affinity-labels workload=frontend,environment=prod
    
  2. 開発環境のワークロードに使用する一連のアフィニティ ラベルを設定した別のノード テンプレートを作成します。

    gcloud compute sole-tenancy node-templates create development-template --node-type=n2-node-80-640 --node-affinity-labels workload=frontend,environment=dev
    
  3. 本番環境用テンプレートと開発環境用テンプレートを使用して、いくつかのノードグループを作成します。たとえば、1 つの大規模な本番環境用ノードグループと複数の小規模な開発用ノードグループを作成できます。必要に応じて、ワークロードのスケールに合わせて、さまざまなゾーンとターゲット サイズでこれらのグループを作成します。

    gcloud compute sole-tenancy node-groups create production-group --node-template production-template --target-size 5 --zones us-west1-b
    
    gcloud compute sole-tenancy node-groups create development-group-east1 --node-template development-template --target-size 1 --zones us-east1-d
    
    gcloud compute sole-tenancy node-groups create development-group-east2 --node-template development-template --target-size 1 --zones us-east1-d
    
  4. 本番環境の VM 用に、VM のアフィニティを指定する node-affinity-prod.json ファイルを作成します。たとえば、workload=frontendenvironment=prod の両方のアフィニティを持つノードでのみ VM を実行するように指定するファイルを作成します。

    [
      {
        "key" : "workload",
        "operator" : "IN",
        "values" : ["frontend"]
      },
      {
        "key" : "environment",
        "operator" : "IN",
        "values" : ["prod"]
      }
    ]
    
  5. node-affinity-prod.json ファイルを使用して、本番環境の VM に必要なプロパティを指定した MIG テンプレートを作成します。

    gcloud compute instance-templates create production-template --image-family production-images --image-project my-project --node-affinity-file node-affinity-prod.json --custom-cpu 3 --custom-memory 4096
    
  6. 本番環境のノードで実行される MIG 本番環境用テンプレートを使用してインスタンス グループを起動します。

    gcloud compute instance-groups managed create production-group --zone us-west1-b --size 4 --template production-template
    

    この時点で、グループ内の VM が、workload=frontend アフィニティと environment=prod アフィニティを持つノードグループでのみ起動して稼働するようになります。

インスタンスのアンチアフィニティの例

VM がノードでプロビジョニングされないようにするには、アンチアフィニティ ラベルを使用します。たとえば、開発用にいくつかの VM を作成し、これらの VM が Compute Engine によって本番環境の VM をホストするノードにスケジュールされないようにします。次の手順は、アフィニティ ラベルを使用して、VM が特定のノードグループに関連付けられないようにする例を示しています。

gcloud

  1. 開発用インスタンスについては、開発用 VM のアフィニティを指定する node-affinity-dev.json ファイルを作成します。たとえば、workload=frontend が指定されていて、environment=prod でないノードグループであれば、任意のノードグループで稼働するように VM を構成するファイルを作成します。

    [
      {
        "key" : "workload",
        "operator" : "IN",
        "values" : ["frontend"]
      },
      {
        "key" : "environment",
        "operator" : "NOT",
        "values" : ["prod"]
      }
    ]
    
  2. 開発の際は、インスタンス グループ全体ではなく、テストのために個々の VM を作成できます。node-affinity-dev.json ファイルを使用して VM を作成します。たとえば、development-image-1 という名前の特定の開発イメージをテストする場合は、次のコマンドを使用して VM を作成してそのアフィニティを構成します。

    gcloud compute instances create dev-1 --image development-image-1 --image-project my-project --node-affinity-file node-affinity-dev.json --custom-cpu 3 --custom-memory 4096 --zone us-east1-d
    

    このインスタンスは、workload=frontend が設定されたノードグループでのみ起動して稼働します。一方、この VM は environment=prod affinity で構成されたノードグループでは実行されません。

ノード テンプレートを削除する

ノード テンプレートを削除するには、そのテンプレートを使用するすべてのノードグループをあらかじめ削除する必要があります。

Console

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

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

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

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

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

gcloud

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

gcloud compute sole-tenancy node-templates delete template-name \
    --region=region

以下を置き換えます。

  • template-name: 削除するノード テンプレートの名前
  • region: ノード テンプレートのリージョン

API

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: 削除するノード テンプレートの名前

ノードグループを削除する

VM インスタンスが実行されているノードが含まれていなければ、ノードグループを削除できます。

Console

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

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

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

  3. ノードグループ内の各ノードの名前をクリックします。ノードで VM インスタンスが実行されていないことを確認します。

  4. ノードの詳細ページで、個々の VM インスタンスを削除できます。または、個々の VM インスタンスを削除する標準的な手順に従って削除することもできます。マネージド インスタンス グループ内のインスタンスを削除するには、マネージド インスタンス グループを削除する必要があります。

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

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

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

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

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

gcloud

  1. 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 インスタンスを削除したら、compute sole-tenancy node-groups delete コマンドを使用してノードグループを削除します。

    gcloud compute sole-tenancy node-groups delete group-name \
     --zone=zone
    

    以下を置き換えます。

    • group-name: ノードグループの名前
    • zone: ノードグループのゾーン

次のステップ