叢集自動配置器簡介

本文說明叢集自動調度器,這項工具會自動控管節點集區的大小。指定節點集區的節點數量下限和上限時,系統會啟用叢集自動配置器。您可以在建立節點集區更新節點集區時指定這些值。

Azure 上的 GKE 使用開放原始碼的 Kubernetes 叢集自動配置器。

自動調度節點集區資源

叢集自動配置器會依據工作負載需求,自動調整指定節點集區中的節點數量。您不需要手動新增或移除節點,也不必超額佈建節點集區。您只需要指定節點集區的大小上下限,其餘部分會由系統自動處理。

在自動調度叢集資源的過程中,如果系統需要刪除或移動資源,您的工作負載可能會暫時中斷。舉例來說,假設您的工作負載包含一個具有單一副本的控制器,當系統刪除目前的節點時,便可能在不同的節點上重新排定該副本的 Pod。因此,您必須將工作負載設計為可容許潛在的中斷情況,或確保重要 Pod 不會中斷。

叢集自動配置器的運作方式

叢集自動配置器是以節點集區為基礎運作。使用叢集自動調度器設定節點集區時,您會指定節點集區的大小下限和上限。您可以在建立節點集區更新節點集區時,變更大小下限和上限。

叢集自動調度器會根據節點集區中的資源要求 (而非實際資源用量),自動增加或減少節點集區的大小。如果 Pod 物件無法排程,且節點集區的容量不足以滿足要求,叢集自動配置器就會新增節點。

如果節點使用量過低,且所有 Pod 物件都能排程到較少的節點上,叢集自動調度器也會移除節點。如果節點在 10 分鐘後無法正常排除,則強制終止節點。這段時間無法設定。

如果 Pod 要求的資源過少 (例如預設值不足),叢集自動調度資源不會更正此情況。您可以為所有工作負載建立適當的資源要求,協助確保叢集自動配置器盡可能準確地運作。詳情請參閱「管理容器的資源」。

Pod 註解和叢集自動調度器行為

叢集自動配置器在決定如何調度資源時,會考量特定 Pod 註解。舉例來說,叢集自動配置器支援 "cluster-autoscaler.kubernetes.io/safe-to-evict": "false" 等 Pod 註解。如果將這個註解設為「false」,系統就不會在縮減事件期間移除代管 Pod 的節點。瞭解及使用這些註解,有助於微調自動配置器的行為,以符合工作負載需求。

如要進一步瞭解 Pod 註解及其對叢集自動配置器的影響,請參閱下列資源:

作業條件

叢集自動調度器在調整節點集區大小時,做了下列假設:

  • 所有備用的 Pod 物件可在其他節點上重新啟動,並可能讓服務短暫中斷。如果工作負載無法容忍中斷,請將工作負載設為在自動調度資源功能停用的節點集區中執行。詳情請參閱「使用節點汙染控制排程」。
  • 叢集自動調度器可以覆寫您執行的任何手動節點管理作業。
  • 單一節點集區中的所有節點具有一組相同的標籤。
  • 叢集自動配置器會在調度資源後,選取閒置 CPU 最少或未使用的記憶體最少的節點群組。如果您在同一個叢集中有不同大小的節點 (例如高 CPU 或高記憶體節點),這項行為會影響要擴大哪些節點集區。

節點集區大小的上限與下限

您可以使用 min-nodesmax-nodes 旗標,為叢集中的每個節點集區指定大小上限和下限。如要停用自動調度資源功能,請將 min-nodesmax-nodes 設為相同數字。叢集自動配置器會在這些大小界線內做出調度決策。

設定節點集區大小上限時,請確保大小足夠執行所有工作負載。如果叢集中的節點集區沒有足夠的可用記憶體和 CPU 來執行所有工作負載,可能會發生中斷。

使用 PodDisruptionBudget 保護工作負載

您可以設定 Azure 上的 GKE,透過 PodDisruptionBudget 防範工作負載中斷。建立 PodDisruptionBudget 時,您可以指定可用的 Pod 副本數量下限,或隨時可用的 Pod 副本數量上限。詳情請參閱「為應用程式指定中斷預算」。

更多資訊

如要進一步瞭解叢集自動配置器及如何防範中斷,請參閱下列資源:

後續步驟