本頁說明如何使用全執行個體設定,為代管執行個體群組 (MIG) 中的所有虛擬機器 (VM) 執行個體設定標籤和中繼資料屬性,而不必建立新的執行個體範本。
您仍可使用執行個體範本,在 MIG 中設定執行個體屬性。不過,在某些情況下,使用 MIG 的所有執行個體設定會比較簡單,例如:
您需要經常更新執行個體中繼資料或標籤,且不想每次都建立新範本,請注意,執行個體範本是不可變動的,也就是說,建立後就無法修改。
您想根據一個執行個體範本建立多個 MIG,但需要為每個 MIG 設定不同的標籤或中繼資料。舉例來說,如果您有一個應用程式,但想支援開發、測試和實際工作環境,您可以建立單一執行個體範本,並為每個環境設定不同的所有執行個體設定,藉此在所有環境中重複使用該範本。
您有一個團隊負責基礎架構和映像檔,另一個團隊則執行需要設定的應用程式。您可以讓一個團隊使用執行個體範本佈建基礎架構,同時讓應用程式團隊透過所有執行個體通用的設定管理應用程式設定。
您在 VM 上執行代理程式,並想使用中繼資料進行設定。您希望即使群組的執行個體範本變更,VM 代理程式設定仍會保留。使用執行個體範本控管應用程式版本,並透過所有執行個體設定來設定 VM 代理程式。
如果您同時使用 MIG 的執行個體範本和所有執行個體設定來設定相同屬性,MIG 會優先採用所有執行個體設定中的值。舉例來說,如果 MIG 執行個體範本中的 enable-guest-attributes
中繼資料設為 FALSE
,而 MIG 所有執行個體設定中的 enable-guest-attributes
設為 TRUE
,則 Compute Engine 會在群組中的所有執行個體套用 TRUE
。這樣一來,您就能使用所有執行個體設定,覆寫執行個體範本中定義的屬性。
事前準備
- 建立代管執行個體群組
-
如果尚未設定驗證,請先完成設定。
驗證可確認您的身分,以便存取 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
-
安裝 Google Cloud CLI。 安裝完成後,執行下列指令初始化 Google Cloud CLI:
gcloud init
如果您使用外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。
- Set a default region and zone.
REST
如要在本機開發環境中使用本頁的 REST API 範例,請使用您提供給 gcloud CLI 的憑證。
安裝 Google Cloud CLI。 安裝完成後,執行下列指令初始化 Google Cloud CLI:
gcloud init
如果您使用外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。
詳情請參閱 Google Cloud 驗證說明文件中的「Authenticate for using REST」。
限制
您只能使用全執行個體設定,覆寫下列執行個體範本屬性:
- 中繼資料
- 標籤
您無法對所有執行個體的設定進行 Canary 更新。將設定套用至群組時,Compute Engine 會將屬性套用至所有新執行個體,並根據更新政策套用至現有執行個體。如要控管現有執行個體的更新時間,可以使用選擇性更新。
如果您在 MIG 中使用具狀態的設定,就無法在任何個別執行個體設定中設定相同屬性,也無法同時在群組的所有執行個體設定中設定相同屬性。
在適用於所有執行個體的設定中設定屬性
使用 gcloud CLI 或 REST 建立及更新 MIG 的所有執行個體設定。
主控台
前往 Google Cloud 控制台的「Instance groups」(執行個體群組) 頁面。
選取要設定適用於所有執行個體設定的 MIG。
按一下 [編輯]。
按一下「執行個體範本和覆寫」展開該部分。
在「All-instances configuration」(所有執行個體設定) 區段中,執行下列操作:
- 如要新增或更新中繼資料值,請按一下「管理中繼資料」。完成設定,然後按一下「儲存」。
- 如要新增或更新標籤,請按一下「管理標籤」。完成設定,然後按一下「儲存」。
在所有執行個體設定中完成屬性設定後,按一下「儲存」。
如果 MIG 的更新類型設為「自動」,系統會立即將您設定的所有執行個體設定套用至所有現有 VM。如果更新類型為「選擇性」,則必須選擇性地將設定套用至現有 VM。詳情請參閱「將所有執行個體設定套用至現有 VM」一文。
gcloud
使用
all-instances-config update
指令新增或更新所有執行個體的設定。gcloud compute instance-groups managed all-instances-config update INSTANCE_GROUP_NAME \ --metadata=KEY1=VALUE1,KEY2=VALUE2 \ --labels=KEY3=VALUE3,KEY4=VALUE4
更改下列內容:
INSTANCE_GROUP_NAME
:MIG 的名稱。KEYS
和VALUES
:標籤或中繼資料的鍵/值組合。如果金鑰不存在,更新指令會新增金鑰。如果是現有鍵,系統會更新其值。
請記得套用更新後的設定至 MIG 中的現有 VM。
REST
如要新增或更新適用於所有執行個體的設定,請對區域性或地區性 MIG 提出
PATCH
要求。PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME { "allInstancesConfig": { "properties": { "metadata": { "KEY1": "VALUE1", ... }, "labels": { "KEY2": "VALUE2", ... }, } } }
更改下列內容:
PROJECT_ID
:代管執行個體群組所在的專案。REGION
:MIG 所在的區域。如果是區域 MIG,請將regions/REGION
替換為zones/ZONE
。INSTANCE_GROUP_NAME
:MIG 的名稱。KEYS
和VALUES
:標籤或中繼資料的鍵/值組合。如果該鍵不存在,要求會新增該鍵。如果是現有鍵,系統會更新其值。
請記得套用更新後的設定至 MIG 中的現有 VM。
將適用於所有執行個體的設定套用至現有 VM
您為 MIG 中的 VM 指定的VM 設定,會自動套用至新增至群組的 VM。
如要將更新後的 VM 設定 (包括更新後的所有執行個體設定) 套用至群組中的現有 VM,請使用下列其中一種方法:
- 自動 (主動):如果您希望 MIG 自動將新設定套用至群組中的所有或部分現有 VM,請使用這個方法。執行中 VM 的中斷程度取決於您設定的更新政策。您可以使用這個方法,以 Canary 方式更新新的執行個體範本。如要使用這個方法,請將 MIG 的更新類型設為「主動」。
- 選擇性 (隨機式):如要手動套用更新,或一次更新群組中的所有現有 VM,請使用這個方法。您可以指定要將哪些 VM 更新為最新設定,如要使用這個方法,請將 MIG 的更新類型設為「投機」。
- 重新建立 VM:在 MIG 中重新建立 VM 時,MIG 會套用尚未套用至該 VM 的任何更新設定。詳情請參閱「在 MIG 中重新建立 VM」一文。
自動 (主動)
如果您想在每次變更所有執行個體的設定時,自動將更新套用至所有現有 VM,請將群組的更新政策類型設為「主動」。詳情請參閱「自動 (主動) 更新類型」。
您可以透過選用的 maxUnavailable、maxSurge 和 minReadySec 設定,控制主動式設定發布的速度。
您只需設定一次,即可使用主動式更新。之後,MIG 會根據群組更新政策中的設定,自動將所有未來的 VM 設定變更 (即群組的所有執行個體設定、執行個體範本和每個執行個體設定的變更) 套用至群組中的所有 VM。
如要自動套用設定更新,請使用 gcloud CLI 或 REST。
gcloud
您可以使用
update
指令設定自動 (主動) 更新。gcloud compute instance-groups managed update INSTANCE_GROUP_NAME \ --update-policy-type=proactive \ --update-policy-max-unavailable=MAX_UNAVAILABLE \ --update-policy-max-surge=MAX_SURGE \ --update-policy-min-ready=MIN_READY \ --update-policy-minimal-action=MINIMAL_ACTION \ --update-policy-replacement-method=REPLACEMENT_METHOD
更改下列內容:
INSTANCE_GROUP_NAME
:MIG 的名稱。MAX_UNAVAILABLE
(選用):更新期間可停機的執行個體數量上限。舉例來說,如果將update-minimal-action
旗標設為restart
,這個旗標就會限制一次重新啟動的 VM 數量。可以是固定數量 (例如5
),也可以是代管執行個體群組大小的百分比 (例如10%
)。MAX_SURGE
(選用):更新期間可建立的執行個體數量上限。可以是固定數量 (例如5
),也可以是代管執行個體群組大小的百分比 (例如10%
)。MIN_READY
(選用):重新啟動或取代的 VM 準備完成可供使用的最短時間。例如10s
代表 10 秒。如要瞭解時間長度格式,請參閱 gcloud topic datetimes。MINIMAL_ACTION
(選用):在設定更新期間,對每個執行個體執行的動作:refresh
:在執行中的執行個體上套用新設定,不必重新啟動執行個體。restart
:在更新期間重新啟動 VM,如果應用程式只會在重新啟動時讀取中繼資料,這項功能就非常實用。replace
:刪除 VM 並建立新的 VM,套用新的設定。
REPLACEMENT_METHOD
(選用):指定用於取代執行個體的動作:recreate
:等待舊執行個體刪除,然後建立與舊執行個體同名的新執行個體。substitute
:建立新名稱的執行個體,並刪除舊執行個體
REST
如要設定自動 (主動式) 更新,請對區域或地區 MIG 提出
PATCH
要求。PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME { "updatePolicy": { "type": "PROACTIVE", "maxUnavailable": { "percent": MAX_UNAVAILABLE }, "maxSurge": { "percent": MAX_SURGE }, "minimalAction": MINIMAL_ACTION, "replacementMethod": REPLACEMENT_METHOD } }
更改下列內容:
PROJECT_ID
:代管執行個體群組所在的專案。REGION
:MIG 所在的區域。如果是區域 MIG,請將regions/REGION
替換為zones/ZONE
。INSTANCE_GROUP_NAME
:MIG 的名稱。MAX_UNAVAILABLE
(選用):更新期間可停機的執行個體數量上限。舉例來說,如果您將update-minimal-action
旗標設為RESTART
,這個旗標就會限制一次重新啟動的 VM 數量。可以是百分比 (例如指定"percent": 80
代表 80%) 或固定數值。如要指定固定號碼,請將"percent": MAX_UNAVAILABLE
替換為"fixed": MAX_UNAVAILABLE
。MAX_SURGE
(選用):更新期間可建立的執行個體數量上限。可以是百分比或固定數字。MINIMAL_ACTION
(選用):在設定更新期間,對每個執行個體執行的動作:REFRESH
:在執行中的執行個體上套用新設定,不必重新啟動執行個體。RESTART
:在更新期間重新啟動 VM,如果應用程式只會在重新啟動時讀取中繼資料,這項功能就非常實用。REPLACE
:刪除 VM 並建立新的 VM,套用新的設定。
REPLACEMENT_METHOD
(選用):指定用於取代執行個體的動作:RECREATE
:等待舊執行個體刪除,然後建立與舊執行個體同名的新執行個體。SUBSTITUTE
:建立新名稱的執行個體,並刪除舊執行個體
如果省略選用旗標,群組會使用群組更新政策中的值。您可以使用 gcloud CLI 或 REST 檢查更新政策。
選擇性 (機會性)
如要控管新設定的套用時間和對象,請將群組的更新政策類型設為「投機」。詳情請參閱「選擇性 (機會性) 更新類型」一文。
選擇選擇性套用設定更新時,對群組所有執行個體設定、執行個體範本或個別執行個體設定所做的任何變更,都不會自動套用至現有 VM。您必須明確將更新後的設定套用至現有 VM,才能更新這些 VM。
如要選擇性地將 VM 設定更新套用至 MIG 中的 VM,請使用 gcloud CLI 或 REST。
gcloud
您可以使用
update
指令設定選擇性 (機會性) 更新:gcloud compute instance-groups managed update INSTANCE_GROUP_NAME \ --update-policy-type=opportunistic
將群組的更新類型設為
opportunistic
時,如要將新設定套用至現有 VM,就必須啟動更新。將設定套用至特定 VM
如要更新所選執行個體,請使用下列指令:
gcloud compute instance-groups managed update-instances INSTANCE_GROUP_NAME \ --instances INSTANCE_NAMES \ --minimal-action=MINIMAL_ACTION \ --most-disruptive-allowed-action=MOST_DISRUPTIVE_ALLOWED_ACTION
將設定套用至所有 VM
如要更新所有現有執行個體,請使用下列指令:
gcloud compute instance-groups managed update-instances INSTANCE_GROUP_NAME \ --all-instances \ --minimal-action=MINIMAL_ACTION \ --most-disruptive-allowed-action=MOST_DISRUPTIVE_ALLOWED_ACTION
更改下列內容:
INSTANCE_GROUP_NAME
:MIG 的名稱。INSTANCE_NAMES
:要套用範本的執行個體清單。MINIMAL_ACTION
(選用):在設定更新期間,對每個執行個體執行的動作:refresh
(預設):在執行中的執行個體上套用新設定,但不會重新啟動執行個體。restart
:在更新期間重新啟動 VM,如果應用程式只會在重新啟動時讀取中繼資料,這項功能就非常實用。replace
:刪除 VM 並建立新的 VM,套用新的設定。
MOST_DISRUPTIVE_ALLOWED_ACTION
(選用): 對每個執行個體執行最多這個動作。如果設定更新作業需要執行干擾程度超出這裡指定的動作,更新作業就會失敗,且不會進行任何變更。none
:無動作refresh
:盡可能套用新設定,但不要停止執行個體。舉例來說,使用refresh
僅套用影響中繼資料或額外磁碟的變更。restart
:盡可能套用新設定,但不取代執行個體。舉例來說,只要停止執行個體並重新啟動,即可套用機器類型變更。replace
:根據--replacement-method
標記取代舊執行個體。
REST
您可以對可用區或區域 MIG 提出
PATCH
要求,設定局部 (機會式) 更新。PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME { "updatePolicy": { "type": "OPPORTUNISTIC" } }
將群組的更新類型設為
OPPORTUNISTIC
時,如要將新設定套用至現有 VM,就必須啟動更新。將設定套用至特定 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": MINIMAL_ACTION, "mostDisruptiveAllowedAction": MOST_DISRUPTIVE_ALLOWED_ACTION }
將設定套用至所有 VM
如要更新所有現有執行個體,請使用下列要求:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME/applyUpdatesToInstances { "allInstances": true, "minimalAction": MINIMAL_ACTION, "mostDisruptiveAllowedAction": MOST_DISRUPTIVE_ALLOWED_ACTION }
更改下列內容:
PROJECT_ID
:代管執行個體群組所在的專案。REGION
:MIG 所在的區域。如果是區域 MIG,請將regions/REGION
替換為zones/ZONE
。INSTANCE_GROUP_NAME
:MIG 的名稱。MINIMAL_ACTION
(選用):在設定更新期間,對每個執行個體執行的動作:REFRESH
:在執行中的執行個體上套用新設定,不必重新啟動執行個體。RESTART
:在更新期間重新啟動 VM,如果應用程式只會在重新啟動時讀取中繼資料,這項功能就非常實用。REPLACE
:刪除 VM 並建立新的 VM,套用新的設定。
MOST_DISRUPTIVE_ALLOWED_ACTION
(選用): 對每個執行個體執行最多這個動作。如果設定更新作業需要執行干擾程度超出這裡指定的動作,更新作業就會失敗,且不會進行任何變更。NONE
:無動作REFRESH
:盡可能套用新設定,但不要停止執行個體。舉例來說,使用REFRESH
僅套用影響中繼資料或額外磁碟的變更。RESTART
:盡可能套用新設定,但不取代執行個體。舉例來說,只要停止執行個體並重新啟動,即可套用機器類型變更。REPLACE
:根據群組的updatePolicy.replacementMethod
欄位取代舊執行個體。
確認是否已套用更新後的所有執行個體設定
如要確認最新版的所有執行個體設定是否已套用至群組中的所有 VM,請使用下列其中一種方式。
主控台
前往 Google Cloud 控制台的「Instance groups」(執行個體群組) 頁面。
選取要查看所有執行個體設定的 MIG。
前往「詳細資料」分頁。
如果最新的「適用於所有執行個體的設定」已套用至所有 VM,則「適用於所有執行個體的設定」部分中的「上次修改時間」時間戳記和「狀態」欄位必須顯示下列值:
- 上次修改時間:顯示您將所有執行個體設定套用至所有 VM 的時間。
- 狀態:顯示「已套用至所有 VM」。如果「所有執行個體」未套用至所有 VM,狀態會顯示為「Pending VM update」(待處理的 VM 更新)。
gcloud
使用
describe
指令並加入--format
旗標,尋找status.allInstancesConfig.effective
值。gcloud compute instance-groups managed describe INSTANCE_GROUP_NAME \ --format="(status.allInstancesConfig)"
輸出內容範例:
status: allInstancesConfig: currentRevision: 2022-12-02T10:30:15.012345Z effective: true
如果將
effective
值設為true
,所有 VM 都會套用最新設定。currentRevision
值會顯示群組所有執行個體設定的最新變更時間戳記。如果
effective
值設為false
,表示最新設定尚未套用至所有 VM。如要檢查每個 VM 的狀態,可以列出所有 MIG 的 VM,或使用
describe-instance
指令個別檢查每個 VM:gcloud compute instance-groups managed describe-instance INSTANCE_GROUP_NAME \ --instance INSTANCE_NAME
輸出內容範例:
allInstancesConfig: revision: 2022-12-02T10:30:15.012345Z currentAction: NONE id: '8393021473297481188' instance: .../projects/PROJECT/zones/ZONE/instances/INSTANCE_NAME instanceStatus: RUNNING name: INSTANCE_NAME version: instanceTemplate: .../projects/PROJECT/global/instanceTemplates/INSTANCE_TEMPLATE
如要查看哪些 VM 已套用最新設定,請比較每個 VM 的
revision
時間戳記與 MIG 的currentRevision
時間戳記。REST
在可用區或區域 MIG 上發出
GET
要求,檢查status.allInstancesConfig.effective
旗標的值。GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME
回應範例:
{ ... "status": { "isStable": "true", "versionTarget": { "isReached": "true" }, "allInstancesConfig": { "currentRevision": "2022-12-02T10:30:15.012345Z", "effective": "true" }, ... }, ... }
如果
effective
欄位設為true
,所有 VM 都會套用最新的設定。「currentRevision
」欄位會顯示群組所有執行個體設定的最新變更時間戳記。如果
effective
欄位設為false
,表示最新設定尚未套用至所有 VM。如要檢查每個執行個體的狀態,請列出區域或地區 MIG 的代管執行個體:
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME/listManagedInstances
輸出內容範例:
{ "managedInstances": [ ... { "instance": ".../zones/ZONE/instances/INSTANCE_NAME", "instanceStatus": "RUNNING", "currentAction": "NONE", "allInstancesConfig": { "revision": "2022-12-02T10:30:15.012345Z" }, "version": { "name": "V1", "instanceTemplate": ".../projects/.../instanceTemplates/INSTANCE_TEMPLATE" } }, { ... } ] }
如要查看哪些 VM 已套用最新設定,請比較每個 VM 的
revision
時間戳記與 MIG 的currentRevision
時間戳記。列出所有執行個體設定中的屬性
適用於所有執行個體的設定是 MIG 設定的一部分。如要查看所有執行個體的設定,請使用下列其中一種方式。
主控台
前往 Google Cloud 控制台的「Instance groups」(執行個體群組) 頁面。
選取要查看所有執行個體設定的 MIG。
前往「詳細資料」分頁。
請參閱「所有執行個體設定」一節。
gcloud
使用
describe
指令並加入--format
旗標,即可顯示群組的所有執行個體設定值。gcloud compute instance-groups managed describe INSTANCE_GROUP_NAME \ --format="(allInstancesConfig)"
如果群組有全執行個體設定,這個指令會傳回該設定。
REST
對可用區或區域 MIG 發出
GET
要求,並尋找allInstancesConfig
欄位。GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME
如果未設定
allInstancesConfig
欄位,表示群組沒有所有執行個體的設定。從所有執行個體設定中刪除屬性
如果您從 MIG 的所有執行個體設定中刪除某項屬性,且該屬性也存在於 MIG 的執行個體範本中,則在將最新設定套用至 MIG 中的 VM 後,這些 VM 會從執行個體範本重新繼承該屬性。如要進一步瞭解如何將最新設定套用至現有 VM,請參閱「將所有執行個體設定套用至現有 VM」一文。
如要從所有執行個體通用的設定中刪除屬性,請使用下列其中一種方式。
主控台
前往 Google Cloud 控制台的「Instance groups」(執行個體群組) 頁面。
選取要刪除所有執行個體設定的 MIG。
按一下 [編輯]。
按一下「執行個體範本和覆寫」展開該部分。
在「All-instances configuration」(所有執行個體設定) 區段中,執行下列操作:
- 視要刪除的屬性而定,按一下「管理中繼資料」或「管理標籤」。
- 在「管理中繼資料」或「管理標籤」窗格中,將指標懸停在設定上,啟用刪除選項,然後按一下「刪除項目」圖示 。
- 按一下 [儲存]。
按一下「儲存」,將變更套用至 MIG。
如果 MIG 的更新類型設為「自動」,系統會立即將所有執行個體設定的變更套用至所有現有 VM。如果更新類型為「選擇性」,則必須選擇性地將設定套用至現有 VM。詳情請參閱「將所有執行個體設定套用至現有 VM」一文。
gcloud
如要刪除屬性,請使用
all-instances-configuration delete
指令,並指定要刪除的一或多個屬性的鍵。gcloud compute instance-groups managed all-instances-config delete INSTANCE_GROUP_NAME \ --metadata=KEY1[, KEY1]\ --labels=KEY1[, KEY1]
請記得套用更新後的設定至 MIG 中的現有 VM。
REST
如要刪除屬性,請對可用區或區域 MIG 發出
PATCH
要求,並為要移除的每個屬性指定null
值做為鍵。PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME { "allInstancesConfig": { "properties": { "metadata": { "KEY1": null, ... }, "labels": { "KEY2": null, ... } } } }
請記得套用更新後的設定至 MIG 中的現有 VM。
後續步驟
- 進一步瞭解如何自動將更新後的設定套用至 MIG 中的現有 VM。
- 進一步瞭解如何選擇性地將設定更新套用至 MIG 中的現有 VM。
- 查看 MIG 和 VM 的相關資訊。
除非另有註明,否則本頁面中的內容是採用創用 CC 姓名標示 4.0 授權,程式碼範例則為阿帕契 2.0 授權。詳情請參閱《Google Developers 網站政策》。Java 是 Oracle 和/或其關聯企業的註冊商標。
上次更新時間:2025-09-04 (世界標準時間)。
-