更新 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.

    REST

    To use the REST API samples on this page in a local development environment, you use the credentials you provide to the 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.

    For more information, see Authenticate for using REST in the Google Cloud authentication documentation.

將 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 的節點相依性,將其移至多租戶主機。

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

後續步驟