本頁說明 Google Kubernetes Engine (GKE) Autopilot 如何管理工作負載資源要求的值,例如 CPU、記憶體或臨時儲存空間。這個頁面包含下列資訊,可協助您規劃有效率、穩定且經濟實惠的工作負載:
- Autopilot 套用至未指定值的 Pod 的預設值。
- Autopilot 強制執行的資源要求最小值和最大值。
- 預設、最小值和最大值會因 Pod 要求使用的硬體而異。
本頁面適用於佈建及設定雲端資源,並部署工作負載的運算子和開發人員。如要進一步瞭解內容中提及的常見角色和範例工作,請參閱「常見的 GKE Enterprise 使用者角色和工作」。 Google Cloud
閱讀本頁面之前,請先熟悉 Kubernetes 資源管理概念。
Autopilot 中的資源要求總覽
Autopilot 會使用您在工作負載設定中指定的資源要求,設定執行工作負載的節點。Autopilot 會根據工作負載使用的運算類別或硬體設定,強制執行資源要求下限和上限。如果您未指定部分容器的要求,Autopilot 會指派預設值,讓這些容器正常運作。
在 Autopilot 叢集中部署工作負載時,GKE 會根據所選運算級別或硬體設定 (例如 GPU) 的允許最小值和最大值,驗證工作負載設定。如果要求低於下限,Autopilot 會自動修改工作負載設定,將要求調整至允許範圍內。如果要求超過上限,Autopilot 會拒絕工作負載並顯示錯誤訊息。
以下列出資源要求類別:
- 預設資源要求:如果您未指定工作負載的要求,Autopilot 會新增這些要求
- 資源要求下限和上限:Autopilot 會驗證您指定的要求,確保這些要求在限制範圍內。如果要求超出限制,Autopilot 會修改工作負載要求。
- 工作負載區隔和延長時間要求:對於彼此區隔的工作負載,或從 GKE 啟動的驅逐作業獲得延長保護的 Pod,Autopilot 具有不同的預設值和最小值。
- DaemonSet 的資源要求:Autopilot 為 DaemonSet 中的容器設定了不同的預設、最小值和最大值。
如何要求資源
在 Autopilot 中,您可以在 Pod 規格中要求資源。可要求的資源下限和上限會根據 Pod 執行的節點硬體設定而異。如要瞭解如何要求特定硬體設定,請參閱下列頁面:
預設資源要求
如果您未指定 Pod 中部分容器的資源要求,Autopilot 會套用預設值。這些預設值適用於許多較小的工作負載。
此外,無論選取的運算類別或硬體設定為何,Autopilot 都會套用下列預設資源要求:
DaemonSet 中的容器
- CPU:50 mCPU
- 記憶體:100 MiB
- 暫存空間:100 MiB
所有其他容器
- 暫存空間:1 GiB
如要進一步瞭解 Autopilot 叢集限制,請參閱配額與限制。
運算類別的預設要求
對於在運算類別上執行的 Pod,如果 Pod 規格中未定義資源,Autopilot 會套用下列預設值。如果您只設定其中一個要求,並將另一個要求留空,GKE 會使用「要求下限和上限」一節中定義的 CPU:記憶體比例,將缺少的請求設為符合該比例的值。
運算類別 | 資源 | 預設要求 |
---|---|---|
一般用途 (預設) | CPU | 0.5 個 vCPU |
記憶體 | 2 GiB | |
加速器 | 請參閱「加速器的預設資源」一節。 | |
平衡 | CPU | 0.5 個 vCPU |
記憶體 | 2 GiB | |
成效 | CPU |
|
記憶體 |
|
|
臨時儲存空間 |
|
|
向外擴充 | CPU | 0.5 個 vCPU |
記憶體 | 2 GiB |
加速器的預設要求
在 1.29.4-gke.1427000 以上版本中,Autopilot 不會強制執行加速器的預設要求。詳情請參閱「定價」。
下表說明 GKE 指派給 Pod 的預設值,這些 Pod 未在 Pod 規格的 requests
欄位中指定值。下表適用於在 1.29.4-gke.1427000 之前的版本上執行的 Pod,這些 Pod 使用 Accelerator
運算類別,這是 Autopilot 叢集中執行加速器的建議方式。
加速器 | 資源 | 預設要求總數 |
---|---|---|
NVIDIA B200 GPUnvidia-b200 |
未強制執行任何預設要求。 | |
NVIDIA H200 (141 GB) GPUnvidia-h200-141gb |
未強制執行任何預設要求。 | |
NVIDIA H100 Mega (80 GB) GPUnvidia-h100-mega-80gb |
CPU |
|
記憶體 |
|
|
臨時儲存空間 |
|
|
NVIDIA H100 (80 GB) GPUnvidia-h100-80gb |
CPU |
|
記憶體 |
|
|
臨時儲存空間 |
|
|
NVIDIA A100 (40 GB) GPUnvidia-tesla-a100 |
CPU |
|
記憶體 |
|
|
NVIDIA A100 (80 GB) GPUnvidia-a100-80gb |
CPU |
|
記憶體 |
|
|
臨時儲存空間 |
|
|
NVIDIA L4 GPUnvidia-l4 |
CPU |
|
記憶體 |
|
|
NVIDIA T4 GPUnvidia-tesla-t4 |
CPU |
|
記憶體 |
|
|
TPU Trillium (v6e)tpu-v6e-slice (單一主機) |
CPU | 所有拓撲:1 mCPU |
記憶體 | 所有拓撲:1 MiB | |
TPU Trillium (v6e)tpu-v6e-slice (多主機) |
CPU | 所有拓撲:1 mCPU |
記憶體 | 所有拓撲:1 MiB | |
TPU v5etpu-v5-lite-podslice (多主機) |
CPU | 所有拓撲:1 mCPU |
記憶體 | 所有拓撲:1 MiB | |
TPU v5ptpu-v5p-slice |
CPU | 所有拓撲:1 mCPU |
記憶體 | 所有拓撲:1 MiB | |
TPU v4tpu-v4-podslice |
CPU | 所有拓撲:1 mCPU |
記憶體 | 所有拓撲:1 MiB |
不支援 Accelerator 運算級別的 GPU
如果您未使用 Accelerator 計算類別,系統只支援下列 GPU。這些 GPU 的預設資源要求與 Accelerator 運算類別相同:
- NVIDIA A100 (40GB)
- NVIDIA A100 (80GB)
- NVIDIA L4
- NVIDIA Tesla T4
資源要求下限和上限
部署設定要求的資源總數,應在 Autopilot 允許的支援上下限值範圍內。適用下列條件:
暫存空間要求:
除非節點已附加本機 SSD,否則臨時儲存空間會使用 VM 開機磁碟。
如果運算硬體包含本機 SSD,例如 A100 (80GB) GPU、H100 (80GB) GPU 或 Z3 系列機器,則最大要求大小等於本機 SSD 大小減去任何系統負荷。如要瞭解這項系統負荷,請參閱「本機 SSD 支援的臨時儲存空間」。
在 GKE 1.29.3-gke.1038000 以上版本中,除非硬體包含本機 SSD,否則效能類別 Pod 和硬體加速器 Pod 最多支援 56 Ti 的臨時儲存空間要求。
在所有其他 Autopilot Pod 中,無論 GKE 版本為何,Pod 中所有容器的暫時性儲存空間要求總和必須介於 10 MiB 和 10 GiB 之間,除非另有指定。
如需較大的磁碟區,請使用一般暫時性磁碟區,這類磁碟區提供的功能和效能與暫時性儲存空間相同,但彈性更高,因為可搭配任何 GKE 儲存空間選項使用。舉例來說,使用
pd-balanced
的一般暫時性磁碟區大小上限為 64 TiB。
DaemonSet Pod 的最低資源要求如下:
- 支援突發狀況的叢集:每個 Pod 1 mCPU、每個 Pod 2 MiB 記憶體,以及 Pod 中每個容器 10 MiB 的臨時儲存空間。
- 不支援爆量的叢集:每個 Pod 10 mCPU、每個 Pod 10 MiB 記憶體,以及 Pod 中每個容器 10 MiB 的臨時儲存空間。
如要確認叢集是否支援爆量,請參閱「GKE 中的爆量可用性」。
如果叢集支援突發,Autopilot 就不會強制將 Pod CPU 要求量調高 0.25 個 vCPU。如果叢集不支援突發,Autopilot 會將 CPU 要求進位至最接近的 0.25 個 vCPU。如要確認叢集是否支援爆量,請參閱「GKE 中的爆量可用性」。
CPU 與記憶體比率必須在所選運算類別或硬體設定的允許範圍內。如果 CPU 與記憶體比例超出允許範圍,Autopilot 會自動增加較小的資源。舉例來說,如果您為在
Scale-Out
類別上執行的 Pod 要求 1 個 vCPU 和 16 GiB 的記憶體 (1:16 的比率),Autopilot 會將 CPU 要求增加至 4 個 vCPU,將比率變更為 1:4。
運算類別的最小值和最大值
下表說明 Autopilot 支援的每個運算類別,其 CPU 與記憶體比率的最小值、最大值和允許值:
運算類別 | CPU/記憶體比例 (vCPU:GiB) | 資源 | 下限 | 上限 |
---|---|---|---|---|
一般用途 (預設) | 介於 1:1 和 1:6.5 之間 | CPU | 值取決於叢集是否支援突發,如下所示:
如要確認叢集是否支援爆量,請參閱「GKE 中的爆量可用性」。 |
30 個 vCPU |
記憶體 | 值取決於叢集是否支援突發,如下所示:
如要確認叢集是否支援爆量,請參閱「GKE 中的爆量可用性」。 |
110 GiB | ||
加速器 | 請參閱加速器的最低和最高值 | |||
平衡 | 介於 1:1 和 1:8 之間 | CPU | 0.25 個 vCPU | 222 個 vCPU 如果選取最低 CPU 平台:
|
記憶體 | 0.5 GiB | 851 GiB 如果選取最低 CPU 平台:
|
||
成效 | 不適用 | CPU | 0.001 個 vCPU |
|
記憶體 | 1 MiB |
|
||
臨時儲存空間 | 10 MiB |
在 GKE 1.29.3-gke.1038000 以上版本中,您可以指定 56 Ti 的暫時性儲存空間要求上限。 C4D 機器系列適用於 1.33.0-gke.1439000 以上版本,並支援最多 56 Ti 的要求,可搭配或不搭配本機 SSD。 如果是 1.29.3-gke.1038000 以下版本,則適用下列限制:
|
||
向外擴充 | 確切 1:4 | CPU | 0.25 個 vCPU |
|
記憶體 | 1 GiB |
|
如要瞭解如何在 Autopilot Pod 中要求運算級別,請參閱「為 Autopilot Pod 選擇運算級別」。
加速器的最低和最高金額
以下各節說明使用 GPU 和 TPU 等硬體加速器的 Pod,其 CPU 與記憶體比率的最小值、最大值和允許值。
除非另有說明,否則在 1.28.6-gke.1369000 以上版本,以及 1.29.1-gke.1575000 以上版本中,支援的暫時性儲存空間上限為 122 GiB。如果是較舊版本,支援的暫時性儲存空間上限為 10 GiB。
加速器運算類別的最小值和最大值
下表列出使用 Accelerator 運算類別的 Pod 的資源要求下限和上限。建議您使用這種方式,透過 GKE Autopilot 叢集執行加速器。在 Accelerator 運算級別中,GKE 不會強制執行 CPU 與記憶體要求比例。
加速器類型 | 資源 | 下限 | 上限 |
---|---|---|---|
NVIDIA B200nvidia-B200 |
CPU | 沒有強制執行的最低要求 |
|
記憶體 | 沒有強制執行的最低要求 |
|
|
臨時儲存空間 | 沒有強制執行的最低要求 |
|
|
NVIDIA H200 (141GB)nvidia-h200-141gb |
CPU | 沒有強制執行的最低要求 |
|
記憶體 | 沒有強制執行的最低要求 |
|
|
臨時儲存空間 | 沒有強制執行的最低要求 |
|
|
NVIDIA H100 Mega (80GB)nvidia-h100-mega-80gb |
CPU |
|
|
記憶體 |
|
|
|
臨時儲存空間 |
|
|
|
NVIDIA H100 (80GB)nvidia-h100-80gb |
CPU |
|
|
記憶體 |
|
|
|
臨時儲存空間 |
|
|
|
NVIDIA A100 (40GB)nvidia-tesla-a100 |
CPU | 0.001 個 vCPU |
在 A100 GPU 節點上執行的所有 DaemonSet 的 CPU 要求總和,不得超過 2 個 vCPU。 |
記憶體 | 1 MiB |
在 A100 GPU 節點上執行的所有 DaemonSet 記憶體要求總和不得超過 14 GiB。 |
|
NVIDIA A100 (80GB)nvidia-a100-80gb |
CPU | 0.001 個 vCPU |
在 A100 (80 GB) GPU 節點上執行的所有 DaemonSet 的 CPU 要求總和,不得超過 2 個 vCPU。 |
記憶體 | 1 MiB |
在 A100 (80GB) GPU 節點上執行的所有 DaemonSet 記憶體要求總和不得超過 14 GiB。 |
|
臨時儲存空間 | 512 MiB |
|
|
NVIDIA L4nvidia-l4 |
CPU | 0.001 個 vCPU |
在 L4 GPU 節點上執行的所有 DaemonSet 的 CPU 要求總和不得超過 2 個 vCPU。 |
記憶體 | 1 MiB |
在 L4 GPU 節點上執行的所有 DaemonSet 記憶體要求總和不得超過 14 GiB。 |
|
NVIDIA Tesla T4nvidia-tesla-t4 |
CPU | 0.001 個 vCPU |
|
記憶體 | 1 MiB |
|
|
TPU v5etpu-v5-lite-podslice |
CPU | 0.001 個 vCPU |
|
記憶體 | 1 MiB |
|
|
臨時儲存空間 | 10 MiB | 56 TiB | |
TPU v5ptpu-v5p-slice |
CPU | 0.001 個 vCPU | 280 個 vCPU |
記憶體 | 1 MiB | 448 GiB | |
臨時儲存空間 | 10 MiB | 56 TiB | |
TPU v4tpu-v4-podslice |
CPU | 0.001 個 vCPU | 240 個 vCPU |
記憶體 | 1 MiB | 407 GiB | |
臨時儲存空間 | 10 MiB | 56 TiB |
如要瞭解如何在 Autopilot Pod 中要求 GPU,請參閱在 Autopilot 中部署 GPU 工作負載。
沒有運算類別的 GPU 數量下限和上限
下表顯示未使用 Accelerator 運算類別的 Pod 的資源要求下限和上限:
GPU 類型 | CPU/記憶體比例 (vCPU:GiB) | 資源 | 下限 | 上限 |
---|---|---|---|---|
NVIDIA A100 (40GB)nvidia-tesla-a100 |
未強制執行 | CPU |
|
在 A100 GPU 節點上執行的所有 DaemonSet 的 CPU 要求總和,不得超過 2 個 vCPU。 |
記憶體 |
|
在 A100 GPU 節點上執行的所有 DaemonSet 記憶體要求總和不得超過 14 GiB。 |
||
NVIDIA A100 (80GB)nvidia-a100-80gb |
未強制執行 | CPU |
|
在 A100 (80 GB) GPU 節點上執行的所有 DaemonSet 的 CPU 要求總和,不得超過 2 個 vCPU。 |
記憶體 |
|
在 A100 (80GB) GPU 節點上執行的所有 DaemonSet 記憶體要求總和不得超過 14 GiB。 |
||
臨時儲存空間 |
|
|
||
NVIDIA L4nvidia-l4 |
|
CPU |
|
在 L4 GPU 節點上執行的所有 DaemonSet 的 CPU 要求總和不得超過 2 個 vCPU。 |
記憶體 |
|
在 L4 GPU 節點上執行的所有 DaemonSet 記憶體要求總和不得超過 14 GiB。 |
||
NVIDIA Tesla T4nvidia-tesla-t4 |
介於 1:1 和 1:6.25 之間 | CPU | 0.5 個 vCPU |
|
記憶體 | 0.5 GiB |
|
如要瞭解如何在 Autopilot Pod 中要求 GPU,請參閱在 Autopilot 中部署 GPU 工作負載。
工作負載區隔和延長時間的資源要求
您可以使用下列方法,透過 Autopilot 操控 Kubernetes 排程和逐出行為:
- 使用污點和容許條件以及節點選取器,確保特定 Pod 只會放置在特定節點上。詳情請參閱「在 GKE 中設定工作負載分離」。
- 使用 Pod 反相依性,防止 Pod 共用同一節點。使用這些方法控管排程行為的工作負載,其預設和最低資源要求會高於未使用這些方法的工作負載。
- 使用註解保護 Pod,避免因節點自動升級和縮減事件而遭到移除,最多可保護七天。詳情請參閱「延長 Autopilot Pod 的執行時間」。
如果指定的要求低於最小值,Autopilot 的行為會根據您使用的方法而有所不同,如下所示:
- 汙點、容許度、選取器和延長時間的 Pod:Autopilot 會在排程 Pod 時修改 Pod,以增加要求。
- Pod 反相依性:Autopilot 會拒絕 Pod 並顯示錯誤訊息。
下表說明預設要求和可指定的最低資源要求。如果設定或運算級別不在下表,Autopilot 就不會強制執行特殊最低或預設值。
運算類別 | 資源 | 預設 | 下限 |
---|---|---|---|
一般用途 | CPU | 0.5 個 vCPU | 0.5 個 vCPU |
記憶體 | 2 GiB | 0.5 GiB | |
平衡 | CPU | 2 個 vCPU | 1 個 vCPU |
記憶體 | 8 GiB | 4 GiB | |
向外擴充 | CPU | 0.5 個 vCPU | 0.5 個 vCPU |
記憶體 | 2 GiB | 2 GiB |
Init 容器
Init 容器會依序執行,且必須在應用程式容器啟動前完成。如果您未為 Autopilot 初始化容器指定資源要求,GKE 會將 Pod 可用的總資源分配給每個初始化容器。這與 GKE Standard 不同,在 GKE Standard 中,每個 init 容器都可以使用 Pod 排定所在節點上任何未分配的資源。
與應用程式容器不同,GKE 建議您不要為 Autopilot 啟動容器指定資源要求,這樣每個容器就能取得 Pod 的所有可用資源。如果您要求的資源少於預設值,就會限制 init 容器。如果您要求的資源超出 Autopilot 預設值,Pod 的生命週期費用可能會增加。
在 Autopilot 中設定資源限制
Kubernetes 可讓您在 Pod 規格中為資源設定 requests
和 limits
。Pod 的行為會因 limits
與 requests
是否不同而異,如下表所示:
已設定值 | Autopilot 行為 |
---|---|
requests 等於 limits |
Pod 會使用 Guaranteed QoS 類別。
|
requests 已設定,limits 未設定 |
行為取決於叢集是否支援突發,如下所示:
如要確認叢集是否支援爆量,請參閱「GKE 中的爆量可用性」。 |
requests 未設定,limits 已設定 |
Autopilot 會將 requests 設為 limits 的值,這是 Kubernetes 的預設行為。更新前: resources: limits: cpu: "400m" 更新後: resources: requests: cpu: "400m" limits: cpu: "400m" |
比「limits 」便宜 requests |
行為取決於叢集是否支援突發,如下所示:
如要確認叢集是否支援爆量,請參閱「GKE 中的爆量可用性」。 |
requests 大於 limits |
Autopilot 會將 requests 設為 limits 的值。
更新前: resources: requests: cpu: "450m" limits: cpu: "400m" 更新後: resources: requests: cpu: "400m" limits: cpu: "400m" |
未設定「requests 」,未設定「limits 」 |
Autopilot 會將
如要確認叢集是否支援爆量,請參閱「GKE 中的爆量可用性」。 |
在大多數情況下,請為工作負載設定足夠的資源要求和同等限制。
如果工作負載暫時需要比穩定狀態更多的資源 (例如啟動期間或流量較高的期間),請將限制設得比要求高,讓 Pod 爆量。詳情請參閱「在 GKE 中設定 Pod 爆量」。
Autopilot 中的自動資源管理
如果為工作負載指定的資源要求超出允許範圍,或您未為部分容器要求資源,Autopilot 會修改工作負載設定,以符合允許的限制。Autopilot 會將預設值套用至未指定要求的容器,然後計算資源比例和資源擴充需求。
- 缺少要求:如果您未在部分容器中要求資源,Autopilot 會套用運算類別或硬體設定的預設要求。
- CPU 與記憶體比例:Autopilot 會調度較小的資源,使比例落在允許範圍內。
- 暫存空間:Autopilot 會修改暫存空間要求,以符合每個容器所需的最低空間量。所有容器的儲存空間要求累計值不得超過允許的最大值。在 1.28.6-gke.1317000 之前的版本中,如果要求的值超過上限,Autopilot 會縮減要求的大小。在 1.28.6-gke.1317000 以上版本中,Autopilot 會拒絕您的工作負載。
- 要求低於下限:如果您要求資源少於所選硬體設定允許的下限,Autopilot 會自動修改 Pod,要求至少下限資源值。
根據預設,當 Autopilot 自動將資源調升至最低或預設資源值時,GKE 會將額外容量分配給 Pod 資訊清單中的第一個容器。在 GKE 1.27.2-gke.2200 以上版本中,您可以將下列內容新增至 Pod 資訊清單的 annotations
欄位,指示 GKE 將額外資源分配給特定容器:
autopilot.gke.io/primary-container: "CONTAINER_NAME"
將 CONTAINER_NAME
替換為容器名稱。
資源修改範例
以下範例情境說明 Autopilot 如何修改工作負載設定,以符合執行中 Pod 和容器的需求。
單一容器,vCPU 數 < 0.05
貨櫃編號 | 原始要求 | 修改過的要求 |
---|---|---|
1 |
CPU:30 mCPU 記憶體:0.5 GiB 暫時性儲存空間:10 MiB |
CPU:50 mCPU 記憶體:0.5 GiB 暫時性儲存空間:10 MiB |
多個容器的 CPU 總數 < 0.05 個 vCPU
貨櫃編號 | 原始要求 | 修改過的要求 |
---|---|---|
1 | CPU:10 mCPU 記憶體:0.5 GiB 暫時性儲存空間:10 MiB |
CPU:30 mCPU 記憶體:0.5 GiB 暫時性儲存空間:10 MiB |
2 | CPU:10 mCPU 記憶體:0.5 GiB 暫時性儲存空間:10 MiB |
CPU:10 mCPU 記憶體:0.5 GiB 暫時性儲存空間:10 MiB |
3 | CPU:10 個 mvCPU 記憶體:0.5 GiB 暫時性儲存空間:10 MiB |
CPU:10 mCPU 記憶體:0.5 GiB 暫時性儲存空間:10 MiB |
Pod 資源總數 | CPU:50 mCPU 記憶體:1.5 GiB 暫時性儲存空間:30 MiB |
單一容器的記憶體過低,無法滿足要求的 CPU
在這個範例中,記憶體容量不足以支援 CPU 數量 (每個 vCPU 至少需要 1 GiB)。CPU 與記憶體的比率下限為 1:1。如果比率低於此值,系統就會增加記憶體要求。
貨櫃編號 | 原始要求 | 修改過的要求 |
---|---|---|
1 | CPU:4 個 vCPU 記憶體:1 GiB 暫時性儲存空間:10 MiB |
CPU:4 個 vCPU 記憶體:4 GiB 暫時性儲存空間:10 MiB |
Pod 資源總數 | CPU:4 個 vCPU 記憶體:4 GiB 暫時性儲存空間:10 MiB |