このページでは、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
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- デフォルトのリージョンとゾーンを設定します。
REST
このページの REST API サンプルをローカル開発環境で使用するには、gcloud CLI に指定した認証情報を使用します。
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
-
VM を単一テナンシーに移動する
テナンシーを更新するには、別のノードまたはノードグループから、あるいはマルチテナント ホストから特定の単一テナントノードまたはノードグループに VM を移動します。
gcloud
VM を停止します。
gcloud compute instances stop VM_NAME
VM_NAME
は、停止する VM の名前に置き換えます。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
コマンドをご覧ください。VM を起動します。
gcloud compute instances start VM_NAME
VM_NAME
は、アフィニティ ラベルファイルの内容で指定されているノードグループで起動する VM の名前に置き換えます。
REST
VM を停止します。このコマンドの詳細については、instances.stop をご覧ください。
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/stop
以下のように置き換えます。
PROJECT_ID
: 停止する VM が属するプロジェクトの IDZONE
: プロジェクトが存在するゾーンVM_NAME
: 停止する VM の名前
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 を含むプロジェクトの IDZONE
: プロジェクトが存在するゾーンVM_NAME
: 特定のノードグループに移動する VM の名前NODE_GROUP_NAME
: VM を移動するノードグループの名前
ノードの名前またはアフィニティ ラベルを使用して、単一テナントノードに VM を移動することもできます。詳細については、
instances.setScheduling
メソッドをご覧ください。VM を起動します。このコマンドの詳細については、
instances.start
をご覧ください。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/start
以下のように置き換えます。
PROJECT_ID
: 起動する VM が属するプロジェクトの IDZONE
: プロジェクトが存在するゾーンVM_NAME
: 起動する VM の名前
単一テナンシーからの VM の移動
VM に専用ハードウェアを使用する必要がなくなった場合(たとえば、VM を他の VM から分離する必要がなくなった場合)は、VM を単一テナントノードからマルチテナント ホストに移動します。
gcloud
VM を停止します。
gcloud compute instances stop VM_NAME
VM_NAME
は、停止する VM の名前に置き換えます。VM からノード アフィニティをクリアして、マルチテナント ホストに移動できるようにします。
gcloud compute instances set-scheduling VM_NAME --clear-node-affinities
VM_NAME
は、ノード アフィニティをクリアする VM の名前に置き換えます。マルチテナント ホストで VM を起動します。
gcloud compute instances start VM_NAME
VM_NAME
は、ノード アフィニティをクリアした VM の名前に置き換えます。
REST
VM を停止します。このコマンドの詳細については、
instances.stop
をご覧ください。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/stop
以下のように置き換えます。
PROJECT_ID
: 停止する VM が属するプロジェクトの IDZONE
: プロジェクトが存在するゾーンVM_NAME
: 停止する VM の名前
VM からノード アフィニティをクリアして、マルチテナント ホストに移動します。
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/setScheduling { "nodeAffinities": [] }
以下のように置き換えます。
PROJECT_ID
: 移動する VM を含むプロジェクトの IDZONE
: プロジェクトが存在するゾーンVM_NAME
: ノード アフィニティをクリアする VM の名前
マルチテナント ホストで VM を起動します。このコマンドの詳細については、instances.start をご覧ください。
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/start
以下のように置き換えます。
PROJECT_ID
: 起動する VM が属するプロジェクトの IDZONE
: プロジェクトが存在するゾーンVM_NAME
: 起動する VM の名前
次のステップ
- VM を単一テナントノードに移行する前に、単一テナントノードの料金を確認する。
- お客様所有ライセンスの使用を確認する。
- Microsoft ライセンスに関するよくある質問を確認する。
- 既存のライセンスを持つイメージを Google Cloud に移行する方法を学習する。
- 単一テナントノード グループを自動スケーリングする方法を学習する。