本文說明節點集區在 Google Kubernetes Engine (GKE) 中的運作方式。節點集區是標準叢集中具有相同配置的一組節點。在 GKE 標準模式中,您可以為節點集區選擇多種選項,滿足工作負載需求。如果您選擇使用 Autopilot,則不需要設定節點集區:GKE 會為您管理節點,但如有需要,您可以在標準叢集中手動升級 Autopilot 管理的節點集區。
如要進一步瞭解如何建立標準模式叢集,請參閱「建立地區叢集」和「建立區域叢集」。如要瞭解如何管理現有 Standard 叢集中的節點集區,請參閱「新增及管理節點集區」。
總覽
節點集區是叢集中具有相同配置的一組節點。節點集區會使用 NodeConfig 規格。集區中的每個節點都具有 Kubernetes 節點標籤 (cloud.google.com/gke-nodepool),並以節點集區的名稱做為值。
建立標準模式叢集時,系統會使用您指定的節點數量和類型,建立叢集的第一個節點集區。根據預設,這個第一個節點集區 (稱為預設節點集區) 會在每個叢集的運算區域中包含三個節點,並使用預設節點映像檔 cos_containerd 和一般用途機器類型。您可以根據工作負載需求,為節點集區指定各種屬性。例如,您可以在叢集中使用本機 SSD、CPU 平台基本要求、Spot VM、不同的節點映像檔、不同的機型,或更有效率的虛擬網路介面,來建立節點集區。
接下來,您可以將其他不同大小和類型的節點集區加入叢集。任何特定節點集區中的所有節點都彼此相同。
當您要排程的 Pod 比其他 Pod 需要更多資源 (例如更多記憶體或更多本機磁碟空間) 時,自訂節點集區就非常實用。如要進一步控管 Pod 的排程位置,請使用節點 taint。
您可以建立、升級及刪除個別節點集區,而不會影響到整個叢集。您無法設定節點集區中的單一節點;任何設定變更都會影響節點集區中的所有節點。
如要調整叢集中的節點集區大小,可以新增或移除節點。
根據預設,所有新的節點集區都會執行與控制層相同的 Kubernetes 版本。現有節點集區可以手動升級或自動升級。您也可以在叢集中的每個節點集區上執行多個 Kubernetes 節點版本、分別升級每個節點集區,以及針對特定部署指定不同的節點集區。
Autopilot 代管的節點集區
在 Standard 叢集中,除了本文所述的 Standard 節點集區外,您也可以使用 Autopilot 管理的節點集區,這類節點集區由 GKE 建立及管理,適用於 Autopilot ComputeClass。詳情請參閱關於 GKE Standard 中的 Autopilot 模式工作負載。
您可以手動升級這類節點集區。不過,您無法執行升級 (版本變更) 以外的其他類型更新。您也無法刪除節點集區。
將服務部署至特定節點集區
定義服務時,您可以間接控制該服務被部署至哪一個節點集區。節點集區不取決於服務的設定,而是取決於 Pod 的設定。
您可以在 Pod 資訊清單中設定
nodeSelector,明確地將 Pod 部署至特定節點集區。這樣會強制某個 Pod 僅在該節點集區中的節點上執行。 如需範例,請參閱將 Pod 部署至特定節點集區。您可以指定容器對資源的要求。 Pod 只會在滿足資源要求的節點上執行。舉例來說,如果 Pod 定義包含需要 4 個 CPU 的容器,Service 就不會選擇在具有兩個 CPU 的節點上執行的 Pod。
多區域叢集中的節點
如果建立了多區域叢集,則所有節點集區都會自動複製到這些區域。如果您建立了任何新的節點集區,這些區域中也會自動建立。同樣地,如果您刪除了這些區域中的節點集區,系統也會從其他區域中刪除。
請注意,在建立節點集區時,這種相乘性效應可能會耗用較多特定地區的專案配額。
刪除節點集區
刪除節點集區時,GKE 會排空節點集區中的所有節點,並刪除及重新排定所有 Pod。在排除程序中,GKE 會刪除節點集區中每個節點上的 Pod。節點集區中的每個節點都會在 MAX_POD 的終止寬限期後刪除 Pod,藉此清空節點。MAX_POD 是節點上排程的 Pod 設定的terminationGracePeriodSeconds上限,上限為一小時。PodDisruptionBudget
設定不會在節點集區刪除期間生效。
如果 Pod 具有特定的節點選取器,當叢集中沒有其他節點能滿足條件時,Pod 可能會保持無法排程的狀態。
刪除叢集時,GKE 不會執行這個程序,而是直接排空節點並正常終止。如果叢集上執行的工作負載必須正常終止,請先使用 kubectl
drain 清理工作負載,再刪除叢集。
如要刪除節點集區,請參閱「刪除節點集區」。您無法刪除 Autopilot 管理的節點集區。