更新 VM 用戶群


本頁說明如何修改 VM 的節點相依性標籤,以更新 VM 的租用戶。

根據預設,Compute Engine 會在多租戶主機上部署 VM。在多租戶主機上,VM 通常會與其他專案和客戶的 VM 共用主機資源。將 VM 移至單一用戶群節點後,專案將擁有單一用戶群節點硬體的專屬存取權和完全控制權。您是該節點的唯一租用戶,因此您的工作負載會與其他專案的工作負載和 VM 隔離。

您可以修改節點相依性標籤,以以下方式移動 VM:

  • 從多用戶群主機轉換為單一用戶群節點群組或節點
  • 從單一用戶群節點群組或節點轉換為多用戶群主機
  • 從一個單一租戶節點移至另一個單一租戶節點或節點群組
  • 從單一用戶群節點群組移至另一個單一用戶群節點群組或節點

暫時將工作負載遷移至單一用戶群

由於工作負載的需求會隨時間而變動 (例如,需要定期進行額外隔離來檢查效能,或是法規遵循規定有所變更),因此您可能需要將特定工作負載暫時移至單一用戶群節點。之後,當您不再需要單租戶時,請將 VM 重新部署至多租戶主機。修改 VM 的租用戶身分時,Compute Engine 會保留 VM 的設定。

重新平衡單一用戶群工作負載

除了在單一租用戶節點和節點群組之間移動 VM 外,您還可以在節點和節點群組之間移動 VM,這有助於您整合節點並重新平衡工作負載。遷移 VM 需要重新啟動,因此請根據工作負載的可用性需求規劃 VM 遷移作業。

限制

  • 當您移動在單一用戶群節點上執行的 VM 時,VM 可能會在另一個節點上重新啟動。如果 VM 的單一租用權是透過節點群組名稱或使用 node-group-name 預設相依性標籤指定,VM 便可在節點群組中的任何節點上重新啟動。如果使用相依性或反相依性自訂相依性標籤指定 VM 的單一租用權,VM 可能會在該區域中任何節點群組的任何節點上重新啟動。

事前準備

  • 如果尚未設定,請先設定驗證機制。「驗證」是指驗證身分,以便存取 Google Cloud 服務和 API 的程序。如要從本機開發環境執行程式碼或範例,請選取下列任一選項,以便對 Compute Engine 進行驗證:

    Select the tab for how you plan to use the samples on this page:

    gcloud

    1. After installing the Google Cloud CLI, initialize it by running the following command:

      gcloud init

      If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

    2. Set a default region and zone.
    3. REST

      如要在本機開發環境中使用本頁的 REST API 範例,請使用您提供給 gcloud CLI 的憑證。

        After installing the Google Cloud CLI, initialize it by running the following command:

        gcloud init

        If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

      詳情請參閱 Google Cloud 驗證說明文件中的「驗證以使用 REST」。

將 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 VM_NAME 名稱

    • 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 VM_NAME 名稱

    • 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 中的節點相依性,以便將 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 的節點相依性,將 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 名稱

後續步驟