VM テナンシーの更新


このページでは、VM のノード アフィニティ ラベルを変更して VM テナンシーを更新する方法について説明します。

デフォルトでは、Compute Engine はマルチテナント ホストに VM をデプロイします。マルチテナント ホストでは、VM は通常、他のプロジェクトやユーザーの VM とホストリソースを共有します。VM を単一テナントノードに移動すると、プロジェクトから単一テナントノードのハードウェアに排他的にアクセスし、完全に制御できます。そのノードには他のテナントが存在しないため、ワークロードは他のプロジェクトと VM のワークロードから分離されます。

ノード アフィニティ ラベルを変更することで、次の方法で VM を移動できます。

  • マルチテナント ホストから単一テナントノードのグループまたはノード
  • 単一テナントノードのグループまたはノードからマルチテナント ホスト
  • 1 つの単一テナントノードから別の単一テナントノードまたはノードグループ
  • 単一テナントノードのグループから別の単一テナントノードのグループまたはノード

ワークロードを単一テナンシーに一時的に移動する

ワークロード要件の変化、定期的な分離が必要なパフォーマンス調査、コンプライアンス要件の変更などにより、特定のワークロードを単一テナントノードに一時的に移動しなければならない場合があります。その後、単一テナンシーが不要になったら、VM をマルチテナント ホストに再デプロイします。VM のテナンシーを変更すると、Compute Engine は VM の構成を保持します。

単一テナント ワークロードの再調整

VM は、単一テナントノードとノードグループ間だけでなく、ノードとノードグループ間で移動することもできます。これにより、ノードを統合し、ワークロードの再調整を行うことができます。VM を移動すると再起動が必要になるため、ワークロードの可用性要件に基づいて VM の移動を計画する必要があります。

制限事項

  • すでに単一テナントノードで実行されている VM を移動すると、その VM は別のノードで再起動します。VM の単一テナンシーがノードグループ名または node-group-name デフォルト アフィニティ ラベルで指定されている場合、その VM はノードグループ内の任意のノードで再起動します。VM の単一テナンシーがアフィニティまたはアンチアフィニティのカスタム アフィニティ ラベルで指定されている場合、その VM はゾーン内の任意のノードグループの任意のノードで再起動します。

準備

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

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

    gcloud

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

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

    REST

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

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

      gcloud init

VM を単一テナンシーに移動する

テナンシーを更新するには、別のノードまたはノードグループから、あるいはマルチテナント ホストから特定の単一テナントノードまたはノードグループに VM を移動します。

gcloud

  1. VM を停止します。

    gcloud compute instances stop VM_NAME
    

    VM_NAME は、停止する VM の名前に置き換えます。

  2. VM の移動先のノードグループを指定して、テナンシーを更新します。

    gcloud compute instances set-scheduling VM_NAME \
        --node-group=NODE_GROUP_NAME
    

    以下のように置き換えます。

    • VM_NAME: 特定のノードグループに移動する VM の名前

    • NODE_GROUP_NAME: VM を移動するノードグループの名前

    ノードの名前またはアフィニティ ラベルを使用して、単一テナントノードに VM を移動することもできます。詳細については、gcloud compute instances set-scheduling コマンドをご覧ください。

  3. VM を起動します。

    gcloud compute instances start VM_NAME
    

    VM_NAME は、アフィニティ ラベルファイルの内容で指定されているノードグループで起動する VM の名前に置き換えます。

REST

  1. VM を停止します。このコマンドの詳細については、instances.stop をご覧ください。

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

    以下のように置き換えます。

    • PROJECT_ID: 停止する VM が属するプロジェクトの ID

    • ZONE: プロジェクトが存在するゾーン

    • VM_NAME: 停止する VM の名前

  2. VM の移動先のノードグループを指定して、テナンシーを更新します。

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/setScheduling
    
    {
      "nodeAffinities": [
        {
          "key": "compute.googleapis.com/node-group-name",
          "operator": "IN",
          "values": [
            "NODE_GROUP_NAME"
          ]
        }
      ]
    }
    

    以下のように置き換えます。

    • PROJECT_ID: 移動する VM を含むプロジェクトの ID

    • ZONE: プロジェクトが存在するゾーン

    • VM_NAME: 特定のノードグループに移動する VM の名前

    • NODE_GROUP_NAME: VM を移動するノードグループの名前

    ノードの名前またはアフィニティ ラベルを使用して、単一テナントノードに VM を移動することもできます。詳細については、instances.setScheduling メソッドをご覧ください。

  3. VM を起動します。このコマンドの詳細については、instances.start をご覧ください。

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

    以下のように置き換えます。

    • PROJECT_ID: 起動する VM が属するプロジェクトの ID

    • ZONE: プロジェクトが存在するゾーン

    • VM_NAME: 起動する VM の名前

単一テナンシーからの VM の移動

VM に専用ハードウェアを使用する必要がなくなった場合(たとえば、VM を他の VM から分離する必要がなくなった場合)は、VM を単一テナントノードからマルチテナント ホストに移動します。

gcloud

  1. VM を停止します。

    gcloud compute instances stop VM_NAME
    

    VM_NAME は、停止する VM の名前に置き換えます。

  2. VM からノード アフィニティをクリアして、マルチテナント ホストに移動できるようにします。

    gcloud compute instances set-scheduling VM_NAME --clear-node-affinities
    

    VM_NAME は、ノード アフィニティをクリアする VM の名前に置き換えます。

  3. マルチテナント ホストで VM を起動します。

    gcloud compute instances start VM_NAME
    

    VM_NAME は、ノード アフィニティをクリアした VM の名前に置き換えます。

REST

  1. VM を停止します。このコマンドの詳細については、instances.stop をご覧ください。

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

    以下のように置き換えます。

    • PROJECT_ID: 停止する VM が属するプロジェクトの ID

    • ZONE: プロジェクトが存在するゾーン

    • VM_NAME: 停止する VM の名前

  2. VM からノード アフィニティをクリアして、マルチテナント ホストに移動します。

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/setScheduling
    
    {
      "nodeAffinities": []
    }
    

    以下のように置き換えます。

    • PROJECT_ID: 移動する VM を含むプロジェクトの ID

    • ZONE: プロジェクトが存在するゾーン

    • VM_NAME: ノード アフィニティをクリアする VM の名前

  3. マルチテナント ホストで VM を起動します。このコマンドの詳細については、instances.start をご覧ください。

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

    以下のように置き換えます。

    • PROJECT_ID: 起動する VM が属するプロジェクトの ID

    • ZONE: プロジェクトが存在するゾーン

    • VM_NAME: 起動する VM の名前

次のステップ