叢集自動配置器

本頁說明 Google Kubernetes Engine 的叢集自動配置器功能。如要瞭解如何自動調度叢集的資源,請參閱自動調度叢集的資源

總覽

GKE 的叢集自動配置器會根據您要執行的工作負載的需求,自動調整叢集大小。啟用自動調度資源時,如果您建立的新 Pod 的容量不足以執行工作,GKE 會自動將一個新節點加到叢集;相反地,如果叢集中的節點使用量過低,而它的 Pod 可以在其他節點上執行時,GKE 便會刪除該節點。

自動調度叢集資源功能讓您只需支付特定時間內所需的資源,還可以在需求增加時,自動取得額外的資源。

請注意,在自動調度叢集資源的過程中,當系統刪除或移動資源時,您的服務可能會中斷。舉例來說,假設您的服務包含一個具有單一備用資源的控制器,當系統刪除目前的節點時,便可能在不同的節點上重新啟動該備用資源的 Pod。啟用自動調度資源之前,請確認您的服務能夠容忍可能會中斷的情況。

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

叢集自動配置器是以節點集區為基礎運作。自動配置器會定期檢查每個節點集區是否有未排程的 Pod,正在等待有可用資源的節點進行排程。如果有,且自動配置器判斷藉由調整節點集區大小可為等待中的 Pod 進行排程,自動配置器便會擴展節點集區。

叢集自動配置器也會測量每個節點的使用情況,並與節點集區的總需求容量進行比較。如果在固定的時間內,節點上沒有排定新的 Pod,且在該節點上執行的所有 Pod 可以排程到集區中的其他節點時,自動配置器便會移動 Pod 並刪除該節點。如果該節點在 10 分鐘後無法正常排除,則強制終止節點。寬限期不適用於 GKE 叢集。

叢集自動調度資源是以 Pod 的資源要求為基礎、依您的 Pod「要求的」資源數量而定。叢集自動配置器不會計入 Pod 目前「使用中」的資源。基本上,叢集自動配置器會相信您提出的是準確的 Pod 資源要求,然後根據該假設將 Pod 排程到節點上。

如果 Pod 要求的資源過少 (或未變更預設值而導致資源不足) 且您沒有足夠的節點,叢集自動配置器將不會更正此情況。您可以為所有工作負載做出明確的資源要求,協助確保叢集自動配置器盡可能準確地運作。

作業條件

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

  • 所有備用的 Pod 可在其他節點上重新啟動,並可能讓服務短暫中斷。如果您的服務無法容忍中斷,則不建議使用自動調度資源。
  • 使用者或管理員不手動管理節點;自動調度資源可能會覆寫您所執行的任何手動節點管理作業。
  • 單一節點集區中的所有節點具有一組相同的標籤。
  • 叢集自動配置器會考量執行個體類型在不同集區中的相對成本,試著擴充成本最低的節點集區。含有先佔 VM 的節點集區所減少的費用已計算在內。
  • 系統不會追蹤一開始建立叢集或節點集區之後手動新增的標籤。由叢集自動配置器建立的節點會被指派在建立節點集區時以 --node-labels 指定的標籤。

跨區域平衡

如果節點集區包含具有相同執行個體類型的多個代管執行個體群組,則叢集自動調度資源功能將會「在資源調度時」嘗試保持這些代管執行個體群組大小的平衡。這有助於防止節點集區中多區域代管執行個體群組中不均勻的節點分佈。

如要進一步瞭解叢集自動配置器如何進行平衡決策,請參閱 Kubernetes 說明文件的自動調度資源常見問題

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

您可以為叢集中的每個節點集區指定大小上限和下限,叢集自動配置器便會在這些界線內進行重新調整資源的決策。啟用自動調度資源時,如果目前的節點集區大小小於指定的下限或大於指定的上限,自動配置器會等到節點集區需要新節點,或節點可以安全地從節點集區中刪除時,才會發揮效用。

自動調度資源限制

自動調整叢集的資源時,節點集區的資源調度限制取決於區域可用性。

例如,下列指令會建立自動調度資源的多區域叢集,其中包含三個區域共六個節點,每個區域至少要有一個節點,最多可有四個節點:

gcloud container clusters create example-cluster \
--zone us-central1-a \
--node-locations us-central1-a,us-central1-b,us-central1-f \
--num-nodes 2 --enable-autoscaling --min-nodes 1 --max-nodes 4

這個叢集的總大小是分散在三個區域的 3 到 12 個節點。如果其中一個區域故障,則叢集的總大小會變成 2 到 8 個節點。

考慮 Pod 的排程與服務中斷

叢集自動配置器在縮減資源時,會遵循 Pod 上的排程和移除規則。這些限制可能會讓自動配置器無法刪除節點。如果節點包含的 Pod 具有下述任一情況,將無法刪除節點:

  • Pod 的相依性或反相依性規則會阻止重新排程。
  • Pod 有本機儲存空間。
  • Pod 並非由控制器 (如 Deployment、StatefulSet、Job 或 ReplicaSet) 所管理。

應用程式的 PodDisruptionBudget 也可能會阻礙自動調度資源功能;如果刪除節點會造成預算超過,叢集將不會縮減資源。

其他資訊

如需進一步瞭解叢集自動配置器,請參閱開放原始碼 Kubernetes 專案的自動調度資源常見問題

限制

叢集自動配置器有以下限制:

  • 叢集自動配置器最多支援 1000 個節點,每個節點執行 30 個 Pod。如要進一步瞭解可擴充性保證,請參閱可擴充性報告
  • 縮減資源時,叢集自動配置器支援一個終止 Pod 的寬限期,最長 10 分鐘。超過 10 分鐘的上限後,即使 Pod 有更長的寬限期設定,仍會強制終止 Pod。
  • 有時,叢集自動調度資源功能會無法完全縮減,且在縮減後會存在額外的節點。當所需的系統 Pod 被安排到不同節點時會發生這種情況,因為沒有任何觸發條件可以將任何這些 Pod 移動到不同的節點。請參閱我有幾個利用率低的節點,但它們並沒有縮減,為什麼會這樣?如要解決這項限制,您可以設定 Pod 中斷預算設定

後續步驟

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
Kubernetes Engine 說明文件