本頁面說明 Standard Google Kubernetes Engine (GKE) 叢集的節點自動佈建功能運作方式。有了節點自動佈建功能,節點就會自動調整規模,以滿足工作負載需求。
使用 Autopilot 叢集時,您不需要手動佈建節點或管理節點集區,因為 GKE 會自動管理節點調度資源和佈建作業。
使用節點自動佈建功能的原因
節點自動佈建功能會自動為使用者管理及調度一組節點集區。如果未啟用節點自動佈建功能,GKE 叢集自動配置器只會從使用者建立的節點集區建立節點。啟用節點自動佈建功能之後,GKE 就會自動建立及刪除節點集區。
不支援的功能
節點自動佈建功能不會建立使用下列任何功能的節點集區。不過,叢集自動配置器會使用下列功能,調整現有節點集區中的節點:
- GKE Sandbox。
- Windows 作業系統。
- 控管預訂親和性。
- 自動調度 local PersistentVolume。
- 自動佈建節點,並將本機 SSD 做為臨時儲存空間。
- 透過使用變更後「篩選器」的自訂排程自動佈建。
- 設定同步多執行緒 (SMT)。
- 設定效能監控單元 (PMU)。
- 使用 1.32.3-gke.1717000 之前的 GKE 版本時,C4D 機型只有 GKE 1.32.3-gke.1717000 以上版本,才支援 C4D 機器類型的節點自動佈建功能。
- GKE 1.28 之前的版本不支援 C3D 機型。只有 GKE 1.28 以上版本支援 C3D 機型的節點自動佈建功能。
節點自動佈建的運作方式
節點自動佈建是叢集自動配置器的一項機制。叢集自動調度器只會調整現有節點集區的大小。啟用節點自動佈建功能後,叢集自動調度器會根據無法排程的 Pod 的規格,自動建立節點集區。
節點自動佈建功能會根據下列資訊建立節點集區:
- CPU、記憶體和暫時儲存空間資源要求。
- GPU 要求。
- 擱置中 pod 的節點相依性和標籤選取器。
- 擱置中 pod 的節點 taint 和容許條件。
資源限制
節點自動佈建和叢集自動調度資源功能在下列層級設有限制:
- 節點集區層級:自動佈建節點集區的上限為 1000 個節點。
- 叢集層級:
- 系統會根據所有節點集區使用的 CPU 和記憶體資源總量,強制執行您定義的任何自動佈建限制,而不只是自動佈建的集區。
- 如果建立新節點會超出您設定的任一上限,叢集自動配置器就不會執行建立流程。如果已超出上限,GKE 就不會刪除節點。
工作負載區隔
如果擱置中的 Pod 具有節點相依性和容許條件,節點自動佈建功能即可佈建具有相符標籤和 taint 的節點。
如果符合下列所有條件,節點自動佈建功能可能會建立具有標籤和 taint 的節點集區:
- 擱置中的 Pod 要求節點具有特定標籤鍵和值。
- pod 的容許條件適用於具有相同金鑰的 taint。
- 容許條件適用於
NoSchedule
效果、NoExecute
效果或所有效果。
如需操作說明,請參閱「在 GKE 中設定工作負載分離」。
使用標籤區隔工作負載的限制
使用節點自動佈建功能支援的標籤 (例如 cloud.google.com/gke-spot
或機器系列) 時,節點自動佈建功能會觸發新的節點集區建立作業。您可以在 Pod 資訊清單中使用其他標籤,縮小 GKE 放置 Pod 的節點範圍,但 GKE 不會使用這些標籤佈建新的節點集區。如要查看不會明確觸發節點集區建立作業的標籤清單,請參閱使用 taint 和容許度進行工作負載分離的限制。
刪除自動佈建節點集區
當自動佈建節點集區中沒有任何節點時,GKE 就會刪除該節點集區。GKE 不會刪除非自動佈建的節點集區。
支援的機器類型
節點自動佈建功能會考量叢集中的 Pod 需求,判斷最適合這些 Pod 的節點類型。
根據預設,GKE 會使用 E2 系列機器,但有下列任一情況時除外:
- 工作負載要求的功能在 E2 系列機器中無法使用。舉例來說,如果工作負載要求使用 GPU,則新節點集區會使用 N1 系列機器。
- 工作負載要求 TPU 資源。如要進一步瞭解 TPU,請參閱「Cloud TPU 簡介」。
- 工作負載使用
machine-family
標籤。詳情請參閱「使用自訂機器家族」。
如果 Pod 要求使用 GPU,節點自動佈建功能會指派足夠大的機器類型,以支援 Pod 要求的 GPU 數量。GPU 數量會限制節點可用的 CPU 和記憶體。詳情請參閱「GPU 平台」。
GKE 1.32.3-gke.1717000 以上版本支援 C4D 機器類型,GKE 1.28 以上版本則支援 C3D 機器類型。
支援的節點映像檔
節點自動佈建功能會使用下列其中一個節點映像檔建立節點集區:
- Container-Optimized OS (
cos_containerd
)。 - Ubuntu (
ubuntu_containerd
)。
支援的機器學習加速器
節點自動佈建功能可建立搭載硬體加速器的節點集區,例如 GPU 和 Cloud TPU。節點自動佈建功能支援 GKE 1.28 以上版本的 TPU。
GPU
如果 Pod 要求使用 GPU,節點自動佈建功能會指派足夠大的機器類型,以支援 Pod 要求的 GPU 數量。GPU 數量會限制節點可用的 CPU 和記憶體。詳情請參閱「GPU 平台」。
Cloud TPU
GKE 支援 Tensor Processing Unit (TPU),可加快機器學習工作負載的速度。單一主機 TPU 配量節點集區和多主機 TPU 配量節點集區都支援自動調度資源和自動佈建。
在 GKE 叢集上使用 --enable-autoprovisioning
標記時,GKE 會建立或刪除單一主機或多主機 TPU 配量節點集區,並使用符合待處理工作負載需求的 TPU 版本和拓撲。
使用 --enable-autoscaling
時,GKE 會根據節點集區類型調整節點集區大小,如下所示:
單一主機 TPU 配量節點集區:GKE 會在現有節點集區中新增或移除 TPU 節點。節點集區可包含任意數量的 TPU 節點,介於零和節點集區大小上限之間,而節點集區大小上限是由 --max-nodes 和 --total-max-nodes 旗標決定。節點集區擴充時,節點集區中的所有 TPU 節點都會具有相同的機器類型和拓撲。如要進一步瞭解如何建立單一主機 TPU 節點集區,請參閱「建立節點集區」。
多主機 TPU 配量節點集區:GKE 會將節點集區從零原子擴展至滿足 TPU 拓撲所需的節點數量。舉例來說,如果 TPU 節點集區的機器類型為
ct5lp-hightpu-4t
,拓撲為16x16
,則節點集區會包含 64 個節點。GKE 自動調度器會確保這個節點集區的節點數為 0 或 64。縮減時,GKE 會排除所有排定的 Pod,並將整個節點集區排除至零。如要進一步瞭解如何建立多主機 TPU 節點集區,請參閱「建立節點集區」。
如果特定 TPU 配量沒有正在執行或待排程的 Pod,GKE 就會縮減節點集區。多主機 TPU 配量節點集區會以不可分割的方式縮減。系統會移除個別的單一主機 TPU 配量,縮減單一主機 TPU 配量節點集區。
啟用節點自動佈建功能並搭配 TPU 時,GKE 會根據 Pod 要求中定義的值,決定如何調度資源。下列資訊清單是 Deployment 規格範例,可產生一個節點集區,其中包含具有 2x2x2
拓撲和兩部 ct4p-hightpu-4t
機器的 TPU v4 節點:
apiVersion: apps/v1
kind: Deployment
metadata:
name: tpu-workload
labels:
app: tpu-workload
spec:
replicas: 2
selector:
matchLabels:
app: nginx-tpu
template:
metadata:
labels:
app: nginx-tpu
spec:
nodeSelector:
cloud.google.com/gke-tpu-accelerator: tpu-v4-podslice
cloud.google.com/gke-tpu-topology: 2x2x2
cloud.google.com/reservation-name: my-reservation
containers:
- name: nginx
image: nginx:1.14.2
resources:
requests:
google.com/tpu: 4
limits:
google.com/tpu: 4
ports:
- containerPort: 80
其中:
cloud.google.com/gke-tpu-accelerator
:TPU 版本和類型。 例如,你可以使用下列任一方式:- 搭載
tpu-v4-podslice
的 TPU v4 - TPU v5e,搭配
tpu-v5-lite-podslice
。 - 搭載
tpu-v5p-slice
的 TPU v5p。 - TPU Trillium (v6e) 搭配
tpu-v6e-slice
。
- 搭載
cloud.google.com/gke-tpu-topology
:TPU 配量中的 TPU 晶片數量和實體排列方式。建立節點集區並啟用節點自動佈建功能時,請選取 TPU 拓撲。如要進一步瞭解 Cloud TPU 拓撲,請參閱TPU 設定。limit.google.com/tpu
:TPU VM 上的 TPU 晶片數量。 大多數設定只有一個正確值。不過,tpu-v5-lite-podslice
的2x4
拓撲設定為:- 如果您指定
google.com/tpu = 8
,節點自動佈建功能會向上擴充單一主機 TPU 節點集區,並新增一部ct5lp-hightpu-8t
機器。 - 如果您指定
google.com/tpu = 4
,節點自動佈建會建立含有兩部ct5lp-hightpu-4t
機器的多主機 TPU 節點集區。
- 如果您指定
cloud.google.com/reservation-name
:工作負載使用的預訂名稱。如果省略此欄位,工作負載就不會使用任何預留空間。
如果將加速器類型設為 tpu-v6e-slice
(表示 TPU Trillium),節點自動佈建功能會做出下列決策:
Pod 資訊清單中設定的值 | 由節點自動佈建功能決定 | |||
---|---|---|---|---|
gke-tpu-topology |
limit.google.com/tpu |
節點集區類型 | 節點集區大小 | 機型 |
1x1 | 1 | 單一主機 TPU 配量 | 彈性 | ct6e-standard-1t |
2x2 | 4 | 單一主機 TPU 配量 | 彈性 | ct6e-standard-4t |
2x4 | 8 | 單一主機 TPU 配量 | 彈性 | ct6e-standard-8t |
2x4 | 4 | 多主機 TPU 配量 | 2 | ct6e-standard-4t |
4x4 | 4 | 多主機 TPU 配量 | 4 | ct6e-standard-4t |
4x8 | 4 | 多主機 TPU 配量 | 8 | ct6e-standard-4t |
8x8 | 4 | 多主機 TPU 配量 | 16 | ct6e-standard-4t |
8x16 | 4 | 多主機 TPU 配量 | 32 | ct6e-standard-4t |
16x16 | 4 | 多主機 TPU 配量 | 64 | ct6e-standard-4t |
如果將加速器類型設為 tpu-v4-podslice
(表示 TPU v4),節點自動佈建功能會做出下列決定:
Pod 資訊清單中設定的值 | 由節點自動佈建功能決定 | |||
---|---|---|---|---|
gke-tpu-topology |
limit.google.com/tpu |
節點集區類型 | 節點集區大小 | 機型 |
2x2x1 | 4 | 單一主機 TPU 配量 | 彈性 | ct4p-hightpu-4t |
{A}x{B}x{C} | 4 | 多主機 TPU 配量 | {A}x{B}x{C}/4 | ct4p-hightpu-4t |
{A}x{B}x{C} 的乘積會定義節點集區中的晶片數量。舉例來說,您可以定義 64 個晶片的小型拓撲,並使用 4x4x4
等組合。如果使用的拓撲大於 64 個晶片,您指派給 {A}、{B} 和 {C} 的值必須符合下列條件:
- {A}、{B} 和 {C} 必須全部小於或等於四,或是四的倍數。
- 支援的最大拓撲為
12x16x16
。 - 指派的值會保留 A ≤ B ≤ C 模式。例如,小型拓撲的
2x2x4
或2x4x4
。
如果將加速器類型設為 tpu-v5-lite-podslice
(表示機器類型開頭為 ct5lp-
的 TPU v5e),節點自動佈建功能會做出下列決定:
Pod 資訊清單中設定的值 | 由節點自動佈建功能決定 | |||
---|---|---|---|---|
gke-tpu-topology |
limit.google.com/tpu |
節點集區類型 | 節點集區大小 | 機型 |
1x1 | 1 | 單一主機 TPU 配量 | 彈性 | ct5lp-hightpu-1t |
2x2 | 4 | 單一主機 TPU 配量 | 彈性 | ct5lp-hightpu-4t |
2x4 | 8 | 單一主機 TPU 配量 | 彈性 | ct5lp-hightpu-8t |
2x41 | 4 | 多主機 TPU 配量 | 2 (8/4) | ct5lp-hightpu-4t |
4x4 | 4 | 多主機 TPU 配量 | 4 (16/4) | ct5lp-hightpu-4t |
4x8 | 4 | 多主機 TPU 配量 | 8 (32/4) | ct5lp-hightpu-4t |
4x8 | 4 | 多主機 TPU 配量 | 16 (32/4) | ct5lp-hightpu-4t |
8x8 | 4 | 多主機 TPU 配量 | 16 (64/4) | ct5lp-hightpu-4t |
8x16 | 4 | 多主機 TPU 配量 | 32 (128/4) | ct5lp-hightpu-4t |
16x16 | 4 | 多主機 TPU 配量 | 64 (256/4) | ct5lp-hightpu-4t |
-
特殊情況:機器類型取決於您在
google.com/tpu
限制欄位中定義的值。↩
如要瞭解如何設定節點自動佈建功能,請參閱「設定 TPU」。
支援 Spot VM
節點自動佈建功能支援根據Spot VM 建立節點集區。
只有在有容許 cloud.google.com/gke-spot="true":NoSchedule
taint 的無法排程 Pod 時,系統才會考慮建立以 Spot VM 為基礎的節點集區。系統會自動將汙點套用至以 Spot VM 為基礎的自動佈建節點集區中的節點。
您可以將容許條件與 nodeSelector
或節點相依性規則搭配使用,為 cloud.google.com/gke-spot="true"
或 cloud.google.com/gke-provisioning=spot
(適用於執行 GKE 1.25.5-gke.2500 以上版本的節點) 節點標籤設定,確保工作負載只會在以 Spot VM 為基礎的節點集區上執行。
支援 Pod 要求臨時儲存空間
節點自動佈建功能支援在 Pod 要求暫時性儲存空間時建立節點集區。節點集區中佈建的開機磁碟大小,對於所有自動佈建的新節點集區而言都是固定的。開機磁碟大小可以自訂。
預設值為 100 GiB。 系統不支援以本機 SSD 為基礎的臨時儲存空間。
只有在具有指定開機磁碟的節點可分配的暫時性儲存空間,大於或等於擱置中 Pod 的暫時性儲存空間要求時,節點自動佈建功能才會佈建節點集區。如果暫時性儲存空間要求高於可分配的儲存空間,節點自動佈建功能就不會佈建節點集區。節點的磁碟大小不會根據擱置中 Pod 的暫時性儲存空間要求動態設定。
無法有效擴充
節點自動佈建的限制與叢集自動配置器相同。
此外,您也應考量不同工作負載的節點集區限制。所謂「不同的工作負載」,是指使用工作負載區隔,讓 GKE 將 Pod 分別放置到不同節點,或將 Pod 放置到符合特定條件的節點,或將特定工作負載排程在一起。
節點自動佈建功能一律會優先使用現有的相容節點集區,而不是建立新的節點集區。叢集中的節點集區數量越多,這項偏好設定的強度就越高。當不同節點集區的數量接近支援上限時,節點自動佈建功能會降低建立新節點集區的優先順序。如要進一步瞭解叢集限制,請參閱「規劃大型叢集」一文的限制和最佳做法一節。
如果叢集有許多不同的工作負載需求,建議使用自訂運算類別。