節點集區簡介

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

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

總覽

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

建立標準模式叢集時,系統會使用您指定的節點數量和節點類型,建立叢集的第一個節點集區。根據預設,第一個節點集區 (稱為「預設節點集區」) 包含叢集各個運算可用區中的三個節點,並採用預設節點映像檔 cos_containerd 和一般用途機型。您可以根據工作負載需求,為節點集區指定各種屬性。舉例來說,您可以在叢集中建立節點集區,並使用本機 SSD、最低 CPU 平台、Spot VM、其他節點映像檔、其他機型,或更有效率的虛擬網路介面。

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

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

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

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

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

Autopilot 代管的節點集區

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

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

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

定義服務時,您可以間接控制要將服務部署至哪個節點集區。節點集區不會依附於服務設定,而是依附於 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 代管的節點集區。

後續步驟