查看 MIG 和代管執行個體的相關資訊


您可以使用本頁中的方法查看代管執行個體群組 (MIG) 的相關資訊,並查看每個 MIG 內虛擬機器 (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

    1. 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.

    2. 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.

查看 MIG 相關資訊

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

列出 MIG

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

主控台

  1. 前往 Google Cloud 控制台的「Instance groups」(執行個體群組) 頁面。

    前往「Instance groups」(執行個體群組)

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

    「群組類型」欄會指定群組是否為受管理、有狀態或未受管理。有狀態群組類型也是代管執行個體群組。

gcloud

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

gcloud compute instance-groups managed list

REST

如果是區域 MIG,請呼叫 instanceGroupManagers.list 方法

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

如果是區域 MIG,請呼叫 regionInstanceGroupManagers.list 方法

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

查看 MIG 的屬性

如要查看特定 MIG 的相關資訊,包括其政策 (例如群組的自動修復和更新政策),請使用主控台gcloud CLIREST

如要查看群組的 id 值,您必須使用 gcloud CLI 或 Compute Engine API。

主控台

  1. 前往 Google Cloud 控制台的「Instance groups」(執行個體群組) 頁面。

    前往「Instance groups」(執行個體群組)

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

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

  3. 按一下「Details」即可查看群組的設定。

gcloud

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

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

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

使用 --format 旗標限制輸出內容。舉例來說,下列指令只會傳回群組的自動配置器設定 (如果有)。

gcloud compute instance-groups managed describe instance-group --format="(autoscaler)"

REST

如果是區域 MIG,請呼叫 instanceGroupManagers.get 方法。如果是區域 MIG,請呼叫 regionInstanceGroupManagers.get 方法

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

回應會包含群組的詳細資料,包括附加的政策 (除了群組的自動調度資源政策以外)。雖然自動調度是 MIG 的功能,但它是單獨的 REST 資源。

自動調度資源政策

如果群組已連結自動配置器,群組的 status.autoscaler 欄位會列出自動配置器資源。

如要取得自動配置器的相關資訊,請針對區域 MIG 呼叫 autoscalers.get 方法,或針對區域 MIG 呼叫 regionAutoscalers.get 方法。自動配置器資源的網址包含其名稱,預設名稱為自動配置器所連結的群組名稱。舉例來說,您可以為區域 MIG 的自動調整大小功能提出下列要求:

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

檢查 MIG 是否穩定

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

當代管執行個體群組中的所有執行個體都沒有任何變更、沒有排定執行個體的未來變更,且群組本身未經修改時,該群組就處於穩定狀態。

如果有依附元件需要群組中的所有例項都處於正常狀態並提供服務,您可能需要瞭解群組是否穩定。舉例來說,您可能會在確認所有 VM 都已執行且處於健康狀態後,開始排程工作、傳送流量或指派鍵值範圍。

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

gcloud

使用 describe 指令

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

gcloud CLI 會傳回 MIG 的詳細資訊,包括 status.isStable 欄位。

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

gcloud 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

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

REST

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

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

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

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

這些要求會傳回 MIG 的詳細資訊,包括 status.isStable 欄位。

status.isStablefalse 時,代表變更已生效、待處理,或是系統正在修改 MIG。

status.isStabletrue 時,則代表:

  • MIG 中沒有任何執行個體遭到任何類型的變更,且所有執行個體的 currentAction 都顯示 NONE
  • MIG 中的執行個體沒有任何待處理的變更。
  • MIG 本身不會經過修改。

請注意,MIG 的穩定性取決於許多因素,因為 MIG 可以透過多種方式進行修改。例如:

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

完成所有動作後,該 MIG 的 status.isStable 會再次設為 true

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

檢查是否已在 MIG 中關閉 VM 修復功能

如要檢查是否已在 MIG 中關閉 VM 修復功能,請使用控制台gcloud CLIAPI

主控台

  1. 前往 Google Cloud 控制台的「Instance groups」(執行個體群組) 頁面。

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

  2. 按一下要查看的執行個體群組名稱。系統隨即開啟一個頁面,頁面中包含執行個體群組的屬性及群組包含之執行個體的清單。
  3. 按一下 [Details] (詳細資料) 分頁標籤。
  4. 在「VM 執行個體生命週期」區段中,勾選「失敗時的預設動作」欄位。如果值為 No action,則會在 MIG 中關閉修復功能。

gcloud

請使用 describe 方法,如下所示:

gcloud compute instance-groups managed describe instance-group \
    --format="(instanceLifecyclePolicy)"

在回應主體中,檢查 defaultActionOnFailure 欄位。可能的值如下:

  • REPAIR:MIG 會在相同區域中重新建立故障或不健康的 VM。
  • DO_NOTHING:MIG 已關閉維修功能。MIG 不會對群組中失敗或不健康的 VM 採取任何行動。

以下是輸出內容範例,指出 MIG 會透過重新建立 VM 來修復 VM。

instanceLifecyclePolicy:
  defaultActionOnFailure: REPAIR
  forceUpdateOnRepair: NO

API

如果是區域 MIG,請使用 instanceGroupManagers.get 方法;如果是區域 MIG,請使用 regionInstanceGroupManagers.get 方法

如要查看區域 MIG 中 VM 失敗的 MIG 動作,請發出以下呼叫:

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/INSTANCE_GROUP

在回應主體中,檢查 instanceLifecyclePolicy.defaultActionOnFailure 欄位。可能的值如下:

  • REPAIR:MIG 會在相同區域中重新建立故障或不健康的 VM。
  • DO_NOTHING:MIG 已關閉維修功能。MIG 不會對群組中失敗或不健康的 VM 採取任何行動。

以下是範例回應,指出 MIG 會透過重新建立 VM 來修復 VM。

"instanceLifecyclePolicy": {
  "forceUpdateOnRepair": "NO",
  "defaultActionOnFailure": "REPAIR"
}

如果不想讓 MIG 修復群組中失敗或不健康的 VM,可以關閉 MIG 中的修復功能

查看自動修復作業記錄

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

監控滾動式更新

如果您啟動了滾動式更新,且想知道更新何時完成,請參閱「監控更新」一文。

查看有狀態設定

如果您已設定有狀態的 MIG,並想要查看設定,請參閱「查看有狀態設定」。

查看 MIG 內代管 VM 執行個體的相關資訊

列出 MIG 的代管執行個體

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

主控台

  1. 前往 Google Cloud 控制台的「Instance groups」(執行個體群組) 頁面。

    前往「Instance groups」(執行個體群組)

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

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

gcloud

使用 gcloud CLI list-instances 子指令。

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

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

REST

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

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 狀態傳回。但是,在完成這些基本動作之前,系統並不會建立、刪除或更新群組中的執行個體。您必須驗證這些執行個體的狀態,或驗證群組的狀態本身。

使用 Google Cloud CLI 或 REST,查看代管執行個體群組中的執行個體詳細資料。詳細資料包括執行個體狀態,以及群組在執行個體上執行的目前動作。

gcloud

所有受管理的執行個體

如要檢查群組中所有執行個體的狀態和目前動作,請使用 list-instances 指令

gcloud compute instance-groups managed list-instances INSTANCE_GROUP_NAME \
    [--zone=ZONE | --region=REGION]

這個指令會傳回群組中的執行個體清單,包括執行個體的狀態、目前動作和其他詳細資料:

NAME               ZONE           STATUS   HEALTH_STATE  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

除非您已設定健康狀態檢查,否則 HEALTH_STATE 欄會顯示為空白。

特定的受管理執行個體

如要檢查群組中特定執行個體的狀態和目前動作,請使用 describe-instance 指令

gcloud compute instance-groups managed describe-instance INSTANCE_GROUP_NAME \
    --instance INSTANCE_NAME \
    [--zone=ZONE | --region=REGION]

這個指令會傳回執行個體的詳細資料,包括執行個體狀態、目前動作,以及在有狀態 MIG 的情況下,保留的狀態:

currentAction: NONE
id: '6789072894767812345'
instance: https://www.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a/instances/example-mig-hz41
instanceStatus: RUNNING
name: example-mig-hz41
preservedStateFromConfig:
  metadata:
    example-key: example-value
preservedStateFromPolicy:
  disks:
    persistent-disk-0:
      autoDelete: NEVER
      mode: READ_WRITE
      source: https://www.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a/disks/example-mig-hz41
version:
  instanceTemplate: https://www.googleapis.com/compute/v1/projects/example-project/global/instanceTemplates/example-template

REST

區域區域 MIG 資源上呼叫 listManagedInstances 方法。舉例來說,如要查看區域 MIG 資源中執行個體的詳細資料,您可以提出以下要求:

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/INSTANCE_GROUP_NAME/listManagedInstances

這個呼叫會傳回 MIG 的執行個體清單,其中包含每個執行個體的 instanceStatuscurrentAction

{
 "managedInstances": [
  {
   "instance": "https://www.googleapis.com/compute/v1/projects/example-project/zones/us-central1-f/instances/vm-instances-prvp",
   "id": "5317605642920955957",
   "instanceStatus": "RUNNING",
   "instanceTemplate": "https://www.googleapis.com/compute/v1/projects/example-project/global/instanceTemplates/example-template",
   "currentAction": "REFRESHING"
  },
  {
   "instance": "https://www.googleapis.com/compute/v1/projects/example-project/zones/us-central1-f/instances/vm-instances-pz5j",
   "currentAction": "DELETING"
  },
  {
   "instance": "https://www.googleapis.com/compute/v1/projects/example-project/zones/us-central1-f/instances/vm-instances-w2t5",
   "id": "2800161036826218547",
   "instanceStatus": "RUNNING",
   "instanceTemplate": "https://www.googleapis.com/compute/v1/projects/example-project/global/instanceTemplates/example-template",
   "currentAction": "REFRESHING"
  }
 ]
}

如要查看有效的 instanceStatus 欄位值清單,請參閱 VM 執行個體生命週期

如果執行個體正在經歷某種類型的變更,代管執行個體群組就會將執行個體的 currentAction 欄位設為下列任一動作,協助您追蹤變更進度。否則,currentAction 欄位會設為 NONE

可能的 currentAction 值:

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

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

檢查健康狀態

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

列出執行個體錯誤

如果您的受管理執行個體發生錯誤,您可以查看這些錯誤,診斷並減輕錯誤原因。

使用 Google Cloud 控制台、gcloud CLI 或 REST 列出錯誤。

主控台

  1. 前往 Google Cloud 控制台的「Instance groups」(執行個體群組) 頁面。

    前往「Instance groups」(執行個體群組)

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

  3. 按一下「錯誤」

gcloud

使用 instance-groups managed list-errors 指令列出群組中最近的錯誤

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

例如:

gcloud compute instance-groups managed list-errors example-group \
    --region us-west1
INSTANCE_URL                                                                                        ACTION    ERROR_CODE      ERROR_MESSAGE                                                                                     TIMESTAMP                      INSTANCE_TEMPLATE                                                                                                            VERSION_NAME

https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/instances/igm-1-v0hl  CREATING  QUOTA_EXCEEDED  Instance 'igm-1-v0hl' creation failed: Quota 'CPUS' exceeded.  Limit: 1.0 in zone us-central1-a.  2019-07-11T07:44:40.156-07:00  https://www.googleapis.com/compute/v1/projects/my-project/global/instanceTemplates/instance-template-1
https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/instances/igm-1-qp3d  CREATING  QUOTA_EXCEEDED  Instance 'igm-1-qp3d' creation failed: Quota 'CPUS' exceeded.  Limit: 1.0 in zone us-central1-a.  2019-07-11T07:44:40.081-07:00  https://www.googleapis.com/compute/v1/projects/my-project/global/instanceTemplates/instance-template-1
...

REST

針對區域地區代管執行個體群組,建構 GET 要求至 listErrors 方法。

例如:

GET https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroupManagers/instance-group-name/listErrors&maxResults=100

要求會取得類似以下的回應:


{
 "items": [
  {
   "error": {
    "code": "QUOTA_EXCEEDED",
    "message": "Instance 'example-mig-m1sz' creation failed: Quota 'CPUS' exceeded.  Limit: 50.0 in zone us-central1-c."
   },
   "timestamp": "2019-01-03T18:47:28.457-08:00",
   "instanceDetails" : {
    "instance": "zones/us-central1-c/instances/example-mig-m1sz",
    "action": "CREATING",
    "version": {
     "name": "example-version-name",
     "instanceTemplate": "global/instanceTemplates/example-template",
    }
   }
  }
 ],
 ...
 "nextPageToken": "Ch0yMDE5LTA3LTI5VDExOjA4OjA2LjYxMi0wNzowMBJ5aHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vY29tcHV0ZS9zdGFnaW5nX2FscGhhL3Byb2plY3RzL215cnpha2VyZXltcy1zdGFnaW5nL3pvbmVzL3VzLWNlbnRyYWwxLWlyMS9pbnN0YW5jZXMvaWdtLTEtcXAzZA=="
}

listErrors API 支援清單分頁。如要取得下一頁結果,請在後續要求中使用某個回應中的 nextPageToken 欄位。例如:GET https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroupManagers/instance-group-name/listErrors&maxResults=100&nextPageToken=next-page-token,將 next-page-token 替換為從先前回應中取得的符記。

可能的錯誤清單包括但不限於下列範例:

  • 無法建立新例項的原因如下:
    • 先占容量不足。
    • 缺少配額,例如特定地區的 CPU 配額不足。
    • 與群組相關聯的網路已達到 VM 執行個體數量上限。
    • 執行個體範本的 properties.disks[].initializeParams.sourceImage 欄位中指定的磁碟映像檔已遭刪除,或其權限已變更。
    • 與專案相關聯的帳單帳戶中的信用卡拒絕付款。
  • 無法刪除現有執行個體,原因如下:
    • 群組使用的服務帳戶沒有 compute.instances.delete 權限。
    • 要求的並行刪除作業數量過多,超過頻率限制。
  • 目標集區已刪除,因此無法將執行個體新增至目標集區。

檢查這類錯誤後,您可以採取因應措施。例如:

  • 將工作負載移至具有可搶佔容量的其他區域。
  • 請在特定區域申請提高配額。
  • compute.instances.delete 權限新增至群組使用的服務帳戶。

如果由代管執行個體群組觸發的動作失敗 (例如,自動配置器在嘗試增加群組大小時遇到錯誤),群組可能會立即重試該動作。如果上次立即重試嘗試失敗,MIG 會記錄錯誤,您可以列出執行個體錯誤來查看錯誤。在一段延遲時間後,群組會再次重試失敗的動作。如果錯誤持續發生,系統可能會重複記錄。

即使基礎執行個體已不存在或無法建立,Compute Engine 仍會保留過去 8 天內的 500 個最新錯誤。

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

如要檢查特定 VM 是否屬於某個群組,您可以使用主控台或 REST。

主控台

  1. 前往 Google Cloud 控制台的「VM instances」(VM 執行個體) 頁面

    前往 VM 執行個體

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

REST

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

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

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

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

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

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

gcloud CLI 會傳回類似以下的回應:

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

查看受管理執行個體的保留狀態

如果您設定了有狀態的 MIG,且想查看每個代管執行個體的保留狀態,請參閱查看有狀態設定和保留狀態

後續步驟