在單一用戶群節點上佈建 VM

本頁說明如何在單一租戶節點上佈建 VM。單一租戶節點是實體伺服器,只會執行單一專案中的 VM。在單一租戶節點上佈建 VM 前,請先閱讀單一租戶節點總覽。

事前準備

  • 在單一租戶節點上佈建 VM 前,請先檢查配額。視您預留的節點數量和大小而定,您可能需要申請額外配額。
  • 建立單一租戶節點範本。
  • 建立單一租戶節點群組。
  • 如果尚未設定驗證,請先完成設定。 驗證程序會確認您的身分,以便授予 Google Cloud 服務和 API 的存取權。如要從本機開發環境執行程式碼或範例,請選取下列其中一個選項,向 Compute Engine 進行驗證:

    選取這個頁面上範例的預計用途分頁:

    控制台

    使用 Google Cloud 控制台存取 Google Cloud 服務和 API 時,您不需要設定驗證機制。

    gcloud

    1. 安裝 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 進行驗證」。

建立單一租戶節點範本

單一租戶節點範本是區域資源,可指定單一租戶節點群組的屬性。您必須先建立節點範本,才能建立節點群組。不過,如果您使用 Google Cloud 控制台,就必須在建立單一租戶節點群組時建立節點範本。

控制台

您必須先建立單一租戶節點範本,才能建立節點群組。 使用 Google Cloud 控制台時,您必須在建立單一租戶節點群組期間建立節點範本。新節點範本會在節點群組屬性中指定的相同區域建立。

  1. 前往 Google Cloud 控制台的「Sole-tenant nodes」(單一租戶節點) 頁面。

    前往單一用戶群節點

  2. 按一下「建立節點群組」。

  3. 指定節點群組的名稱。

  4. 指定要建立節點範本的「Region」(區域)。您可以使用節點範本,在這個區域的任何可用區中建立節點群組。

  5. 指定「區域」,然後按一下「繼續」。

  6. 在「節點範本」清單中,按一下「建立節點範本」,開始建立單一租戶節點範本。

  7. 指定節點範本的「Name」(名稱)。

  8. 為節點群組中要根據這個節點範本建立的每個單一租戶節點,指定節點類型。

  9. 選用:您也可以為節點範本指定下列屬性。

    • 新增本機 SSD 和 GPU 加速器。
    • 選取「啟用 CPU 超額配置」,即可控管在節點上排程的每個 VM 的 CPU 超額配置層級。

    • 新增節點相依性標籤。親和性標籤可讓您以邏輯方式將節點和節點群組分組,之後佈建 VM 時,您可以在 VM 上指定親和性標籤,在特定一組節點或節點群組上排定 VM。詳情請參閱「節點親和性和反親和性」。

  10. 按一下 [Create] (建立),完成建立節點範本。

  11. 選用:如要在其他區域新增單一租戶節點範本,請重複上述步驟。

如要查看節點範本,請按一下「Sole-tenant nodes」(單一租戶節點) 頁面中的「Node templates」(節點範本)。

gcloud

使用 gcloud compute sole-tenancy node-templates create 指令建立節點範本:

gcloud compute sole-tenancy node-templates create TEMPLATE_NAME \
  --node-type=NODE_TYPE \
  [--region=REGION \]
  [--node-affinity-labels=AFFINITY_LABELS \]
  [--accelerator type=GPU_TYPE,count=GPU_COUNT \]
  [--disk type=local-ssd,count=DISK_COUNT,size=DISK_SIZE \]
  [--cpu-overcommit-type=CPU_OVERCOMMIT_TYPE]

更改下列內容:

  • TEMPLATE_NAME:新節點範本的名稱。

  • NODE_TYPE:根據此範本建立的單一租戶節點節點類型。使用 gcloud compute sole-tenancy node-types list 指令,取得各可用區可用的節點類型清單。

  • REGION:要建立節點範本的區域。您可以使用這個範本,在這個區域的任何可用區建立節點群組。

  • AFFINITY_LABELS:相依性標籤的鍵和值 [KEY=VALUE,...]。相依性標籤可讓您以邏輯方式將節點和節點群組分組,之後佈建 VM 時,您可以在 VM 上指定相依性標籤,將 VM 排程至特定節點或節點群組。詳情請參閱「節點親和性和反親和性」。

  • GPU_TYPE:根據這個節點範本建立的每個單一租戶節點的 GPU 類型。如要瞭解必要單一租戶節點類型的區域可用性,請使用 gcloud compute sole-tenancy node-types list 指令。舉例來說,如要查看 a2-highgpu 節點類型的區域,請新增 --filter="name~'a2-highgpu'" 旗標。如要瞭解可用的 GPU 和節點類型,請參閱GPU_COUNT說明中的表格。

  • GPU_COUNT:要附加至各個單一租戶節點的 GPU 數量。GPU_COUNT 的值取決於 GPU_TYPE 和單一租戶節點類型。將 GPU_COUNT 設為下表所示的值:

    節點類型 GPU_TYPE GPU_COUNT
    a2-highgpu nvidia-tesla-a100 8
    a2-megagpu nvidia-tesla-a100 16
    a2-ultragpu nvidia-a100-80gb 8
    a3-highgpu nvidia-h100-80gb 8
    a3-megagpu nvidia-h100-mega-80gb 8
    g2 nvidia-l4 8
    g4 nvidia-rtx-pro-6000 8
    n1 nvidia-tesla-p4 4
    n1 nvidia-tesla-t4 4
    n1 nvidia-tesla-v100 8
  • DISK_COUNT:本機 SSD 磁碟數量。設為 16 或 24。A2 Ultra、A3 High 和 A3 Mega 節點類型包含固定數量的本機 SSD 磁碟,因此不需要這個參數。

  • DISK_SIZE:本機 SSD 分區大小的選用值 (以 GB 為單位)。唯一支援的分區大小為 375,如果未設定這個值,系統會預設為 375。

  • CPU_OVERCOMMIT_TYPE:VM 上 CPU 的超額配置類型。設為 enabled 或 none。

REST

使用 nodeTemplates.insert 方法建立節點範本:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/nodeTemplates

{
  "name": "TEMPLATE_NAME",
  "nodeType": "NODE_TYPE",
  "nodeAffinityLabels": {
    "KEY": "VALUE",
    ...
  },
  "accelerators": [
    {
      "acceleratorType": "GPU_TYPE",
      "acceleratorCount": GPU_COUNT
    }
  ],
  "disks": [
    {
      "diskType": "local-ssd",
      "diskSizeGb": DISK_SIZE,
      "diskCount": DISK_COUNT
    }
  ],
  "cpuOvercommitType": CPU_OVERCOMMIT_TYPE
}

更改下列內容:

  • PROJECT_ID:專案 ID。

  • REGION:要建立節點範本的區域。您可以使用這個範本,在這個區域的任何可用區中建立節點群組。

  • TEMPLATE_NAME:新節點範本的名稱。

  • NODE_TYPE:依據這個範本建立的單一租戶節點類型。使用 nodeTypes.list 方法,取得各可用區可用的節點類型清單。

  • KEY:nodeAffinityLabels 值,用於指定以鍵/值組合表示的節點親和性標籤鍵部分。相依性標籤可讓您從邏輯上將節點和節點群組分組,之後在佈建 VM 時,您可以在 VM 上指定相依性標籤,以便在特定節點或節點群組上排定 VM。詳情請參閱「節點親和性和反親和性」。

  • VALUE:nodeAffinityLabels 值,指定節點親和性標籤鍵/值組合的值部分。

  • GPU_TYPE:根據這個節點範本建立的每個單一租戶節點的 GPU 類型。如要瞭解所需單一租戶節點類型的可用區,請使用 nodeTypes.list 方法。舉例來說,如要查看 a2-highgpu 節點類型的區域,請使用 name~"a2-highgpu.*" 篩選器。如要瞭解可用的 GPU 和節點類型,請參閱說明中的表格。GPU_COUNT

  • GPU_COUNT:根據這個節點範本建立的每個單一用戶群節點的 GPU 數量。GPU_COUNT 的值取決於 GPU_TYPE 和單一租戶節點類型。將 GPU_COUNT 設為下表所示的值:

    節點類型 GPU_TYPE GPU_COUNT
    a2-highgpu nvidia-tesla-a100 8
    a2-megagpu nvidia-tesla-a100 16
    a2-ultragpu nvidia-a100-80gb 8
    a3-highgpu nvidia-h100-80gb 8
    a3-megagpu nvidia-h100-mega-80gb 8
    g2 nvidia-l4 8
    g4 nvidia-rtx-pro-6000 8
    n1 nvidia-tesla-p4 4
    n1 nvidia-tesla-t4 4
    n1 nvidia-tesla-v100 8
  • DISK_SIZE:本機 SSD 分區大小的選用值,以 GB 為單位。唯一支援的分區大小為 375,如未設定這個值,預設為 375。

  • DISK_COUNT:本機 SSD 磁碟數量。設為 16 或 24。A3 High 和 A3 Mega 節點類型不需使用這個參數,因為這兩種類型包含固定數量的本機 SSD 磁碟。

  • CPU_OVERCOMMIT_TYPE:CPU 超額配置類型。設為 enabled、none 或 CPU_OVERCOMMIT_TYPE_UNSPECIFIED。

建立單一租戶節點群組

使用先前建立的單一租戶節點範本,建立單一租戶節點群組。單一租戶節點群組會繼承單一租戶節點範本指定的屬性,並具有您必須指定的額外值。

控制台

  1. 前往 Google Cloud 控制台的「Sole-tenant nodes」(單一租戶節點) 頁面。

    前往「Sole-tenant nodes」(單一租戶節點) 頁面

  2. 按一下 [Create node group] (建立節點群組) 開始建立節點群組。

  3. 指定節點群組的「Name」(名稱)。

  4. 指定節點群組的「Region」(區域),即可顯示該區域中可用的節點範本。

  5. 指定要在區域內建立節點群組的「Zone」(可用區)。

  6. 指定「Node template」(節點範本) 來建立節點群組,或按一下「Create node template」(建立節點範本) 來建立新的單一租戶節點範本。所選節點範本會套用至節點群組。

  7. 為節點群組自動調度器選擇下列其中一種「自動調度資源模式」:

    • 關閉:手動管理節點群組的大小。

    • 開啟:自動在節點群組中新增或移除節點。

    • 「Only scale out」(僅水平擴展):需要額外容量時,將節點新增至節點群組。

  8. 指定群組的節點數量。如果啟用節點群組自動配置器,請指定節點群組的大小範圍。您稍後可以手動變更值。

  9. 在「設定維護設定」專區,將單一租戶節點群組的「維護政策」設為下列其中一個值。維護政策可讓您在主機維護事件期間,設定節點群組中 VM 的行為。詳情請參閱「維護政策」。

    • 預設
    • 就地重新啟動
    • 在節點群組內遷移
  10. 您可以選擇一般維護期間和進階維護控制項,處理單一租戶節點群組的維護作業,如下所示:

    • 維護期間:選取時間範圍,讓單一用戶群節點群組中的節點在這段期間執行預定維護事件。

    • 選擇啟用單一用戶群的進階維護控制項: 透過單一用戶群的進階維護控制項,您可以控制單一用戶群節點群組的預定維護事件,並盡量減少維護作業造成的服務中斷。如要選擇加入進階維護控制項,請將「選擇加入單一用戶群的進階維護控制項」切換鈕設為「開啟」。如果選擇使用這個選項進行節點維護,系統會停用「維護期間」欄位,並按照進階維護控制項的設定執行維護作業。

    請注意,進階維護控制項僅支援「預設」維護政策。

  11. 在「Configure share settings」(設定共用設定) 中指定下列其中一項,即可調整共用設定:

    • 如要與組織中的所有專案共用節點群組,請選擇「Share this node group with all projects within the organization」(與組織中的所有專案共用這個節點群組)。
    • 如要與貴機構中的特定專案共用節點群組,請選擇「與組織中的指定專案共用這個節點群組」。

    如不想共用節點群組,請選擇「不要與其他專案共用這個節點群組」。如要進一步瞭解如何共用節點群組,請參閱「共用單一租戶節點群組」。

  12. 按一下「建立」,完成節點群組建立程序。

gcloud

執行 gcloud compute sole-tenancy node-groups create 指令,根據先前建立的節點範本建立節點群組:

gcloud compute sole-tenancy node-groups create GROUP_NAME \
  --node-template=TEMPLATE_NAME \
  --target-size=TARGET_SIZE \
  [--zone=ZONE \]
  [--maintenance-policy=MAINTENANCE_POLICY \]
  [--maintenance-window-start-time=START_TIME \]
  [--autoscaler-mode=AUTOSCALER_MODE: \
  --min-nodes=MIN_NODES \
  --max-nodes=MAX_NODES]

更改下列內容:

  • GROUP_NAME:新節點群組的名稱。

  • TEMPLATE_NAME:用於建立這個群組的節點範本名稱。

  • TARGET_SIZE:要在群組中建立的節點數量。

  • ZONE:要建立節點群組的可用區。這個區域必須與節點群組所依據的節點範本相同。

  • MAINTENANCE_POLICY:節點群組的維護政策。詳情請參閱「維護政策」。必須是下列其中一個值:

    • default
    • restart-in-place
    • migrate-within-node-group

    或者,您也可以使用 --maintenance-interval 標記,選擇啟用單一租戶節點群組的進階維護控制項。詳情請參閱「在單一租戶節點上啟用進階維護控制項」。

  • START_TIME:這個節點群組中 VM 的維護期間開始時間 (格林威治標準時間)。可設為:00:00、04:00、08:00、12:00、16:00 或 20:00。如未設定,節點群組就不會有設定的維護期間。

  • AUTOSCALER_MODE:節點群組的自動配置器政策。必須是下列其中一個值:

    • off:手動管理節點群組的大小。

    • on:自動在節點群組中新增或移除節點。

    • only-scale-out:需要額外容量時,將節點新增至節點群組。

  • MIN_NODES:節點群組的最小大小。預設值為 0,且必須是小於或等於 MAX_NODES 的整數值。

  • MAX_NODES:節點群組的大小上限。 這個值必須小於或等於 100,且大於或等於 MIN_NODES。如果 AUTOSCALER_MODE 未設為 off,則為必要欄位。

REST

使用 nodeGroups.insert 方法,根據先前建立的節點範本建立節點群組:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/nodeGroups?initialNodeCount=TARGET_SIZE
{ "nodeTemplate": "regions/REGION/nodeTemplates/TEMPLATE_NAME", "name": "GROUP_NAME", "maintenancePolicy": MAINTENANCE_POLICY, "maintenanceWindow": { "startTime": "START_TIME" } "autoscalingPolicy": { "mode": AUTOSCALER_MODE, "minNodes": MIN_NODES, "maxNodes": MAX_NODES }, }

更改下列內容:

  • PROJECT_ID:專案 ID。

  • ZONE:要在其中建立節點群組的可用區。這個區域必須與節點群組所依據的節點範本位於相同區域。

  • TARGET_SIZE:要在群組中建立的節點數量。

  • REGION:要在其中建立節點群組的區域。所選區域必須有節點範本。

  • TEMPLATE_NAME:用於建立這個群組的節點範本名稱。

  • GROUP_NAME:新節點群組的名稱。

  • MAINTENANCE_POLICY:節點群組的維護政策。必須是下列其中一個值:

    • DEFAULT
    • RESTART_IN_PLACE
    • MIGRATE_WITHIN_NODE_GROUP

    或者,您也可以使用 maintenanceInterval 欄位,選擇加入單一租戶節點群組的進階維護控制項。詳情請參閱「在單一租戶節點上啟用進階維護控制項」。

  • START_TIME:這個節點群組中 VM 的維護期間開始時間 (格林威治標準時間)。設為下列其中一項:00:00、04:00、08:00、12:00、16:00 或 20:00。如未設定,節點群組就不會有設定的維護期間。

  • AUTOSCALER_MODE:節點群組的自動配置器政策。必須是下列其中一個值:

    • OFF:手動管理節點群組的大小。

    • ON:自動在節點群組中新增或移除節點。

    • ONLY_SCALE_OUT:需要額外容量時,將節點新增至節點群組。

  • MIN_NODES:節點群組的最小大小。預設值為 0,且必須是小於或等於 MAX_NODES 的整數值。

  • MAX_NODES:節點群組的大小上限。這個值必須小於或等於 100,且大於或等於 MIN_NODES。如果 AUTOSCALER_MODE 未設為 OFF,則為必要欄位。

佈建單一租戶 VM

根據先前建立的節點範本建立節點群組後,您可以在單一租戶節點群組上佈建個別 VM。

如要在特定節點或節點群組上佈建 VM,且該節點或節點群組具有與您先前指派給節點範本的親和性標籤相符的標籤,請按照建立 VM 執行個體的標準程序操作,並將親和性標籤指派給 VM。

或者,您也可以按照下列程序,從節點群組詳細資料頁面,在單一租戶節點上佈建 VM。Compute Engine 會根據您佈建 VM 的節點群組,指派相似度標籤。

控制台

  1. 前往 Google Cloud 控制台的「Sole-tenant nodes」(單一租戶節點) 頁面。

    前往單一用戶群節點

  2. 按一下「Node groups」(節點群組)。

  3. 按一下要佈建 VM 執行個體的節點群組「名稱」,然後視需要按一下要佈建 VM 的特定單一租戶節點名稱,佈建 VM。

  4. 按一下「Create instance」(建立執行個體),在這個節點群組上佈建 VM 執行個體,記下系統自動套用至「Name」(名稱)、「Region」(區域) 和「Zone」(可用區) 的值,並視需要修改這些值。

  5. 指定「機器家族」、「系列」和「機型」,選取「機器設定」。選擇與單一租戶節點類型對應的「Series」(系列)。

  6. 視需要修改「開機磁碟」、「防火牆」和其他設定。

  7. 按一下「Sole Tenancy」(單一租戶),記下自動指派的「Node affinity labels」(節點相依性標籤),然後視需要使用「Browse」(瀏覽) 進行調整。

  8. 按一下「管理」,然後在「主機維護期間」中,選擇下列其中一個選項:

    • VM Migration 執行個體 (建議做法):在維護事件期間,VM 會遷移至節點群組中的其他節點。

    • 終止:VM 在維護事件期間停止。

  9. 在「自動重新啟動」部分,選擇下列其中一個選項:

    • 開啟 (建議):如果 VM 因維護事件而停止,系統會自動重新啟動 VM。

    • 關閉:維護事件後不會自動重新啟動 VM。

  10. 按一下「建立」,完成建立單一租戶 VM。

gcloud

使用 gcloud compute instances create 指令在單一租戶節點群組上佈建 VM:

gcloud compute instances create VM_NAME \
  [--zone=ZONE \]
  --image-family=IMAGE_FAMILY \
  --image-project=IMAGE_PROJECT \
  --node-group=GROUP_NAME \
  --machine-type=MACHINE_TYPE \
  [--maintenance-policy=MAINTENANCE_POLICY \]
  [--accelerator type=GPU_TYPE,count=GPU_COUNT \]
  [--local-ssd interface=SSD_INTERFACE \]
  [--restart-on-failure]

--restart-on-failure 旗標會指出單一租戶 VM 是否會在停止後重新啟動。這項標記預設為啟用。使用 --no-restart-on-failure 停用。

更改下列內容:

  • VM_NAME:新單一租戶 VM 的名稱。

  • ZONE:要佈建單一租戶 VM 的可用區。

  • IMAGE_FAMILY:用於建立 VM 的映像檔映像檔系列。

  • IMAGE_PROJECT:映像檔系列的映像檔專案。

  • GROUP_NAME:要在其上佈建 VM 的節點群組名稱。

  • MACHINE_TYPE:單一租戶 VM 的機器類型。使用 gcloud compute machine-types list 指令,取得專案可用的機型清單。

  • MAINTENANCE_POLICY:指定維護事件期間,單一租戶 VM 的重新啟動行為。設為下列任一值:

    • MIGRATE:在維護事件期間,VM 會遷移至節點群組中的另一個節點。

    • TERMINATE:VM 在維護事件期間停止。

  • GPU_TYPE:GPU 類型。設定為建立節點範本時指定的其中一種加速器類型。

  • GPU_COUNT:節點範本指定的 GPU 總數,要連接至這個 VM。預設值為 1。

  • SSD_INTERFACE:本機 SSD 介面類型。只有透過支援本機 SSD 的節點範本建立的執行個體,才能設定這項屬性。如果在建立執行個體時指定這個選項,但節點範本不支援本機 SSD,則執行個體建立作業會失敗。如果開機磁碟映像檔驅動程式已針對 NVMe 進行最佳化,請設為 nvme,否則請設為 scsi。請為每個本機 SSD 分區指定這個旗標和對應的值。

REST

使用 instances.insert 方法在單一租戶節點群組上佈建 VM:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/VM_ZONE/instances
{ "machineType": "zones/MACHINE_TYPE_ZONE/machineTypes/MACHINE_TYPE", "name": "VM_NAME", "scheduling": { "onHostMaintenance": MAINTENANCE_POLICY, "automaticRestart": RESTART_ON_FAILURE, "nodeAffinities": [ { "key": "compute.googleapis.com/node-group-name", "operator": "IN", "values": [ "GROUP_NAME" ] } ] }, "networkInterfaces": [ { "network": "global/networks/NETWORK", "subnetwork": "regions/REGION/subnetworks/SUBNETWORK" } ], "guestAccelerators": [ { "acceleratorType": GPU_TYPE, "acceleratorCount": GPU_COUNT } ], "disks": [ { "boot": true, "initializeParams": { "sourceImage": "projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY" } }, { "type":"SCRATCH", "initializeParams":{ "diskType":"zones/LOCAL_SSD_ZONE/diskTypes/local-ssd" }, "autoDelete":true, "interface":"SSD_INTERFACE" } ] }

更改下列內容:

  • PROJECT_ID:專案 ID。

  • VM_ZONE:要佈建單一租戶 VM 的可用區。

  • MACHINE_TYPE_ZONE:機器類型的可用區。

  • MACHINE_TYPE:單一租戶 VM 的機型。使用 machineTypes.list 方法,取得專案可用的機器類型清單。

  • VM_NAME:新單一租戶 VM 的名稱。

  • MAINTENANCE_POLICY:指定維護事件期間單一租戶 VM 的重新啟動行為。設為下列任一值:

    • MIGRATE:在維護事件期間,VM 會遷移至節點群組中的另一個節點。

    • TERMINATE:VM 在維護事件期間停止。

  • RESTART_ON_FAILURE:指出單一租戶 VM 是否會在停止後重新啟動。預設值為 true。

  • GROUP_NAME:要佈建 VM 的節點群組名稱。

  • NETWORK:這個 VM 的網路資源網址。

  • REGION:包含這個 VM 子網路的區域。

  • SUBNETWORK:這個 VM 的子網路資源網址。

  • GPU_TYPE:GPU 類型。設定為建立節點範本時指定的其中一種加速器類型。

  • GPU_COUNT:要附加至這個 VM 的 GPU 總數,由節點範本指定。預設值為 1。

  • IMAGE_PROJECT:映像檔系列的映像檔專案。

  • IMAGE_FAMILY:用於建立 VM 的映像檔映像檔系列。

  • LOCAL_SSD_ZONE:本機 SSD 的可用區。

  • SSD_INTERFACE:本機 SSD 介面類型。 如果開機磁碟映像檔驅動程式已針對 NVMe 進行最佳化,請設為 NVME,否則請設為 SCSI。

佈建一組單一租戶 VM

代管執行個體群組 (MIG) 可讓您佈建一組相同的專屬租戶 VM。相依性標籤可讓您指定要佈建單一租戶 VM 群組的單一租戶節點或節點群組。

如果是區域 MIG,您必須在區域 MIG 的每個可用區中建立節點群組,並在區域 MIG 的執行個體範本中,為這些節點群組指定節點相依性。

gcloud

  1. 使用 gcloud compute instance-templates create 指令,為要在單一租戶節點群組中建立的一組 VM,建立代管執行個體群組範本:

    gcloud compute instance-templates create INSTANCE_TEMPLATE \
      --machine-type=MACHINE_TYPE \
      --image-project=IMAGE_PROJECT \
      --image-family=IMAGE_FAMILY \
      --node-group=GROUP_NAME \
      [--accelerator type=GPU_TYPE,count=GPU_COUNT \]
      [--local-ssd interface=SSD_INTERFACE]
    

    更改下列內容:

    • INSTANCE_TEMPLATE:新執行個體範本的名稱。

    • MACHINE_TYPE:單一租戶 VM 的機器類型。使用 gcloud compute machine-types list 指令取得專案可用的機型清單。

    • IMAGE_PROJECT:映像檔系列的映像檔專案。

    • IMAGE_FAMILY:用於建立 VM 的映像檔映像檔系列。

    • GROUP_NAME:要佈建 VM 的節點群組名稱。或者,如要使用這個執行個體範本建立存在於多個可用區的區域性 MIG,請使用 --node-affinity-file 旗標,為區域性 MIG 的節點群組指定值清單。

    • GPU_TYPE:GPU 類型。設定為建立節點範本時指定的其中一種加速器類型。

    • GPU_COUNT:要附加至這個 VM 的 GPU 總數,由節點範本指定。預設值為 1。

    • SSD_INTERFACE:本機 SSD 介面類型。如果開機磁碟映像檔驅動程式已針對 NVMe 最佳化,請設為 nvme,否則請設為 scsi。針對每個本機 SSD 分割區,指定這個旗標和對應的值一次。

  2. 使用 gcloud compute instance-groups managed create 指令,在單一租戶節點群組中建立代管執行個體群組:

    gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \
      --size=SIZE \
      --template=INSTANCE_TEMPLATE \
      --zone=ZONE
    

    更改下列內容:

    • INSTANCE_GROUP_NAME:這個執行個體群組的名稱。

    • SIZE:這個執行個體群組要包含的 VM 數量。節點群組必須有足夠的資源,才能容納這個代管執行個體群組中的執行個體。使用代管執行個體群組自動配置器,自動管理代管執行個體群組的大小。

    • INSTANCE_TEMPLATE:用於建立這個 MIG 的執行個體範本名稱。範本必須有一或多個指向適當節點群組的節點親和性標籤。

    • ZONE:要建立代管執行個體群組的可用區。如果是區域性 MIG,請將 --zone 旗標替換為 --region 旗標並指定區域,同時新增 --zones 旗標,指定節點群組所在的所有可用區。

REST

  1. 使用 instanceTemplates.insert 方法,在單一租戶節點群組中建立代管執行個體群組範本:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/TEMPLATE_ZONE/instance-templates
    { "name": "INSTANCE_TEMPLATE", "properties": { "machineType": "zones/MACHINE_TYPE_ZONE/machineTypes/MACHINE_TYPE", "scheduling": { "nodeAffinities": [ { "key": "compute.googleapis.com/node-group-name", "operator": "IN", "values": [ "GROUP_NAME" ] } ] }, "networkInterfaces": [ { "network": "global/networks/NETWORK", "subnetwork": "regions/REGION/subnetworks/SUBNETWORK" } ], "guestAccelerators": [ { "acceleratorType": GPU_TYPE, "acceleratorCount": GPU_COUNT } ], "disks": [ { "boot": true, "initializeParams": { "sourceImage": "projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY" } }, { "type":"SCRATCH", "initializeParams":{ "diskType":"zones/LOCAL_SSD_ZONE/diskTypes/local-ssd" }, "autoDelete":true, "interface":"SSD_INTERFACE" } ] } }

    更改下列內容:

    • PROJECT_ID:專案 ID。

    • TEMPLATE_ZONE:要在其中建立執行個體範本的可用區。

    • INSTANCE_TEMPLATE:新執行個體範本的名稱。

    • MACHINE_TYPE_ZONE:機器類型的可用區。

    • MACHINE_TYPE:單一租戶 VM 的機器類型。使用 machineTypes.list 方法取得專案可用的機型清單。

    • GROUP_NAME:要佈建 VM 的節點群組名稱。如要使用這個執行個體範本建立區域性 MIG,且該 MIG 存在於多個可用區,請指定與區域性 MIG 可用區位於相同可用區的節點群組清單。

    • NETWORK:這個執行個體範本的網路資源網址。

    • REGION:包含這個執行個體範本子網路的區域。

    • SUBNETWORK:這個執行個體範本的子網路資源網址。

    • GPU_TYPE:GPU 類型。設為建立節點範本時指定的其中一種加速器類型。

    • GPU_COUNT:要附加至這個 VM 的節點範本指定 GPU 總數。預設值為 1。

    • IMAGE_PROJECT:映像檔系列的映像檔專案。

    • IMAGE_FAMILY:用於建立 VM 的映像檔映像檔系列。

    • LOCAL_SSD_ZONE:本機 SSD 的可用區。

    • SSD_INTERFACE:本機 SSD 介面類型。 如果開機磁碟映像檔驅動程式已針對 NVMe 進行最佳化,請設為 NVME,否則請設為 SCSI。

  2. 使用 instanceGroupManagers.insert 方法,根據先前建立的執行個體範本,在單一租戶節點群組中建立 MIG。或者,如要建立區域性 MIG,請使用 regionInstanceGroupManagers.insert 方法,並指定所有節點群組的區域和可用區,如執行個體範本中所述。

    舉例來說,如要建立可用區 MIG,請使用下列要求:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers
    {
      "baseInstanceName": "NAME_PREFIX",
      "name": "INSTANCE_GROUP_NAME",
      "targetSize": SIZE,
      "instanceTemplate": "global/instanceTemplates/INSTANCE_TEMPLATE"
    }
    

    更改下列內容:

    • PROJECT_ID:專案 ID。

    • ZONE:要建立代管執行個體群組的可用區。

    • NAME_PREFIX:代管執行個體群組中每個執行個體的前置字元名稱。

    • INSTANCE_GROUP_NAME:執行個體群組的名稱。

    • SIZE:要納入這個執行個體群組的 VM 數量。節點群組必須有足夠的資源,才能容納這個代管執行個體群組中的執行個體。使用代管執行個體群組自動配置器,自動管理代管執行個體群組的大小。

    • INSTANCE_TEMPLATE:用於建立這個群組的執行個體範本網址。範本必須有指向適當節點群組的節點親和性標籤。

設定節點相依性標籤

節點相依性標籤可讓您以邏輯方式將節點群組分組,並在特定節點群組中排定 VM 的時間。您也可以使用節點相似度標籤,在不同可用區的節點群組中排定 VM,並將節點群組保留在邏輯群組中。下列程序示範如何使用相似度標籤,將 VM 與用於正式環境工作負載的特定節點群組建立關聯。這個範例說明如何排定單一 VM 的排程,但您也可以使用代管執行個體群組,排定一組 VM 的排程。

gcloud

  1. 使用 gcloud compute sole-tenancy node-templates create 指令,為生產環境工作負載建立一組親和性標籤的節點範本:

    gcloud compute sole-tenancy node-templates create prod-template \
      --node-type=n1-node-96-624 \
      --node-affinity-labels workload=frontend,environment=prod
    
  2. 使用 gcloud compute sole-tenancy node-templates describe 指令查看指派給節點範本的節點親和性標籤。

  3. 使用 gcloud compute sole-tenancy node-groups create 指令建立使用正式版範本的節點群組:

    gcloud compute sole-tenancy node-groups create prod-group \
      --node-template=prod-template \
      --target-size=1
    
  4. 針對正式版 VM,請建立 node-affinity-prod.json 檔案,指定正式版 VM 的親和性。舉例來說,您可以建立檔案,指定 VM 只能在同時具有 workload=frontend 和 environment=prod 親和性的節點上執行。使用 Cloud Shell 建立節點親和性檔案,或在您選擇的位置建立檔案。

    [
      {
        "key" : "workload",
        "operator" : "IN",
        "values" : ["frontend"]
      },
      {
        "key" : "environment",
        "operator" : "IN",
        "values" : ["prod"]
      }
    ]
    
  5. 使用 node-affinity-prod.json 檔案搭配 gcloud compute instances create 指令,在具有相符親和性標籤的節點群組上排定 VM。

    gcloud compute instances create prod-vm \
      --node-affinity-file node-affinity-prod.json \
      --machine-type=n1-standard-2
    
  6. 使用 gcloud compute instances describe 指令並查看 scheduling 欄位,即可查看指派給 VM 的節點親和性。

設定節點反相依性標籤

節點親和性標籤可設定為反親和性標籤,防止 VM 在特定節點上執行。舉例來說,您可以使用反親和性標籤,防止用於開發目的的 VM 與正式版 VM 排定在相同節點上。以下範例說明如何使用相似度標籤,防止 VM 在特定節點群組上執行。這個範例說明如何排定單一 VM 的時間表,但您也可以使用代管執行個體群組排定一組 VM 的時間表。

gcloud

  1. 如為開發 VM,請建立 node-affinity-dev.json,並使用 Cloud Shell 或在您選擇的位置建立,藉此指定開發 VM 的親和性。舉例來說,您可以建立檔案,將 VM 設為在具有 workload=frontend 親和性的任何節點群組上執行,只要不是 environment=prod 即可:

    [
      {
        "key" : "workload",
        "operator" : "IN",
        "values" : ["frontend"]
      },
      {
        "key" : "environment",
        "operator" : "NOT_IN",
        "values" : ["prod"]
      }
    ]
    
  2. 使用 node-affinity-dev.json 檔案和 gcloud compute instances create 指令建立開發 VM:

    gcloud compute instances create dev-vm \
      --node-affinity-file=node-affinity-dev.json \
      --machine-type=n1-standard-2
    
  3. 使用 gcloud compute instances describe 指令,並檢查 scheduling 欄位,即可查看指派給 VM 的節點反親和性。

後續步驟