本頁面說明如何修改 VM 的節點相似度標籤,藉此更新 VM 的租用模式。
根據預設,Compute Engine 會在多租戶主機上部署 VM。在多租戶主機上,VM 通常會與其他專案和客戶的 VM 共用主機資源。將 VM 移至單一租戶節點後,您的專案將擁有單一租戶節點硬體的專屬存取權和完整控制權。您是該節點上的唯一租戶,因此您的工作負載會與其他專案及其 VM 的工作負載隔離。
修改節點親和性標籤後,您就能透過下列方式移動 VM:
- 從多租戶主機遷移至單一租戶節點群組或節點
- 從單一租戶節點群組或節點移至多租戶主機
- 從一個單一租戶節點移至另一個單一租戶節點或節點群組
- 從單一租戶節點群組遷移至其他單一租戶節點群組或節點
暫時將工作負載移至單一租戶
工作負載的需求會不時變動,例如定期需要額外隔離來檢查效能,或法規遵循規定有所變更,因此您可能需要暫時將特定工作負載移至單一租戶節點。之後,當您不再需要單一租戶時,請將 VM 重新部署至多租戶主機。修改 VM 的租戶時,Compute Engine 會保留 VM 的設定。
重新平衡單一租戶工作負載
除了將 VM 移至單一租戶節點和節點群組,以及從這些節點和群組移出 VM 之外,您也可以在節點和節點群組之間移動 VM,這有助於整合節點及重新平衡工作負載。遷移 VM 需要重新啟動,因此請根據工作負載的可用性需求,規劃 VM 遷移作業。
限制
- 如果 VM 已在單一租戶節點上執行,遷移後可能會在另一個節點上重新啟動。如果 VM 的單一租戶是由節點群組名稱指定,或是使用
node-group-namedefault affinity 標籤,VM 可以在節點群組中的任何節點上重新啟動。如果使用親和性或反親和性自訂親和性標籤指定 VM 的單一租戶,VM 可能會在可用區中任何節點群組的任何節點上重新啟動。
事前準備
-
如果尚未設定驗證,請先完成設定。
驗證可確認您的身分,以便存取 Google Cloud 服務和 API。如要從本機開發環境執行程式碼或範例,請選取下列其中一個選項,向 Compute Engine 進行驗證:
選取這個頁面上範例的預計用途分頁:
gcloud
-
安裝 Google Cloud CLI。 完成後,執行下列指令來初始化 Google Cloud CLI:
gcloud init若您採用的是外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。
-
- 設定預設區域和可用區。
REST
如要在本機開發環境中使用本頁的 REST API 範例,請使用您提供給 gcloud CLI 的憑證。
安裝 Google Cloud CLI。
如果您使用外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。
詳情請參閱 Google Cloud 驗證說明文件中的「使用 REST 進行驗證」一節。
將 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 的節點相依性,以便將 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 的節點相依性,即可將 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 名稱
在多租戶主機上啟動 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。
- 瞭解如何自動調度單一租戶節點群組。