本文說明叢集自動調度器,這項工具會自動控管節點集區的大小。指定節點集區的節點數量下限和上限時,系統會啟用叢集自動配置器。您可以在建立節點集區或更新節點集區時指定這些值。
GKE on AWS 使用開放原始碼 Kubernetes 叢集自動配置器。
自動調度節點集區資源
叢集自動配置器會依據工作負載需求,自動調整指定節點集區中的節點數量。您不需要手動新增或移除節點,也不必超額佈建節點集區。您只需要指定節點集區的大小上下限,其餘部分會由系統自動處理。
在自動調度叢集資源的過程中,如果系統需要刪除或移動資源,您的工作負載可能會暫時中斷。舉例來說,假設您的工作負載包含一個具有單一副本的控制器,當系統刪除目前的節點時,便可能在不同的節點上重新排定該副本的 Pod。因此,您必須將工作負載設計為可容許潛在的中斷情況,或確保重要 Pod 不會中斷。
叢集自動配置器的運作方式
叢集自動配置器是以節點集區為基礎運作。使用叢集自動調度器設定節點集區時,您會指定節點集區的大小下限和上限。您可以在建立節點集區或更新節點集區時,變更大小下限和上限。
叢集自動調度器會根據節點集區中的資源要求 (而非實際資源用量),自動增加或減少節點集區的大小。如果 Pod 物件無法排程,且節點集區的容量不足以滿足要求,叢集自動配置器就會新增節點。
如果節點使用量過低,且所有 Pod 物件都能排程到較少的節點上,叢集自動調度器也會移除節點。如果節點在 10 分鐘後無法正常排除,則強制終止節點。這段時間無法設定。
如果 Pod 要求的資源過少 (例如預設值不足),叢集自動調度資源不會更正此情況。您可以為所有工作負載建立適當的資源要求,協助確保叢集自動配置器盡可能準確地運作。詳情請參閱「管理容器的資源」。
Pod 註解和叢集自動調度器行為
叢集自動配置器在決定如何調度資源時,會考量特定 Pod 註解。舉例來說,叢集自動配置器支援 "cluster-autoscaler.kubernetes.io/safe-to-evict": "false"
等 Pod 註解。如果將這個註解設為「false」,系統就不會在縮減事件期間移除代管 Pod 的節點。瞭解及使用這些註解,有助於微調自動配置器的行為,以符合工作負載需求。
如要進一步瞭解 Pod 註解及其對叢集自動配置器的影響,請參閱下列資源:
- 哪些類型的 Pod 可以阻止 CA 移除節點? 請參閱叢集自動配置器常見問題。
- Kubernetes 叢集自動配置器官方說明文件
作業條件
叢集自動調度器在調整節點集區大小時,做了下列假設:
- 所有備用的 Pod 物件可在其他節點上重新啟動,並可能讓服務短暫中斷。如果工作負載無法容忍中斷,請將工作負載設為在自動調度資源功能停用的節點集區中執行。詳情請參閱「使用節點汙染控制排程」。
- 叢集自動調度器可以覆寫您執行的任何手動節點管理作業。
- 單一節點集區中的所有節點具有一組相同的標籤。
- 叢集自動配置器會在調度資源後,選取閒置 CPU 最少或未使用的記憶體最少的節點群組。如果您在同一個叢集中有不同大小的節點 (例如高 CPU 或高記憶體節點),這項行為會影響要擴大哪些節點集區。
節點集區大小的上限與下限
您可以使用 min-nodes
和 max-nodes
旗標,為叢集中的每個節點集區指定大小上限和下限。如要停用自動調度資源功能,請將 min-nodes
和 max-nodes
設為相同數字。叢集自動配置器會在這些大小界線內做出調度決策。
設定節點集區大小上限時,請確保大小足夠執行所有工作負載。如果叢集中的節點集區沒有足夠的可用記憶體和 CPU 來執行所有工作負載,可能會發生中斷。
使用 PodDisruptionBudget
保護工作負載
您可以設定 GKE on AWS,透過PodDisruptionBudget
防範工作負載中斷。建立 PodDisruptionBudget
時,您可以指定可用的 Pod 副本數量下限,或隨時可用的 Pod 副本數量上限。詳情請參閱「為應用程式指定中斷預算」。
從零個節點開始擴充
從下列 GKE on AWS 版本開始,叢集自動調度器支援從零個節點擴充節點集區:
- 1.29 以上版本
- 1.28.8-gke.800 以上的 1.28 版本
- 1.27.12-gke.800 以上的 1.27 版本
如果使用舊版,則必須將叢集升級至上述版本,才能使用這項功能。如要為現有叢集啟用這項功能,請將叢集更新至支援的版本,然後更新節點集區的 Kubernetes 版本,執行節點集區的滾動更新。如要進一步瞭解如何更新節點集區,請參閱「更新節點集區」。
叢集自動配置器在進行資源調度決策時,會遵守您在節點集區中定義的標籤和汙點,即使沒有可供參考的節點也一樣。GKE on AWS 會在節點集區的基礎 AWS Auto Scaling 群組上,自動設定必要的標籤和汙點標記。如要進一步瞭解這些標記,請參閱 GitHub 頁面中說明 AWS 叢集自動調度資源設定的「自動探索設定」一節。
設定這些標籤和汙點標記後,GKE on AWS 就能讓叢集自動調度器建立準確的節點範本。節點範本是節點的虛擬代表,包含正確的節點設定、標籤和汙點,即使節點集區中沒有實體節點也一樣。有了這些準確的節點範本,叢集自動配置器就能做出正確的擴充決策。
在節點集區上設定汙染時,請注意 AWS 自動調整群組的限制:如果您套用多個具有相同鍵但不同值-效果組合的汙染,叢集自動調度器只會考量最後套用的汙染 (具有重複的鍵)。
更多資訊
如要進一步瞭解叢集自動配置器和如何防範中斷,請參閱下列資源: