本文說明節點集區在 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 代管的節點集區。