為提升工作負載穩定性,Google Kubernetes Engine (GKE) Autopilot 模式會管理 Pod 資源要求的值,例如 CPU、記憶體或暫時性儲存空間。這個頁面包含下列資訊,可協助您規劃高效率、穩定且經濟實惠的工作負載:
- Autopilot 會將預設值套用至未指定值的 Pod。
- Autopilot 強制執行的資源要求最小值和最大值。
- 預設、最小值和最大值會因 Pod 要求使用的硬體而異。
本頁面適用於佈建及設定雲端資源,並部署工作負載的運算子和開發人員。如要進一步瞭解內容中提及的常見角色和範例工作,請參閱「常見的 GKE 使用者角色和工作」。 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 | 0.5 個 vCPU |
記憶體 | 2 GiB |
資源要求下限和上限
部署設定要求的資源總數,應在 Autopilot 允許的支援上下限值範圍內。適用下列條件:
暫存空間要求:
除非節點已附加本機 SSD,否則臨時儲存空間會使用 VM 開機磁碟。
如果運算硬體包含本機 SSD,例如 A100 (80GB) GPU、H100 (80GB) GPU 或 Z3 系列機器,則最大要求等於本機 SSD 大小減去任何系統負荷。如要瞭解這項系統負荷,請參閱「本機 SSD 支援的臨時儲存空間」。
在 GKE 1.29.3-gke.1038000 以上版本中,除非硬體包含本機 SSD,否則效能類別 Pod 和硬體加速器 Pod 最多支援 56 TiB 的臨時儲存空間要求。
在所有其他 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 | 沒有強制執行的最低要求 |
|
記憶體 | 沒有強制執行的最低要求 |
|
||
臨時儲存空間 | 沒有強制執行的最低要求 |
|
||
向外擴充 | 確切 1:4 | CPU | 0.25 個 vCPU |
|
記憶體 | 1 GiB |
|
如要瞭解如何在 Autopilot Pod 中要求運算級別,請參閱「為 Autopilot Pod 選擇運算級別」。
加速器的最小值和最大值
GKE 不會對使用加速器的 Pod 強制執行 CPU、記憶體或暫時性儲存空間要求下限。下表說明根據您使用的加速器數量和類型,這些資源各自的要求上限。
除非另有指定,否則支援的暫時性儲存空間上限為 56 TiB。
加速器類型 | 資源 | 上限 |
---|---|---|
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 |
在 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 |
CPU |
|
記憶體 |
|
|
TPU v5etpu-v5-lite-podslice |
CPU |
|
記憶體 |
|
|
臨時儲存空間 | 56 TiB | |
TPU v5ptpu-v5p-slice |
CPU | 280 個 vCPU |
記憶體 | 448 GiB | |
臨時儲存空間 | 56 TiB | |
TPU v4tpu-v4-podslice |
CPU | 240 個 vCPU |
記憶體 | 407 GiB | |
臨時儲存空間 | 56 TiB |
如要瞭解如何在 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 容器會依序執行,且所有 init 容器都必須執行完畢,應用程式容器才能啟動。在 Autopilot 叢集中,如果您未指定初始化容器的 CPU 或記憶體要求,或明確將要求設為 0
,Autopilot 會在建立 Pod 時進行修改,為每個初始化容器新增資源要求。分配給每個 Init 容器的要求,等於 Pod 中所有應用程式容器的要求總和。這是預設行為。
這與標準叢集不同,在標準叢集中,初始化容器會使用 Pod 排程所在節點上任何未分配的資源。
自動為 init 容器分配資源
系統會在建立 Pod 時,自動為 init 容器分配資源。建議您不要在 Autopilot 叢集中手動指定 init 容器的資源要求,這樣每個容器預設就能取得 Pod 的所有可用資源。
如果您在建立 Pod 後變更非 init 容器的資源要求,Autopilot 不會自動調整 init 容器的資源要求。因此,您可能會發現費用與 Pod 的實際資源用量不一致。系統會根據 Pod 的有效資源要求計費,也就是下列兩者中較大的值:
- Pod 中任何單一 init 容器的最大資源要求。
- Pod 中所有應用程式容器的要求總和。
詳情請參閱「Autopilot 的自動資源管理功能」。
手動為 init 容器分配資源
如要變更應用程式容器的現有資源要求,以管理費用和資源,建議您採取下列其中一種做法,調整 init 容器要求:
- 手動更新 init 容器的資源要求,以符合 Pod 的新總要求。手動指定資源要求時,請注意下列事項:
- 如果要求低於 Pod 的總資源,可能會限制 init 容器。
- 如果要求高於 Pod 的總資源,可能會增加費用。
- 移除資源要求,讓 Autopilot 重新計算。Autopilot 預設會根據 Pod 中所有應用程式容器目前要求的總資源,重新將資源分配給每個 init 容器。
在 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 |