代管執行個體群組疑難排解

有幾項問題可能會導致代管執行個體群組 (MIG) 無法成功建立或重新建立 VM 執行個體。

如果已刪除的 MIG 產生記錄

問題可能與下列情況有關。

附加的自動配置器仍存在

如果您使用 Compute Engine API 刪除 MIG,但未另外發出要求刪除附加的自動配置器,Logs Explorer 可能會顯示含有下列訊息的記錄。

The resource 'projects/PROJECT/zones/ZONE/instanceGroupManagers/DELETED_INSTANCE_GROUP_NAME' was not found.

解析度:

如要解決這個問題,請使用 Compute Engine API 方法刪除附加的自動配置器:

如果 MIG 無法建立或重新建立執行個體

問題可能與下列情況有關。

開機磁碟已存在

根據預設,建立執行個體時,系統會建立新的開機永久磁碟。開機磁碟的名稱與 VM 名稱相同。如果將 VM 命名為 my-instance,磁碟也會命名為 my-instance。如果已有同名的永久磁碟,要求就會失敗。如要解決這個問題,您可以選擇建立快照,然後刪除現有的永久磁碟。

執行個體範本無效

如果您最近更新了執行個體範本,可能會有無效屬性導致 MIG 無法建立 VM。檢查屬性是否有下列常見錯誤:

  • 您指定了不存在的資源,例如來源映像檔。
  • 資源名稱拼字有誤。
  • 您嘗試以讀寫模式連接現有的非開機永久磁碟,但群組中有多個 VM。如果群組有多個 VM,您想在群組中所有 VM 之間共用的任何額外磁碟,只能以唯讀模式連接。

超出資源類型限制

如果您嘗試在區域性 MIG 中建立超過 2,000 個 VM,或在可用區 MIG 中建立超過 1,000 個 VM,就會發生下列錯誤。執行個體群組的大小已達上限。

錯誤訊息:

ERROR: (gcloud.compute.<INSTANCE_GROUP_TYPE>.<METHOD>) Could not
fetch resource:

 - Exceeded limit 'MAX_INSTANCES_IN_INSTANCE_GROUP' on resource 'PROJECT_ID'.
 Limit: NUMBER

解析度:

如要解決這個問題,請嘗試下列任一做法:

如果無法刪除 MIG 或其執行個體

問題可能與下列情況有關。

在可用區或區域中找不到資源

嘗試刪除區域性 MIG 時,如果指定 --zone 旗標、未指定區域或指定錯誤區域,就會發生下列錯誤。如果嘗試刪除可用區 MIG 並指定 --region 旗標,也可能發生類似錯誤。

錯誤訊息:

  • ERROR: (gcloud.compute.instance-groups.managed.delete) Some requests did not succeed:
    ‐ The resource 'projects/PROJECT/zones/ZONE/instanceGroupManagers/INSTANCE_GROUP_NAME' was not found
    
  • ERROR: (gcloud.compute.instance-groups.managed.delete) Some requests did not succeed:
    ‐ The resource 'projects/PROJECT/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME' was not found
    

解析度:

如要解決這個問題,請嘗試下列任一做法:

資源由後端服務使用

如果執行個體群組正由負載平衡器的後端服務使用,則無法移除。您必須先從後端服務中移除執行個體,才能刪除執行個體群組。

錯誤訊息:

  • ERROR: (gcloud.compute.instance-groups.managed.delete) Some requests did not succeed:
    ‐ The instance_group_manager resource 'projects/PROJECT/zones/ZONE/instanceGroupManagers/INSTANCE_GROUP_NAME is already being used by 'projects/PROJECT/global/backendServices/BACKEND_SERVICE
  • ERROR: (gcloud.compute.instance-groups.managed.delete) Some requests did not succeed:
    ‐ The instance_group_manager resource 'projects/PROJECT/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME is already being used by 'projects/PROJECT/global/backendServices/BACKEND_SERVICE

解析度:

  1. 選用:耗盡後端執行個體群組。

  2. 從區域或全域後端服務中移除 MIG。

    • 如為可用區 MIG,請執行下列指令:

      gcloud compute backend-services remove-backend BACKEND_SERVICE \
          --instance-group=INSTANCE_GROUP_NAME \
          --instance-group-zone=ZONE \
          [--region=REGION | --global]
      
    • 如為區域性 MIG,請執行下列指令:

      gcloud compute backend-services remove-backend BACKEND_SERVICE  \
          --instance-group=INSTANCE_GROUP_NAME \
          --instance-group-region=REGION \
          [--region=REGION | --global]
      
  3. 刪除 MIG:

    gcloud compute instance-groups managed delete INSTANCE_GROUP_NAME
    

如果 MIG 持續嘗試重新建立執行個體

問題可能與下列情況有關。

健康狀態檢查探測無法連上執行個體

如果您設定了自動修復政策,但未設定 (或設定錯誤) 防火牆規則,導致健康狀態檢查探測無法連至應用程式,則 VM 會顯示為健康狀態不良,且 MIG 會持續嘗試重新建立 VM。如要瞭解如何設定健康狀態檢查防火牆規則,請參閱「健康狀態檢查設定範例」。

如果 MIG 的可用區分布不均,或使用非預期的機型

如果區域性 MIG 或具備執行個體彈性的 MIG 正常運作,但您懷疑執行個體未按照預期分布在各可用區,或群組依賴備用機器類型,則可監控已成功佈建的執行個體實際分布情形。

您可以查看特定 MIG 的執行階段執行個體分布情形,或多個 MIG 的匯總資料。請注意,監控執行個體分布情形可讓您觀測已佈建的執行個體,但無法找出建立失敗或容量限制的根本原因。如要瞭解如何查看執行個體分布情形,請參閱「監控 MIG 中的執行個體分布情形」。

如果 MIG 設有執行個體彈性,但缺貨記錄遺失或出現異常

如果 Cloud Logging 中未顯示預期的缺貨記錄,或具有執行個體彈性的 MIG 意外顯示缺貨記錄,請查看下列行為:

  • 略過的排名不會記錄資源用盡錯誤:MIG 建立 VM 前,會檢查所有執行個體選項的容量。如果無法使用偏好程度較高的機器類型,MIG 會略過這些類型,並使用偏好程度較低但可用的選項佈建執行個體。Compute Engine 只會在 VM 建立失敗時記錄 ZONE_RESOURCE_POOL_EXHAUSTED 錯誤,因此在容量檢查期間略過的偏好較高機器類型,不會在 Logging 中顯示資源用盡錯誤。

  • VM 修復作業可能會記錄原始機型的資源用盡錯誤:如果啟用修復時更新功能,MIG 會嘗試使用原始機型重新建立失敗的 VM,同時檢查替代機型的可用性。因此,即使 MIG 正在檢查或使用替代機型,您仍可能看到原始機型的資源用盡錯誤。

詳情請參閱「容量評估和錯誤記錄」。