取得 MIG 和代管執行個體的相關資訊

您可以使用本頁中的方法取得代管執行個體群組 (MIG) 的相關資訊,並取得每個 MIG 內虛擬機器 (VM) 執行個體的相關資訊。

事前準備

取得 MIG 的相關資訊

您可以擷取群組本身的相關資訊,例如檢查群組附加的政策,並檢查群組是否穩定或正在進行變更。如要取得 MIG 中 VM 執行個體的相關資訊,請參閱取得代管執行個體相關的資訊

列出 MIG

如要取得代管執行個體群組清單,請使用主控台gcloud 工具API

主控台

  1. 在 Google Cloud Platform Console 中,前往「Instance groups」(執行個體群組) 頁面。

    前往「Instance Groups」(執行個體群組) 頁面

    如果您已擁有執行個體群組,頁面會列出這些群組,包括代管執行個體群組和非代管執行個體群組

    代管執行個體群組在範本欄中有一個值。

gcloud

如要列出專案中的所有代管執行個體群組:

gcloud compute instance-groups managed list

API

如要列出區域內所有的代管執行個體群組,請建構對 instanceGroupManagers.list 方法的 GET 要求:

GET https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroupManagers

如為地區 (多區域) 代管執行個體群組,請改用 regionInstanceGroupManagers資源:regionInstanceGroupManagers.list

GET https://compute.googleapis.com/compute/v1/projects/project-id/regions/region/instanceGroupManagers

取得 MIG 屬性

如要取得特定 MIG 的包括附加政策 (例如自動修復政策) 等相關資訊,請使用主控台gcloud 工具API

如要取得群組的 id,則必須使用 gcloud 工具或 API。

主控台

  1. 在 Google Cloud Platform Console 中,前往「Instance groups」(執行個體群組) 頁面。

    前往「Instance Groups」(執行個體群組) 頁面

    如果您已擁有執行個體群組,頁面會列出這些群組。該頁面也會列出非代管執行個體群組

  2. 在清單的「Name」(名稱) 欄底下,按一下要檢查之執行個體群組的名稱。按一下名稱會開啟頁面,其中包含執行個體群組的屬性及群組內執行個體的清單。

gcloud

如要取得特定群組的資訊:

gcloud compute instance-groups managed describe instance-group \
    [--zone zone | --region region]

這個指令會傳回群組的詳細資料,包括附加的政策。

API

如要取得特定群組的相關資訊,請向 instanceGroupManagers.get 方法建構 GET 要求,並加入特定代管執行個體群組的名稱:

GET https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroupManagers/instance-group

如為地區 (多區域) 代管執行個體群組,請改用 regionInstanceGroupManagers資源:regionInstanceGroupManagers.listregionInstanceGroupManagers.get

GET https://compute.googleapis.com/compute/v1/projects/project-id/regions/region/instanceGroupManagers/instance-group

系統會傳回群組的詳細資料,包括附加的政策 (除了自動調度資源政策以外)。

如要取得自動配置器的相關資訊,請向 autoscalers.get 方法建構 GET 要求,並加入特定代管執行個體群組的名稱:

GET https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/autoscalers/instance-group

如果是地區 (多區域) 代管執行個體群組,請使用 regionAutoscalers 資源:regionAutoscalers.get

GET https://compute.googleapis.com/compute/v1/projects/project-id/regions/region/regionAutoscalers/instance-group

檢查群組的狀態

許多指令與要求都會在代管執行個體群組中建立、刪除及修改執行個體。在群組安排建立、刪除或更新執行個體的時程之後,這些作業會以 DONE 狀態傳回。但是,在完成這些基本動作之前,系統並不會建立、刪除或更新群組中的執行個體。您必須驗證群組的狀態或驗證這些執行個體的狀態

Compute Engine 會在群組層級將值填入名為 status 的唯讀欄位,該欄位包含 isStable 旗標,您可以使用 gcloud 指令列工具API 進行存取。

gcloud

gcloud compute instance-groups managed describe instance-group-name \
    [--zone zone | --region region]

gcloud 工具會傳回執行個體群組的相關詳細資訊,包括 status.isStable 欄位。

如要在群組穩定之前暫停指令碼,請使用帶有 --stable 旗標的 wait-until 指令。例如:

gcloud beta compute instance-groups managed wait-until instance-group-name \
    --stable \
    [--zone zone | --region region]
Waiting for group to become stable, current operations: deleting: 4
Waiting for group to become stable, current operations: deleting: 4
...
Group is stable

在該群組的 status.isStable 設為 true 後,會傳回這個指令。

API

如果是區域 MIG,請向 instanceGroupManagers.get 方法發出 POST 要求:

POST https://compute.googleapis.com/compute/beta/projects/project-id/zones/zone/instanceGroupManagers/[INSTANCE_GROUP_NAME]/get

如果該執行個體群組是地區代管執行個體群組,請將 zones/zone 替換成 regions/region

POST https://compute.googleapis.com/compute/beta/projects/project-id/regions/region/instanceGroupManagers/[INSTANCE_GROUP_NAME]/get

API 會傳回有關執行個體群組的詳細資料,包含 status.isStable 欄位。

如要確認代管執行個體群組是否正在執行中,且健康狀態良好,請查看 instanceGroupManagersregionInstanceGroupManagers 資源的 status.isStable 欄位值。

您也可以利用 gcloud 指令列工具來執行搭配 --stable 標記的 wait-until 指令來等待,直到該群組的 status.isStable 變成 true 為止:

gcloud beta compute instance-groups managed wait-until INSTANCE_GROUP_NAME \
    --stable \
    [--zone [ZONE] | --region [REGION]]

status.isStablefalse 時,代表變更已生效、待處理,或是系統正在修改代管執行個體群組。

status.isStabletrue 時,則代表:

  • 在代管執行個體群組中,沒有任何執行個體遭到任何類型的變更,且所有執行個體的 currentAction 都顯示 NONE
  • 代管執行個體群組中的執行個體沒有任何待處理的變更。
  • 代管執行個體群組本身未經修改。

您可以透過多種方式來修改代管執行個體群組,例如:

  • 由您發出推出新執行個體範本的要求。
  • 由您發出建立、刪除、調整大小或更新群組中執行個體的要求。
  • 自動配置器要求調整群組的大小。
  • 自動修復程式資源正在取代代管執行個體群組中一或多個健康狀態不良的執行個體。
  • 在地區代管執行個體群組中,部分執行個體正在重新分配

當所有動作都執行完畢之後,該代管執行個體群組的 status.isStable 會再次變成 true

如果為個別 VM 執行個體,請參閱檢查代管執行個體的狀態

查看自動修復作業記錄

如果您已設定自動修復功能,可以查看過去的自動修復事件

取得 MIG 內代管 VM 執行個體的相關資訊

列出 MIG 的代管執行個體

如要取得群組中的代管執行個體清單 (包括狀態和範本),請使用主控台gcloud 工具API

主控台

  1. 在 Google Cloud Platform Console 中,前往「Instance groups」(執行個體群組) 頁面。

    前往「Instance Groups」(執行個體群組) 頁面

    如果您已擁有執行個體群組,頁面會列出這些群組。該頁面也會列出非代管執行個體群組

  2. 在清單的「Name」(名稱) 欄底下,按一下要檢查之執行個體群組的名稱。按一下名稱會開啟頁面,其中包含執行個體群組的屬性及群組內執行個體的清單。

gcloud

使用 gcloud 工具 list-instances 子指令。

gcloud compute instance-groups managed list-instances instance-group \
    [--zone zone | --region region]

這個指令會傳回執行個體清單及其詳細資料,包括目前的狀態、執行個體範本和上次發生的錯誤。

API

針對區域 MIG,請向 instanceGroupManagers.listManagedInstances 方法建構 POST 要求,並加入特定代管執行個體群組的名稱:

GET https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroupManagers/instance-group

如為地區 (多區域) 代管執行個體群組,請改用 regionInstanceGroupManagers資源:regionInstanceGroupManagers.list

GET https://compute.googleapis.com/compute/v1/projects/project-id/regions/region/instanceGroupManagers/instance-group

系統的回應會包括執行個體清單及其詳細資料,包括目前的狀態和執行個體範本。

檢查代管執行個體的狀態

許多指令與要求都會在代管執行個體群組中建立、刪除及修改執行個體。在群組安排建立、刪除或更新執行個體的時程之後,這些作業會以 DONE 狀態傳回。但是,在完成這些基本動作之前,系統並不會建立、刪除或更新群組中的執行個體。您必須使用 gcloud 工具API 驗證這些執行個體的狀態,或驗證群組的狀態本身。

如要查看代管執行個體群組中的每個執行個體正在執行的 currentAction,以及每個執行個體的 status,請使用 gcloud 指令列工具API

gcloud

gcloud compute instance-groups managed list-instances [INSTANCE_GROUP_NAME] [--filter="zone:([ZONE])" | --filter="region:([REGION])"]

gcloud 會傳回執行個體群組中的執行個體清單,以及每個執行個體的狀態和目前在執行的動作,例如:

NAME               ZONE           STATUS    ACTION    INSTANCE_TEMPLATE  VERSION_NAME  LAST_ERROR
vm-instances-9pk4  us-central1-f            CREATING  my-new-template
vm-instances-h2r1  us-central1-f  STOPPING  DELETING  my-old-template
vm-instances-j1h8  us-central1-f  RUNNING   NONE      my-old-template
vm-instances-ngod  us-central1-f  RUNNING   NONE      my-old-template

API

請在 API 中,對 regionInstanceGroupManagers.listManagedInstances 方法提出 POST 要求:對於區域代管執行個體群組,請使用 instanceGroupManagers.listManagedInstances 方法。

POST https://compute.googleapis.com/compute/v1/projects/project-id/regions/region/instanceGroupManagers/instance-group-name/listManagedInstances

API 會傳回群組的執行個體清單,其中包含每個執行個體的 instanceStatuscurrentAction

{
 "managedInstances": [
  {
   "instance": "https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instances/vm-instances-prvp",
   "id": "5317605642920955957",
   "instanceStatus": "RUNNING",
   "instanceTemplate": "https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/instanceTemplates/[INSTANCE_TEMPLATE_NAME]",
   "currentAction": "REFRESHING"
  },
  {
   "instance": "https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instances/vm-instances-pz5j",
   "currentAction": "DELETING"
  },
  {
   "instance": "https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instances/vm-instances-w2t5",
   "id": "2800161036826218547",
   "instanceStatus": "RUNNING",
   "instanceTemplate": "https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/instanceTemplates/[INSTANCE_TEMPLATE_NAME]",
   "currentAction": "REFRESHING"
  }
 ]
}

對於代管執行個體群組中的每個執行個體,執行個體的狀態會由自己的 instanceStatus 欄位來描述。如要查看有效的 instanceStatus 欄位值清單,請參閱檢查執行個體狀態

如果執行個體正在經歷某種類型的變更,系統就會把下列某個動作填入 currentAction 欄位,以協助您追蹤變更的進度。否則,currentAction 欄位就會是 NONE

可能的 currentAction 值:

  • ABANDONING:執行個體正從代管執行個體群組中移除。
  • CREATING:執行個體目前正在建立。
  • CREATING_WITHOUT_RETRIES:執行個體目前正在建立,且不會重試;如果執行個體在第一次嘗試時無法建立,則代管執行個體群組將不會嘗試再次取代執行個體。
  • DELETING:執行個體目前正在刪除。
  • RECREATING:執行個體已遭刪除,目前正被取代。
  • REFRESHING:執行個體正從其目前目標集區中移除,並正讀入至現有的目標集區清單中 (此清單可能會與現有目標集區相同或不同)。
  • RESTARTING:系統正在使用 stopstart 方法重新啟動該執行個體。
  • VERIFYING:執行個體已建立,目前正受到驗證。
  • NONE:目前並未對執行個體執行任何動作。

如要檢查整個群組是否穩定或正在經歷變更,請參閱檢查群組狀態一文。

檢查健康狀態

如果您為代管執行個體群組設定了自動修復功能,則可以檢視每個執行個體的健康狀態。請參閱檢查健康狀態一文。

檢查 VM 執行個體是否屬於某個 MIG

如要檢查特定執行個體目前是否屬於某個群組,您可以使用主控台或 API。

主控台

  1. 在 Google Cloud Platform Console 中,前往「VM instances」(VM 執行個體) 頁面。

    前往「VM instances」(VM 執行個體) 頁面

  2. 按一下要檢查的執行個體,存取其 VM 執行個體詳細資料
  3. 如果 VM 執行個體屬於某個代管執行個體群組,「In use by」(使用者) 標頭底下會顯示該代管執行個體群組的名稱。如果 VM 執行個體不屬於任何群組,執行個體詳細資料頁面中就不會顯示「In use by」(使用者) 標頭。

API

請參閱查看 VM 執行個體參照網址一文。

或者,如要識別執行個體是否屬於或曾屬於某個代管執行個體群組,請在執行個體的中繼資料中尋找以下兩個中繼資料鍵:

  • instance-template 表示用於建立執行個體的範本。
  • created-by 表示建立執行個體的代管執行個體群組。

即使您捨棄執行個體,除非手動移除,否則執行個體仍會擁有這些中繼資料項目。

例如,如果有名為 random-instance-biy 的執行個體,且您想要知道執行個體是否由代管執行個體群組建立,您可以描述執行個體並尋找上述中繼資料鍵。例如:

gcloud compute instances describe random-instance-biy --zone us-central1-f

gcloud 工具會傳回類似內容如下的回應:

canIpForward: false
cpuPlatform: Intel Ivy Bridge
creationTimestamp: '2016-08-24T14:11:38.012-07:00'
...
metadata:
  items:
  - key: instance-template
    value: projects/123456789012/global/instanceTemplates/example-it
  - key: created-by
    value: projects/123456789012/zones/us-central1-f/instanceGroupManagers/igm-metadata

後續步驟