本文說明如何選擇性地將設定更新套用至代管執行個體群組 (MIG) 中的虛擬機器 (VM) 執行個體。
Compute Engine 會根據您使用的設定元件 (執行個體範本、選用的所有執行個體設定,以及選用的具狀態設定),維護 MIG 中的 VM。
每當您變更這些元件來更新 MIG 的 VM 設定時,Compute Engine 會自動將更新後的設定套用至新增至群組的 VM。
如要將更新後的設定套用至現有 VM,您可以設定選擇性更新,又稱為「機會性」更新類型。這類更新具有下列優點:
- 您可以選取要更新的 VM。
- 您可以控管更新時間和順序。
- 您可以使用 gcloud CLI 或 REST 立即更新所有 VM。
或者,如要自動將新設定發布至 MIG 中的所有 VM 或隨機子集,請參閱「在 MIG 中自動套用 VM 設定更新」。如要瞭解如何決定,請參閱「將新設定套用至現有 VM 的方法」。
事前準備
-
如果尚未設定驗證,請先完成設定。
驗證可確認您的身分,以便存取 Google Cloud 服務和 API。如要從本機開發環境執行程式碼或範例,請選取下列其中一個選項,向 Compute Engine 進行驗證:
選取這個頁面上範例的預計用途分頁:
控制台
使用 Google Cloud 控制台存取 Google Cloud 服務和 API 時,不需要設定驗證。
gcloud
-
安裝 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 進行驗證」。
將更新後的設定套用至所選 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或REPLACEminimalAction的預設值為NONE。mostDisruptiveAllowedAction的預設值為REPLACE。
applyUpdatesToInstances 與其他的代管執行個體群組方法類似,都是意圖式的,這代表該方法會傳回作業回應。這項作業可能需要一段時間才能完成。
提出要求後,您可以查看狀態,確認更新是否完成。
在選擇性更新期間控管中斷程度
視更新性質而定,更新可能會中斷執行個體的狀態。舉例來說,如要變更執行個體的開機磁碟,必須更換執行個體。您可以設定下列選項,控制選擇性更新期間的中斷程度:
最小動作:使用這個選項可盡量減少干擾,或套用比必要動作更具干擾性的動作。
- 為盡可能減少中斷,請將最小動作設為
NONE。如果更新需要採取較具干擾性的動作,Compute Engine 會執行必要動作來執行更新。 - 如要採取比必要行動更具干擾性的動作,請將最小動作設為
RESTART或REPLACE。舉例來說,Compute Engine 不必重新啟動 VM 即可變更其元資料。不過,如果應用程式只會在 VM 重新啟動時讀取執行個體中繼資料,您可以將最小動作設為RESTART,以便擷取中繼資料變更。
- 為盡可能減少中斷,請將最小動作設為
允許的中斷程度最高動作:如果更新造成的中斷程度超出可接受範圍,請使用這個選項避免更新。如果更新需要比您使用這個旗標設定的更具破壞性的動作,更新要求就會失敗。舉例來說,如果將允許的最具破壞性動作設為
RESTART,則更新開機磁碟映像檔的嘗試會失敗,因為更新需要重建執行個體,這比重新啟動更具破壞性。
更新所選 VM 時,這兩個選項都接受下列值:
| 值 | 說明 | 可以更新哪些執行個體屬性? |
|---|---|---|
NONE |
完全不會中斷執行個體。 | 無 |
REFRESH |
請勿停止執行個體。 | 額外磁碟、Dynamic Network Interface (NIC)、執行個體中繼資料、標籤、標記 |
RESTART |
會停止執行個體,然後重新啟動。 | 額外的磁碟、動態 NIC、執行個體中繼資料、標籤、標記、機型 |
REPLACE |
會刪除執行個體,然後重新建立。 | 執行個體範本或個別執行個體設定中儲存的所有執行個體屬性 |
允許的最具破壞性動作,不得比最小動作更不具破壞性。
選擇性更新 VM 時,系統會套用下列預設值:
- 預設的最低動作為
NONE,可盡可能減少中斷情形。 - 預設允許的最干擾動作為
REPLACE。如果無法容忍這類中斷,請將允許的最干擾動作設為較不干擾。
後續步驟
- 瞭解如何查看 MIG 和受管理 VM 的相關資訊。
- 瞭解如何建立執行個體範本。
- 瞭解如何使用映像檔系列和輪替取代功能,更新 MIG 中所有 VM 的 OS 映像檔。