本文說明如何選擇性地將設定更新套用至代管執行個體群組 (MIG) 中的虛擬機器 (VM) 執行個體。
Compute Engine 會根據您使用的設定元件 (執行個體範本、選用的所有執行個體設定,以及選用的具狀態設定),維護 MIG 中的 VM。
每當您變更這些元件來更新 MIG 的 VM 設定時,Compute Engine 會自動將更新後的設定套用至新增至群組的 VM。
如要將更新後的設定套用至現有 VM,可以設定選擇性更新 (也稱為「機會性」更新類型)。這類更新具有下列優點:
- 您可以選取要更新的 VM。
- 你可以控制更新時間和順序。
- 您可以使用 gcloud CLI 或 REST 立即更新所有 VM。
或者,如要自動將新設定發布至 MIG 中所有或隨機選取的 VM 子集,請參閱「在 MIG 中自動套用 VM 設定更新」。如要瞭解如何決定,請參閱「將新設定套用至現有 VM 的方法」。
事前準備
-
如果尚未設定驗證,請先完成設定。
「驗證」是指驗證身分的程序,確認您有權存取 Trusted Cloud by S3NS 服務和 API。如要從本機開發環境執行程式碼或範例,請選取下列任一選項,向 Compute Engine 進行驗證:
Select the tab for how you plan to use the samples on this page:
Console
When you use the Trusted Cloud console to access Trusted Cloud by S3NS services and APIs, you don't need to set up authentication.
gcloud
-
安裝 Google Cloud CLI,然後 使用同盟身分登入 gcloud CLI。 登入後,執行下列指令初始化 Google Cloud CLI:
gcloud init
- Set a default region and zone.
REST
如要在本機開發環境中使用本頁的 REST API 範例,請使用您提供給 gcloud CLI 的憑證。
安裝 Google Cloud CLI,然後 使用同盟身分登入 gcloud CLI。 登入後,執行下列指令初始化 Google Cloud CLI:
gcloud init
詳情請參閱 Trusted Cloud 驗證說明文件中的「Authenticate for using REST」。
將更新後的設定套用至所選 VM
請務必將群組的更新政策類型設為「投機」,避免 MIG 自動將新的 VM 設定套用至現有 VM。詳情請參閱「查看群組的更新政策類型」。
然後使用 gcloud CLI 或 REST 更新 MIG 的設定,並將最新設定套用至群組中的特定 VM 或所有 VM。
gcloud
如要為群組設定新的執行個體範本,可以使用
set-instance-template
指令。gcloud compute instance-groups managed set-instance-template INSTANCE_GROUP_NAME \ --template=INSTANCE_TEMPLATE
將設定套用至特定 VM
如要將更新後的設定套用至特定 VM,請使用
update-instances
指令搭配--instances
旗標。gcloud compute instance-groups managed update-instances INSTANCE_GROUP_NAME \ --instances INSTANCE_NAMES \ --most-disruptive-allowed-action DISRUPTION_LEVEL \ --minimal-action DISRUPTION_LEVEL
將設定套用至所有 VM
如要將更新後的設定套用至所有 VM,請使用
update-instances
指令搭配--all-instances
旗標。gcloud compute instance-groups managed update-instances INSTANCE_GROUP_NAME \ --all-instances \ --most-disruptive-allowed-action DISRUPTION_LEVEL \ --minimal-action DISRUPTION_LEVEL
更改下列內容:
INSTANCE_GROUP_NAME
:MIG 的名稱INSTANCE_TEMPLATE
:新的執行個體範本INSTANCE_NAMES
:要套用範本的 VM 清單DISRUPTION_LEVEL
:最小或最大干擾程度:none
、refresh
、restart
或replace
- 預設的最小動作為
none
- 允許的最大干擾動作預設為
replace
- 預設的最小動作為
REST
如要為群組設定新的執行個體範本,請在區域或地區 MIG 上呼叫
patch
方法,然後更新versions.instanceTemplate
欄位。如要避免系統自動將新範本發布至群組中的所有 VM,請將updatePolicy.type
欄位設為OPPORTUNISTIC
。PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME { "updatePolicy": { "type": "OPPORTUNISTIC" }, "versions": [{ "instanceTemplate": "global/instanceTemplates/NEW_TEMPLATE", }] }
將設定套用至特定 VM
如要將更新後的設定套用至特定 VM,請為區域或區域 MIG 呼叫
applyUpdatesToInstances
方法,並在要求中指定 VM 清單。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME/applyUpdatesToInstances { "instances": [ "zones/ZONE/instances/INSTANCE_NAME_1", "zones/ZONE/instances/INSTANCE_NAME_2" ], "minimalAction": DISRUPTION_LEVEL, "mostDisruptiveAllowedAction": DISRUPTION_LEVEL }
將設定套用至所有 VM
如要將更新後的設定套用至所有現有 VM,請將
allInstances
欄位設為true
:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME/applyUpdatesToInstances { "allInstances": true, "minimalAction": DISRUPTION_LEVEL, "mostDisruptiveAllowedAction": DISRUPTION_LEVEL }
更改下列內容:
INSTANCE_GROUP_NAME
:群組名稱NEW_TEMPLATE
:新範本的名稱ZONE
:要更新的執行個體可用區INSTANCE_NAME_1
和INSTANCE_NAME_2
:要更新的 VM 名稱DISRUPTION_LEVEL
:最小或最大干擾程度:NONE
、REFRESH
、RESTART
或REPLACE
minimalAction
的預設值為NONE
。mostDisruptiveAllowedAction
的預設值為REPLACE
。
applyUpdatesToInstances
與其他的代管執行個體群組方法類似,都是意圖式的,這代表該方法會傳回作業回應。這項作業可能需要一段時間才能完成。提出要求後,您可以查看狀態,確認更新是否完成。
在選擇性更新期間控制中斷程度
視更新的性質而定,更新作業可能會干擾執行個體的狀態。舉例來說,如要變更執行個體的開機磁碟,就必須取代執行個體。您可以設定下列選項,控制選擇性更新期間的干擾程度:
最少動作:使用這個選項盡可能減少干擾,或套用干擾程度高於必要動作的動作。
- 為盡可能減少中斷,請將最低動作設為
NONE
。如果更新作業需要干擾程度較大的動作,Compute Engine 就會執行該動作。 - 如要套用干擾程度超出必要範圍的動作,請將最少動作設為
RESTART
或REPLACE
。舉例來說,Compute Engine 不必重新啟動 VM,即可變更 VM 的中繼資料。但如果應用程式只會在 VM 重新啟動時讀取執行個體中繼資料,您可以將最低動作設為RESTART
,以便擷取中繼資料變更。
- 為盡可能減少中斷,請將最低動作設為
允許的最大干擾動作:如果更新作業所需的干擾程度超出您的承受範圍,請使用這個選項禁止更新。如果您的更新作業需要執行干擾程度超出您利用此標記所設定的動作,更新要求就會失敗。舉例來說,如果您將允許的最大干擾動作設為
RESTART
,則嘗試更新開機磁碟映像檔就會失敗,因為該更新作業需要重新建立執行個體,而這動作的干擾程度比重新啟動的干擾程度還要大。
更新所選 VM 時,這兩個選項都接受下列值:
值 說明 可以更新哪些執行個體屬性? NONE
完全不干擾執行個體。 無 REFRESH
不會停止執行個體。 其他磁碟、執行個體中繼資料、標籤、標記 RESTART
會停止執行個體,然後重新啟動。 其他磁碟、執行個體中繼資料、標籤、標記、機型 REPLACE
會刪除執行個體,然後重新建立。 儲存在執行個體範本或個別執行個體設定中的所有執行個體屬性 允許的最大干擾動作所造成的干擾情況不能小於最小動作。
選取要更新的 VM 時,系統會套用下列預設值:
- 預設最少動作是
NONE
,可盡量減少干擾。 - 允許的最大干擾動作預設為
REPLACE
。如果無法承受這類干擾,請將允許的最大干擾動作設為干擾程度較低的動作。
後續步驟
- 瞭解如何查看 MIG 和代管 VM 的相關資訊。
- 瞭解如何建立執行個體範本。
- 瞭解如何使用映像檔系列和滾動式取代,更新 MIG 中所有 VM 的 OS 映像檔。
除非另有註明,否則本頁面中的內容是採用創用 CC 姓名標示 4.0 授權,程式碼範例則為阿帕契 2.0 授權。詳情請參閱《Google Developers 網站政策》。Java 是 Oracle 和/或其關聯企業的註冊商標。
上次更新時間:2025-08-18 (世界標準時間)。
[[["容易理解","easyToUnderstand","thumb-up"],["確實解決了我的問題","solvedMyProblem","thumb-up"],["其他","otherUp","thumb-up"]],[["缺少我需要的資訊","missingTheInformationINeed","thumb-down"],["過於複雜/步驟過多","tooComplicatedTooManySteps","thumb-down"],["過時","outOfDate","thumb-down"],["翻譯問題","translationIssue","thumb-down"],["示例/程式碼問題","samplesCodeIssue","thumb-down"],["其他","otherDown","thumb-down"]],["上次更新時間:2025-08-18 (世界標準時間)。"],[[["This document explains how to selectively update the configuration of virtual machines (VMs) within a managed instance group (MIG), allowing control over which VMs are updated and when."],["Selective updates, also known as \"opportunistic\" updates, enable users to choose specific VMs for updates, manage the update timing, and use gcloud CLI or REST for immediate updates."],["The gcloud CLI or REST API can be used to update either specific VMs or all VMs within a MIG to a new configuration."],["Users can manage the level of disruption during selective updates by specifying a minimal action (e.g., `NONE`, `REFRESH`, `RESTART`) and a most disruptive allowed action (e.g., `REPLACE`), with defaults being `NONE` and `REPLACE` respectively."],["Before doing any updates, you must set your instance group update policy to opportunistic to prevent automatic updates, then set the updated information accordingly, as well as the required permissions to run these updates."]]],[]] -