節點集區簡介

本文說明節點集區在 Google Kubernetes Engine (GKE) 中的運作方式。節點集區是 Standard 叢集內的一組節點,全部採用相同的設定。在 GKE Standard 模式中,您可以依據工作負載需求,從多個選項中選擇節點集區。如果選擇使用 Autopilot,就不需要設定節點集區:GKE 會為您管理節點,但如有需要,您也可以手動升級 Standard 叢集中由 Autopilot 管理的節點集區。

如要進一步瞭解如何建立標準模式叢集,請參閱「建立區域叢集」和「建立可用區叢集」。如要瞭解如何管理現有 Standard 叢集中的節點集區,請參閱「新增及管理節點集區」。

總覽

節點集區是叢集內設定相同的一組節點。節點集區會使用 NodeConfig 規格。集區中的每個節點都有 Kubernetes 節點標籤 cloud.google.com/gke-nodepool,其值為節點集區的名稱。

建立標準模式叢集時,系統會根據您指定的節點數量和類型,建立叢集的第一個節點集區。根據預設,這個第一個節點集區 (稱為「預設節點集區」) 由叢集各運算可用區中的三個節點組成,具有預設節點映像檔 cos_containerd和一般用途機型。您可以根據工作負載需求,為節點集區指定各種屬性。舉例來說,您可以在叢集中建立節點集區,並使用本機 SSD、最低 CPU 平台、Spot VM、不同的節點映像檔、不同的機器類型,或更有效率的虛擬網路介面。如果您在建立叢集時指定 --num-nodes=0 旗標,GKE 會略過建立預設節點集區,以便您稍後新增自訂節點集區。這項功能需要 GKE 1.36.4-gke.1469000 以上版本、1.37.1-gke.1153000 以上版本,或 1.38.0-gke.2352000 以上版本。

接著,您可以將其他不同大小和類型的節點集區新增至叢集。任何節點集區中的所有節點都完全相同。

如果需要排定比其他 Pod 耗用更多資源 (例如更多記憶體或本機磁碟空間) 的 Pod,自訂節點集區就非常實用。如要進一步控管 Pod 的排程位置,可以使用節點污點。

您可以個別建立、升級和刪除節點集區,而不會影響整個叢集。您無法設定節點集區中的單一節點,任何設定變更都會影響節點集區中的所有節點。

您可以新增或移除節點,調整叢集中的節點集區大小。

根據預設,所有新節點集區都會執行與控制層相同的 Kubernetes 版本。現有的節點集區可以手動升級或自動升級。您也可以在叢集的每個節點集區上執行多個 Kubernetes 節點版本、獨立升級每個節點集區,以及針對特定部署作業指定不同的節點集區。

Autopilot 代管的節點集區

在 Standard 叢集中,除了本文所述的 Standard 節點集區外,您也可以使用 Autopilot 代管的節點集區,這類集區是由 GKE 建立及管理,適用於 Autopilot ComputeClass。詳情請參閱「關於 GKE Standard 的 Autopilot 模式工作負載」。

您可以手動升級這類節點集區。不過,您無法執行升級 (版本變更) 以外的其他類型更新。您也無法刪除節點集區。

將服務部署至特定節點集區

定義 Service 時,您可以間接控制要將其部署到哪個節點集區。節點集區不取決於 Service 的設定,而是取決於 Pod 的設定。

  • 您可以在 Pod 資訊清單中設定 nodeSelector,明確將 Pod 部署至特定節點集區。這會強制 Pod 只能在該節點集區中的節點上執行。如需範例,請參閱「將 Pod 部署至特定節點集區」。

  • 您可以為容器指定資源要求。Pod 只會在符合資源要求的節點上執行。舉例來說,如果 Pod 定義包含需要四個 CPU 的容器,Service 就不會選取在具有兩個 CPU 的節點上執行的 Pod。

多區域叢集中的節點

如果您建立多可用區叢集,所有節點集區都會自動複製到這些可用區。任何新的節點集區都會自動在這些可用區中建立。同樣地,任何刪除作業也會從其他可用區刪除這些節點集區。

請注意,由於這種乘數效應,建立節點集區時,可能會消耗更多專案在特定區域的配額。

刪除節點集區

刪除節點集區時,GKE 會排空節點集區中的所有節點,刪除並重新排定所有 Pod。在排空程序中,GKE 會刪除節點集區中各個節點上的 Pod。刪除節點時,GKE 會執行下列兩項操作:

  • GKE 會刪除 Pod,並分配 MAX_POD 的安全終止期限,藉此排空節點集區中的每個節點。MAX_POD 是在節點上排定的 Pod 設定的 terminationGracePeriodSeconds 上限,上限為一小時。
  • 根據預設,GKE 在刪除節點集區時不會遵循 PodDisruptionBudget (PDB) 設定。不過,您可以更新節點集區的設定,讓 GKE 在刪除節點集區時遵循 PDB,同樣以一小時為限。遵守 PDB 可讓工作負載有機會移至叢集中的其他節點。如要進一步瞭解如何調整這項設定,請參閱「更新節點集區,在刪除節點集區時遵循 PDB」。

如果 Pod 有特定節點選取器,且叢集中沒有其他節點符合條件,Pod 可能會維持在無法排程的狀態。

刪除叢集時,GKE 不會按照這個程序,透過排空節點來正常終止節點。如果叢集上執行的工作負載必須安全終止,請先使用 kubectl drain 清理工作負載,再刪除叢集。

如要刪除節點集區,請參閱「刪除節點集區」。您無法刪除 Autopilot 代管的節點集區。

後續步驟