本文說明如何在代管執行個體群組 (MIG) 中,針對虛擬機器 (VM) 執行個體選擇性套用設定更新。
Compute Engine 會根據您使用的設定元件維護 MIG 中的 VM,包括執行個體範本、選用的全執行個體設定,以及選用的有狀態設定。
每當您透過變更這些元件來更新 MIG 的 VM 設定時,Compute Engine 就會自動將更新後的設定套用至群組中新增的 VM。
如要將更新後的設定套用至現有 VM,您可以設定選擇性更新 (也稱為「機會」更新類型)。這類更新有以下優點:
- 您可以選取要更新的 VM。
- 您可以控制更新的時間和順序。
- 您可以使用 gcloud CLI 或 REST 立即更新所有 VM。
或者,如果您想自動將新設定套用至 MIG 中的所有 VM,或隨機套用至部分 VM,請參閱「在 MIG 中自動套用 VM 設定更新」。如要進一步瞭解如何決定是否要這樣做,請參閱「將新設定套用至現有 VM 的方法」。
事前準備
-
如果尚未設定,請先設定驗證機制。驗證是指驗證身分,以便存取 Google Cloud 服務和 API 的程序。如要在本機開發環境中執行程式碼或範例,您可以選取下列任一選項,向 Compute Engine 進行驗證:
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
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.
- 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
請確認群組的更新政策類型設為「投機」,以免 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,請為區域或regional 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 時讀取執行個體中繼資料,您可以將最小動作設為RESTART
,以便擷取中繼資料變更。
- 為盡可能減少中斷情形,請將最小動作設為
允許的最大干擾動作:如果更新作業需要執行的干擾程度超過您能承受的範圍,請使用這個選項禁止更新。如果您的更新作業需要執行干擾程度超出您利用此標記所設定的動作,更新要求就會失敗。舉例來說,如果您將允許的最大干擾動作設為
RESTART
,則嘗試更新開機磁碟映像檔的更新就會失敗,因為該更新作業需要重新建立執行個體,而這動作的干擾程度比重新啟動的干擾程度還要大。
更新所選 VM 時,這兩個選項都會接受下列值:
值 | 說明 | 可以更新哪些執行個體屬性? |
---|---|---|
NONE | 完全不干擾執行個體。 | 無 |
REFRESH | 不會停止執行個體。 | 其他磁碟、執行個體中繼資料、標籤和標記 |
RESTART | 會停止執行個體,然後重新啟動。 | 其他磁碟、執行個體中繼資料、標籤、標記和機器類型 |
REPLACE | 會刪除執行個體,然後重新建立。 | 儲存在執行個體範本或個別執行個體設定中的所有執行個體屬性 |
允許的最大干擾動作所造成的干擾程度,不能小於最小動作。
選擇性更新 VM 時,系統會套用下列預設值:
- 預設的最小動作是
NONE
,可盡可能減少干擾。 - 預設的最大干擾動作是
REPLACE
。如果您無法容忍這種干擾,請將允許的最大干擾動作設為較不干擾的動作。
後續步驟
- 瞭解如何查看 MIG 和代管 VM 的相關資訊。
- 瞭解如何建立執行個體範本。
- 瞭解如何使用映像檔系列和滾動式取代功能,在 MIG 中的所有 VM 上更新作業系統映像檔。