本頁面說明節點集區在 Google Kubernetes Engine (GKE) 中的運作方式。節點集區是叢集中具有相同配置的一組節點。在 GKE 標準模式中,您可以為節點集區選擇多種選項,滿足工作負載需求。如果您選擇使用 Autopilot,則不需要設定節點集區:GKE 會為您管理節點。
如要進一步瞭解如何建立標準模式叢集,請參閱「建立地區叢集」和「建立區域叢集」。如要瞭解如何管理現有 Standard 叢集中的節點集區,請參閱「新增及管理節點集區」。
總覽
節點集區是叢集中具有相同配置的一組節點。節點集區會使用 NodeConfig 規格。集區中的每個節點都具有 Kubernetes 節點標籤 (cloud.google.com/gke-nodepool
),並以節點集區的名稱做為值。
建立標準模式叢集時,系統會使用您指定的節點數量和類型,建立叢集的第一個節點集區。根據預設,這個第一個節點集區 (稱為預設節點集區) 會在每個叢集的運算區域中包含三個節點,並使用預設節點映像檔 cos_containerd
和一般用途機器類型。您可以根據工作負載需求,為節點集區指定各種屬性。例如,您可以在叢集中使用本機 SSD、CPU 平台基本要求、Spot VM、不同的節點映像檔、不同的機型,或更有效率的虛擬網路介面,來建立節點集區。
接下來,您可以將其他不同大小和類型的節點集區加入叢集。任何特定節點集區中的所有節點都彼此相同。
當您要排程的 Pod 比其他 Pod 需要更多資源 (例如更多記憶體或更多本機磁碟空間) 時,自訂節點集區就非常實用。如要進一步控管 Pod 的排程位置,請使用節點 taint。
您可以建立、升級及刪除個別節點集區,而不會影響到整個叢集。您無法設定節點集區中的單一節點;任何設定變更都會影響節點集區中的所有節點。
如要調整叢集中的節點集區大小,可以新增或移除節點。
根據預設,所有新的節點集區都會執行與控制層相同的 Kubernetes 版本。現有節點集區可以手動升級或自動升級。您也可以在叢集中的每個節點集區上執行多個 Kubernetes 節點版本、分別更新每個節點集區,以及針對特定部署指定不同的節點集區。
將服務部署至特定節點集區
定義服務時,您可以間接控制該服務被部署至哪一個節點集區。節點集區不取決於服務的設定,而是取決於 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
清除工作負載,再刪除叢集。
如要刪除節點集區,請參閱「刪除節點集區」。