查看叢集自動配置器事件


本頁面提供 Google Kubernetes Engine (GKE) 中叢集自動調度器發出的可見度事件相關資訊。分析這些事件,有助於深入瞭解叢集自動配置器如何管理叢集的資源調度,以及瞭解其決策背後的理由。

GKE 叢集自動配置器會發出可見度事件,這些事件會顯示為 Cloud Logging 中的記錄項目。本指南所述事件與叢集自動配置器產生的 Kubernetes 事件不同。

需求條件

如要查看自動調度器事件,請在叢集中啟用 Cloud Logging。如果停用記錄功能,系統就不會產生事件。

檢視活動

叢集自動調度程式的可見度事件會儲存在 Cloud Logging 記錄中,與 GKE 叢集位於同一個專案。您也可以在 Google Cloud 控制台的 Google Kubernetes Engine 頁面中,查看這些事件的通知。

查看曝光事件記錄

如要查看記錄,請執行下列操作:

  1. 在 Google Cloud 控制台中,前往「Kubernetes Clusters」(Kubernetes 叢集) 頁面。

    開啟 Kubernetes 叢集清單

  2. 選取叢集名稱,即可查看「叢集詳細資料」頁面。

  3. 在「叢集詳細資料」頁面中,按一下「記錄」分頁標籤。

  4. 在「記錄」分頁中,按一下「自動調整規模記錄」分頁,即可查看記錄。

  5. (選用) 如要套用更進階的篩選器來縮小結果範圍,請按一下頁面右側的箭頭按鈕,在記錄檔探索工具中查看記錄。

查看顯示狀態事件通知

如要在 Google Kubernetes Engine 頁面查看瀏覽權限事件通知,請執行下列操作:

  1. 前往 Google Cloud 控制台的「Google Kubernetes Engine」頁面:

    前往「Google Kubernetes Engine」

  2. 查看特定叢集的「通知」欄,找出與擴縮相關的通知。

  3. 按一下通知即可查看詳細資訊、建議動作,以及存取此事件的記錄。

事件類型

所有記錄的事件都採用 JSON 格式,且位於記錄項目的 jsonPayload 欄位中。事件中的所有時間戳記都是 UNIX 秒數時間戳記。

以下是叢集自動配置器發出的事件類型摘要:

事件類型 說明
status 定期發生,並說明叢集自動調度器觀察到的所有自動調度資源節點集區大小,以及所有自動調度資源節點集區的目標大小。
scaleUp 叢集自動配置器擴充叢集時會發生。
scaleDown 叢集自動配置器縮減叢集資源時會發生。
eventResult 當 scaleUp 或 scaleDown 事件成功或失敗時,就會發生這個事件。
nodePoolCreated 啟用節點自動佈建功能的叢集自動配置器建立新的節點集區時,就會發生這種情況。
nodePoolDeleted 當啟用節點自動佈建功能的叢集自動調度器刪除節點集區時,就會發生這種情況。
noScaleUp 當叢集中有無法排程的 Pod,且叢集自動調度器無法擴充叢集來容納這些 Pod 時,就會發生這種情況。
noScaleDown 當叢集自動配置器阻止刪除節點時,就會發生這種情況。

狀態事件

系統會定期發出 status 事件,說明叢集自動調度器觀察到的所有自動調度資源節點集區實際大小,以及所有自動調度資源節點集區的目標大小。

範例

下列記錄範例顯示 status 事件:

{
  "status": {
    "autoscaledNodesCount": 4,
    "autoscaledNodesTarget": 4,
    "measureTime": "1582898536"
  }
}

ScaleUp 活動

叢集自動配置器調度叢集資源時,會發出 scaleUp 事件。 自動調度器會擴充節點集區的基礎代管執行個體群組 (MIG),藉此增加叢集節點集區的大小。如要進一步瞭解擴充作業的運作方式,請參閱 Kubernetes 叢集自動配置器常見問題中的「擴充作業的運作方式為何?」一節。

這項事件包含的資訊包括:哪些 MIG 擴充了節點數量、擴充了多少節點,以及哪些無法排定的 Pod 觸發了這項事件。

觸發 Pod 清單會截斷,只顯示 50 個任意項目。實際觸發的 Pod 數量會顯示在 triggeringPodsTotalCount 欄位中。

範例

下列記錄範例顯示 scaleUp 事件:

{
  "decision": {
    "decideTime": "1582124907",
    "eventId": "ed5cb16d-b06f-457c-a46d-f75dcca1f1ee",
    "scaleUp": {
      "increasedMigs": [
        {
          "mig": {
            "name": "test-cluster-default-pool-a0c72690-grp",
            "nodepool": "default-pool",
            "zone": "us-central1-c"
          },
          "requestedNodes": 1
        }
      ],
      "triggeringPods": [
        {
          "controller": {
            "apiVersion": "apps/v1",
            "kind": "ReplicaSet",
            "name": "test-85958b848b"
          },
          "name": "test-85958b848b-ptc7n",
          "namespace": "default"
        }
      ],
      "triggeringPodsTotalCount": 1
    }
  }
}

ScaleDown 事件

叢集自動配置器縮減叢集資源時,會發出 scaleDown 事件。如要進一步瞭解縮減作業的運作方式,請參閱 Kubernetes 叢集自動配置器常見問題中的「縮減作業的運作方式」。

cpuRatiomemRatio 欄位會以百分比形式,說明節點的 CPU 和記憶體使用率。這項使用率是 Pod 要求總和除以節點可分配資源,而非實際使用率。

遭逐出的 Pod 清單會截斷,只顯示 50 個任意項目。您可以在 evictedPodsTotalCount 欄位中找到實際遭逐出的 Pod 數量。

使用下列查詢,確認叢集自動配置器是否縮減節點:

resource.type="k8s_cluster" \
resource.labels.location=COMPUTE_REGION \
resource.labels.cluster_name=CLUSTER_NAME \
log_id("container.googleapis.com/cluster-autoscaler-visibility") \
( "decision" NOT "noDecisionStatus" )

更改下列內容:

  • CLUSTER_NAME:叢集名稱。

  • COMPUTE_REGION:叢集的 Compute Engine 區域,例如 us-central1

範例

下列記錄範例顯示 scaleDown 事件:

{
  "decision": {
    "decideTime": "1580594665",
    "eventId": "340dac18-8152-46ff-b79a-747f70854c81",
    "scaleDown": {
      "nodesToBeRemoved": [
        {
          "evictedPods": [
            {
              "controller": {
                "apiVersion": "apps/v1",
                "kind": "ReplicaSet",
                "name": "kube-dns-5c44c7b6b6"
              },
              "name": "kube-dns-5c44c7b6b6-xvpbk"
            }
          ],
          "evictedPodsTotalCount": 1,
          "node": {
            "cpuRatio": 23,
            "memRatio": 5,
            "mig": {
              "name": "test-cluster-default-pool-c47ef39f-grp",
              "nodepool": "default-pool",
              "zone": "us-central1-f"
            },
            "name": "test-cluster-default-pool-c47ef39f-p395"
          }
        }
      ]
    }
  }
}

您也可以在沒有執行工作負載的節點上查看 scale-down 事件 (通常只有 DaemonSet 建立的系統 Pod)。

使用下列查詢查看事件記錄:

resource.type="k8s_cluster" \
resource.labels.project_id=PROJECT_ID \
resource.labels.location=COMPUTE_REGION \
resource.labels.cluster_name=CLUSTER_NAME \
severity>=DEFAULT \
logName="projects/PROJECT_ID/logs/events" \
("Scale-down: removing empty node")

更改下列內容:

  • PROJECT_ID:您的專案 ID。

  • CLUSTER_NAME:叢集名稱。

  • COMPUTE_REGION:叢集的 Compute Engine 區域,例如 us-central1

EventResult 事件

當 scaleUp 或 scaleDown 事件成功或失敗時,系統會發出 eventResult 事件。這個事件包含事件 ID 清單 (來自 scaleUp 或 scaleDown 事件的 eventId 欄位),以及錯誤訊息。如果錯誤訊息為空白,表示事件已順利完成。results 欄位會匯總 eventResult 事件清單。

如要診斷錯誤,請參閱「向上擴充錯誤」和「向下擴充錯誤」一節。

範例

下列記錄範例顯示 eventResult 事件:

{
  "resultInfo": {
    "measureTime": "1582878896",
    "results": [
      {
        "eventId": "2fca91cd-7345-47fc-9770-838e05e28b17"
      },
      {
        "errorMsg": {
          "messageId": "scale.down.error.failed.to.delete.node.min.size.reached",
          "parameters": [
            "test-cluster-default-pool-5c90f485-nk80"
          ]
        },
        "eventId": "ea2e964c-49b8-4cd7-8fa9-fefb0827f9a6"
      }
    ]
  }
}

NodePoolCreated 事件

啟用節點自動佈建功能的叢集自動配置器建立新的節點集區時,會發出 nodePoolCreated 事件。這項事件包含所建立節點集區的名稱,以及其基礎 MIG 的清單。如果節點集區是因 scaleUp 事件而建立,則對應 scaleUp 事件的 eventId 會納入 triggeringScaleUpId 欄位。

範例

下列記錄範例顯示 nodePoolCreated 事件:

{
  "decision": {
    "decideTime": "1585838544",
    "eventId": "822d272c-f4f3-44cf-9326-9cad79c58718",
    "nodePoolCreated": {
      "nodePools": [
        {
          "migs": [
            {
              "name": "test-cluster-nap-n1-standard--b4fcc348-grp",
              "nodepool": "nap-n1-standard-1-1kwag2qv",
              "zone": "us-central1-f"
            },
            {
              "name": "test-cluster-nap-n1-standard--jfla8215-grp",
              "nodepool": "nap-n1-standard-1-1kwag2qv",
              "zone": "us-central1-c"
            }
          ],
          "name": "nap-n1-standard-1-1kwag2qv"
        }
      ],
      "triggeringScaleUpId": "d25e0e6e-25e3-4755-98eb-49b38e54a728"
    }
  }
}

NodePoolDeleted 事件

啟用節點自動佈建功能的叢集自動配置器刪除節點集區時,會傳送 nodePoolDeleted 事件。

範例

下列記錄範例顯示 nodePoolDeleted 事件:

{
  "decision": {
    "decideTime": "1585830461",
    "eventId": "68b0d1c7-b684-4542-bc19-f030922fb820",
    "nodePoolDeleted": {
      "nodePoolNames": [
        "nap-n1-highcpu-8-ydj4ewil"
      ]
    }
  }
}

NoScaleUp 事件

如果叢集中有無法排程的 Pod,且叢集自動配置器無法擴充叢集來容納這些 Pod,系統就會定期發出 noScaleUp 事件。

  • noScaleUp 事件是盡力而為的事件,也就是說,這些事件不會涵蓋叢集自動配置器無法向上擴充的所有可能原因。
  • 系統會節流 noScaleUp 事件,以限制產生的記錄量。每個持續性原因只會每隔幾分鐘發出一次。
  • 所有原因都可以任意拆分成多個事件。舉例來說,單一 Pod 群組的所有遭拒 MIG 原因不保證會出現在同一個事件中。
  • 未處理的 Pod 群組清單會截斷為 50 個任意項目。實際未處理的 Pod 群組數量可在 unhandledPodGroupsTotalCount 欄位中找到。

原因欄位

以下欄位有助於說明向上擴充失敗的原因:

  • reason:提供全域原因,說明為什麼叢集自動配置器無法向上擴充。詳情請參閱「NoScaleUp 頂層原因」一節。
  • napFailureReason:提供全域原因,說明叢集自動配置器無法佈建其他節點集區的原因 (例如節點自動佈建功能已停用)。詳情請參閱「NoScaleUp 頂層節點自動佈建原因」一節。
  • skippedMigs[].reason:提供特定 MIG 遭到略過的原因。在嘗試擴充期間,叢集自動調度器會略過某些 MIG,不將其納入任何 Pod 的考量 (例如,因為新增節點會超出整個叢集的資源限制)。詳情請參閱「NoScaleUp MIG 層級原因」一節。
  • unhandledPodGroups:包含特定無法排程的 Pod 群組未觸發擴充的原因。Pod 會依據直接控制器分組。沒有控制器的 Pod 會自行組成群組。每個 Pod 群組都包含任意範例 Pod 和群組中的 Pod 數量,以及下列原因:
    • napFailureReasons:叢集自動調度器無法佈建新節點集區來容納這個 Pod 群組的原因 (例如 Pod 有親和性限制)。詳情請參閱「NoScaleUp Pod-level node auto-provisioning reasons」(無法向上擴充 Pod 層級節點自動佈建功能的原因) 一節。
    • rejectedMigs[].reason:叢集自動調度器無法增加特定 MIG 大小來容納這個 Pod 群組的原因 (例如,MIG 的節點太小,無法容納 Pod)。詳情請參閱「NoScaleUp MIG 層級原因」一節。

範例

下列記錄範例顯示 noScaleUp 事件:

{
  "noDecisionStatus": {
    "measureTime": "1582523362",
    "noScaleUp": {
      "skippedMigs": [
        {
          "mig": {
            "name": "test-cluster-nap-n1-highmem-4-fbdca585-grp",
            "nodepool": "nap-n1-highmem-4-1cywzhvf",
            "zone": "us-central1-f"
          },
          "reason": {
            "messageId": "no.scale.up.mig.skipped",
            "parameters": [
              "max cluster cpu limit reached"
            ]
          }
        }
      ],
      "unhandledPodGroups": [
        {
          "napFailureReasons": [
            {
              "messageId": "no.scale.up.nap.pod.zonal.resources.exceeded",
              "parameters": [
                "us-central1-f"
              ]
            }
          ],
          "podGroup": {
            "samplePod": {
              "controller": {
                "apiVersion": "v1",
                "kind": "ReplicationController",
                "name": "memory-reservation2"
              },
              "name": "memory-reservation2-6zg8m",
              "namespace": "autoscaling-1661"
            },
            "totalPodCount": 1
          },
          "rejectedMigs": [
            {
              "mig": {
                "name": "test-cluster-default-pool-b1808ff9-grp",
                "nodepool": "default-pool",
                "zone": "us-central1-f"
              },
              "reason": {
                "messageId": "no.scale.up.mig.failing.predicate",
                "parameters": [
                  "NodeResourcesFit",
                  "Insufficient memory"
                ]
              }
            }
          ]
        }
      ],
      "unhandledPodGroupsTotalCount": 1
    }
  }
}

NoScaleDown 事件

如果叢集自動配置器無法刪除節點,系統會定期傳送 noScaleDown 事件。

  • 如果節點使用率偏高而無法移除,就不會納入 noScaleDown 事件。
  • NoScaleDown 事件是盡力而為的結果,也就是說,這些事件不會涵蓋叢集自動調度資源無法縮減的所有可能原因。
  • 系統會節流 NoScaleDown 事件,以限制產生的記錄檔量。每個持續性原因只會每隔幾分鐘發出一次。
  • 節點清單會截斷為 50 個任意項目。實際節點數會顯示在 nodesTotalCount 欄位中。

原因欄位

下列欄位有助於說明為什麼未縮減:

  • reason:提供全域原因,說明為什麼叢集自動配置器無法向下擴充 (例如最近向上擴充後的回溯期)。詳情請參閱「NoScaleDown 頂層原因」一節。
  • nodes[].reason:提供每個節點的原因,說明叢集自動配置器無法刪除特定節點的原因 (例如,沒有可供節點 Pod 遷移的位置)。詳情請參閱「NoScaleDown 節點層級原因」一節。

範例

下列記錄範例顯示 noScaleDown 事件:

{
  "noDecisionStatus": {
    "measureTime": "1582858723",
    "noScaleDown": {
      "nodes": [
        {
          "node": {
            "cpuRatio": 42,
            "mig": {
              "name": "test-cluster-default-pool-f74c1617-grp",
              "nodepool": "default-pool",
              "zone": "us-central1-c"
            },
            "name": "test-cluster-default-pool-f74c1617-fbhk"
          },
          "reason": {
            "messageId": "no.scale.down.node.no.place.to.move.pods"
          }
        }
      ],
      "nodesTotalCount": 1,
      "reason": {
        "messageId": "no.scale.down.in.backoff"
      }
    }
  }
}

訊息

叢集自動調度器發出的事件會使用參數化訊息,說明事件原因。parameters 欄位可與 messageId 欄位搭配使用,例如這個 NoScaleUp 事件的記錄範例

本節將說明各種 messageId 及其對應的參數。不過,這個部分不會列出所有可能出現的訊息,而且隨時可能擴充。

ScaleUp 錯誤

您可以在對應的 eventResult 事件中,於 resultInfo.results[].errorMsg 欄位查看 scaleUp 事件的錯誤訊息。

訊息 詳細資料 參數 減緩
"scale.up.error.out.of.resources" 如果您嘗試在無法滿足要求的區域中要求新資源,就會發生資源錯誤,因為目前無法使用 Compute Engine 資源,例如 GPU 或 CPU。 失敗的 MIG ID。 請按照 Compute Engine 說明文件中的資源可用性疑難排解步驟操作。
"scale.up.error.quota.exceeded" 由於超過 Compute Engine 配額,部分 MIG 無法增加,因此 scaleUp 事件失敗。 失敗的 MIG ID。 在 Google Cloud 控制台中檢查 MIG 的「Errors」分頁,瞭解超出哪個配額。瞭解超出配額的項目後,請按照操作說明要求提高配額
"scale.up.error.waiting.for.instances.timeout" 代管執行個體群組向上擴充時發生逾時情況,因此無法向上擴充。 失敗的 MIG ID。 這則訊息應該是暫時性的。 如果問題仍未解決, 請與 Cloud Customer Care 團隊聯絡, 以便進一步調查。
"scale.up.error.ip.space.exhausted" 部分代管執行個體群組中的執行個體已用盡 IP 位置,因此無法向上擴充。這表示叢集沒有足夠的未分配 IP 位址空間,無法新增節點或 Pod。 失敗的 MIG ID。 請按照「沒有足夠的 IP 空間可供 Pod 使用」一文的疑難排解步驟操作。
"scale.up.error.service.account.deleted" 服務帳戶已刪除,因此無法向上擴充。 失敗的 MIG ID。 請嘗試取消刪除服務帳戶。 如果上述程序無法解決問題,請與 Cloud Customer Care 團隊聯絡, 以便進一步調查。

noScaleUp 事件的原因

如果叢集中有無法排程的 Pod,且叢集自動配置器無法擴充叢集來排程 Pod,系統就會定期發出 noScaleUp 事件。noScaleUp 事件是盡可能提供,並未涵蓋所有可能情況。

NoScaleUp 頂層原因

noScaleUp 事件的頂層原因訊息會顯示在 noDecisionStatus.noScaleUp.reason 欄位中。訊息包含頂層原因,說明叢集自動調度器無法向上擴充叢集。

訊息 詳細資料 減緩
"no.scale.up.in.backoff" 向上擴充作業處於輪詢期間 (暫時遭到封鎖),因此並未向上擴充。如果 Pod 數量眾多,擴增事件期間可能會出現這則訊息。 這則訊息應該是暫時性的。請在幾分鐘後檢查這項錯誤。 如果這個訊息持續顯示, 請與 Cloud Customer Care 團隊聯絡, 以便進一步調查。

NoScaleUp 頂層節點自動佈建原因

noScaleUp 事件的頂層節點自動佈建原因訊息會顯示在 noDecisionStatus.noScaleUp.napFailureReason 欄位中。訊息包含叢集自動調整器無法佈建新節點集區的頂層原因。

訊息 詳細資料 減緩
"no.scale.up.nap.disabled"

節點自動佈建功能未在叢集層級啟用,因此無法向上擴充。

如果停用節點自動佈建功能,且擱置中的 Pod 具有任何現有節點集區無法滿足的要求,系統就不會自動佈建新節點。

查看叢集設定,並考慮啟用節點自動佈建功能

NoScaleUp MIG 層級原因

noScaleUp 事件的 MIG 層級原因訊息會顯示在 noDecisionStatus.noScaleUp.skippedMigs[].reasonnoDecisionStatus.noScaleUp.unhandledPodGroups[].rejectedMigs[].reason 欄位中。訊息會說明叢集自動配置器無法增加特定 MIG 大小的原因。

訊息 詳細資料 參數 減緩
"no.scale.up.mig.skipped" 模擬期間略過了 MIG,因此無法向上擴充。 略過 MIG 的原因 (例如缺少 Pod 要求)。 查看錯誤訊息中包含的參數,並解決 MIG 遭到略過的原因。
"no.scale.up.mig.failing.predicate" 無法排定述語,因此無法向上擴充節點集區, 擱置中的 Pod 也是如此。 失敗述詞的名稱和失敗原因。 查看 Pod 規定,例如 相依性規則、 taint 或容許條件,以及資源需求。

NoScaleUp Pod 群組層級節點自動佈建原因

Pod 群組層級的節點自動佈建原因訊息會顯示在 noScaleUp 事件的 noDecisionStatus.noScaleUp.unhandledPodGroups[].napFailureReasons[] 欄位中。訊息會說明叢集自動配置器無法佈建新節點集區,以排定特定 Pod 群組的原因。

訊息 詳細資料 參數 減緩
"no.scale.up.nap.pod.gpu.no.limit.defined" 節點自動佈建功能無法佈建任何節點群組,因為擱置中的 Pod 設有 GPU 要求,但未在叢集層級定義 GPU 資源限制 要求的 GPU 類型。 查看擱置中 Pod 的 GPU 要求,並更新叢集層級的節點自動佈建設定,以設定 GPU 限制
"no.scale.up.nap.pod.gpu.type.not.supported" Pod 要求不明 GPU 類型,因此節點自動佈建功能並未為 Pod 佈建任何節點群組。 要求的 GPU 類型。 檢查待處理 Pod 的 GPU 類型設定,確保與支援的 GPU 類型相符。
"no.scale.up.nap.pod.zonal.resources.exceeded" 節點自動佈建功能並未針對這個可用區內的 Pod 佈建任何節點群組,因為這麼做會違反整個叢集的資源上限、超出可用區的可用資源,或是沒有符合要求的機器類型。 所考慮的區域名稱。 查看及更新整個叢集的資源上限、Pod 資源要求,或節點自動佈建功能的可用區
"no.scale.up.nap.pod.zonal.failing.predicates" 述詞無法正常運作,節點自動佈建功能並未為這個可用區中的 Pod 佈建任何節點群組。 所考量的區域名稱,以及述詞失敗的原因。 查看待處理 Pod 的規定,例如相依性規則、taint、容許條件或資源需求。

ScaleDown 錯誤

您可以在對應的 eventResult 事件中,於 resultInfo.results[].errorMsg 欄位查看 scaleDown 事件的錯誤事件訊息。

事件訊息 詳細資料 參數 減緩
"scale.down.error.failed.to.mark.to.be.deleted" 無法將節點標示為待刪除。 失敗的節點名稱。 這則訊息應該是暫時性的。 如果問題仍未解決, 請與 Cloud Customer Care 團隊聯絡, 以便進一步調查。
"scale.down.error.failed.to.evict.pods" 無法從節點中移出某些 Pod,因此叢集自動調整器無法縮減資源配置。 失敗的節點名稱。 查看 Pod 的 PodDisruptionBudget,並確保規則允許在可接受的情況下移出應用程式副本。如要瞭解詳情,請參閱 Kubernetes 說明文件中的「為應用程式指定中斷預算」。
"scale.down.error.failed.to.delete.node.min.size.reached" 叢集大小已達下限,無法刪除節點,因此叢集自動配置器無法縮減資源配置。 失敗的節點名稱。 查看為節點集區自動調度資源設定的最小值,並視需要調整設定。 詳情請參閱「錯誤:叢集中的節點已達到最小大小」。

noScaleDown 事件的原因

如果叢集自動配置器無法刪除節點,系統會定期傳送 noScaleDown 事件。noScaleDown 事件是盡力而為的結果,並未涵蓋所有可能情況。

NoScaleDown 頂層原因

noScaleDown 事件的頂層原因訊息會顯示在 noDecisionStatus.noScaleDown.reason 欄位中。訊息包含頂層原因,說明叢集自動配置器無法縮減叢集的原因。

事件訊息 詳細資料 減緩
"no.scale.down.in.backoff" 叢集自動調度器無法縮減資源,因為縮減作業處於輪詢期間 (暫時遭到封鎖)。

這則訊息應該是暫時性的,且可能在近期發生擴充事件時出現。

如果訊息持續顯示,請與 Cloud Customer Care 團隊聯絡,以進一步調查。

"no.scale.down.in.progress"

先前的縮減作業仍在執行,因此叢集自動配置器無法縮減資源。

這則訊息應該是暫時性的,因為 Pod 最終會移除。如果經常出現這則訊息,請檢查阻礙縮減的 Pod 終止寬限期。如要加快解決問題的速度,也可以刪除不再需要的 Pod。

NoScaleDown 節點層級原因

noScaleDown 事件的節點層級原因訊息會顯示在 noDecisionStatus.noScaleDown.nodes[].reason field 中。訊息會說明叢集自動配置器無法移除特定節點的原因。

事件訊息 詳細資料 參數 減緩
"no.scale.down.node.scale.down.disabled.annotation" 叢集自動調度器無法從節點集區移除節點,因為節點已使用 cluster-autoscaler.kubernetes.io/scale-down-disabled: true 註解。 不適用 叢集自動配置器會略過具有這項註解的節點,不會考量節點的用量,且無論節點的用量因素為何,系統都會記錄這則訊息。如要讓叢集自動配置器縮減這些節點,請移除註解。
"no.scale.down.node.node.group.min.size.reached"

節點群組大小未達下限,因此叢集自動配置器無法縮減資源。

這是因為移除節點會違反節點自動佈建設定中定義的整個叢集資源最低限制。

不適用 查看為節點集區自動調度資源設定的最小值。如要讓叢集自動調度器縮減這個節點,請調整最小值
"no.scale.down.node.minimal.resource.limits.exceeded"

叢集自動調度器無法縮減節點資源,因為這會違反整個叢集的資源最低限制。

這是為節點自動佈建功能設定的資源限制。

不適用 查看記憶體和 vCPU 的限制,然後 降低限制,讓叢集自動調度器縮減這個節點。
"no.scale.down.node.no.place.to.move.pods" 叢集自動調度器無法縮減資源,因為沒有可移動 Pod 的位置。 不適用 如果預期 Pod 應重新排程,請查看未充分運用節點上 Pod 的排程需求,判斷這些 Pod 是否可以移至叢集中的其他節點。詳情請參閱「錯誤:沒有可移動 Pod 的位置」。
"no.scale.down.node.pod.not.backed.by.controller"

Pod 不受控制器支援,因此已封鎖縮減作業。

具體來說,叢集自動調度器無法縮減未充分利用的節點,因為 Pod 缺少可辨識的控制器。允許的控制器包括 ReplicationController、DaemonSet、Job、StatefulSet 或 ReplicaSet。

封鎖 Pod 的名稱。 為 Pod 設定註解,或定義可接受的控制器。"cluster-autoscaler.kubernetes.io/safe-to-evict": "true"
"no.scale.down.node.pod.not.safe.to.evict.annotation" 節點上的 Pod 具有 safe-to-evict=false 註解。 封鎖 Pod 的名稱。 如果可以安全地撤銷 Pod,請編輯 Pod 的資訊清單,並將註解更新為 "cluster-autoscaler.kubernetes.io/safe-to-evict": "true"
"no.scale.down.node.pod.kube.system.unmovable" Pod 並非 DaemonSet、並未建立鏡射,也不是 kube-system 命名空間中沒有 PodDisruptionBudget 的 Pod,因此已封鎖縮減作業。 封鎖 Pod 的名稱。

在 1.32.4-gke.1236000 之前的 GKE 版本中,叢集自動調度器不會移除 kube-system 命名空間中的 Pod。從 1.32.4-gke.1236000 版開始,叢集自動調整程式會在 Pod 建立一小時後,考慮移除這些 Pod。

如要解決這個問題,請為 kube-system Pod 新增 PodDisruptionBudget,或使用節點集區 taint 和容許條件的組合,將 kube-system Pod 與應用程式 Pod 分開。詳情請參閱「錯誤:kube-system Pod 無法移動」。

"no.scale.down.node.pod.not.enough.pdb" Pod 中斷預算不足,因此已封鎖縮減作業。 封鎖 Pod 的名稱。 查看 Pod 的 PodDisruptionBudget,並考慮降低限制。詳情請參閱「錯誤:PodDisruptionBudget 不足」。
"no.scale.down.node.pod.controller.not.found" 找不到 Pod 控制器 (例如 Deployment 或 ReplicaSet),因此已封鎖縮減作業。 不適用 如要判斷在移除控制器後,哪些動作導致 Pod 繼續執行,請查看記錄。如要解決這個問題,請手動刪除 Pod。
"no.scale.down.node.pod.unexpected.error" 發生未預期的錯誤,因此 Pod 已封鎖縮減作業。 不適用 目前找不到發生這個錯誤的根本原因。 請與 Cloud Customer Care 團隊聯絡,以進行深入調查。

後續步驟