本頁面說明如何規劃 Google Kubernetes Engine (GKE) Standard 節點集區中的節點大小,以降低工作負載中斷和資源不足終止的風險。
在 GKE Autopilot 中, Google Cloud 會為您管理節點,因此不需要進行這項規劃。不過,本文件可協助 Autopilot 叢集運算子瞭解節點中有多少資源容量可供工作負載使用。
節點大小適中的優點
確保節點大小適中,可容納工作負載並處理活動尖峰,可帶來以下好處:
- 降低資源不足而遭驅逐的風險,進而提升工作負載的可靠性。
- 在流量高峰期擴充工作負載時,可提高擴充性。
- 節點不會過大而浪費資源,因此成本較低。
可分配的節點資源
GKE 節點會執行系統元件,讓節點做為叢集的一部分運作。這些元件會使用節點資源,例如 CPU 和記憶體。您可能會發現節點的資源總數 (以基礎 Compute Engine 虛擬機器 (VM) 的大小為準),與 GKE 工作負載可要求的資源有所不同。這是因為 GKE 會預留預先定義的資源數量,確保系統功能和節點可靠性。GKE 為系統資源保留的磁碟空間會因節點映像檔而異。工作負載可用的剩餘資源稱為「可分配資源」。
在資訊清單中定義 Pod 時,您可以在 Pod 規格中指定資源要求和限制。當 GKE 將 Pod 放在節點上時,Pod 會向節點上可分配的資源要求這些指定資源。規劃節點集區中的節點大小時,請考量工作負載正常運作所需的資源量。
檢查節點的可分配資源
如要檢查現有節點的可分配資源,請執行下列指令:
kubectl get node NODE_NAME \
-o=yaml | grep -A 7 -B 7 capacity
將 NODE_NAME
替換為節點名稱。
輸出結果會與下列內容相似:
allocatable:
attachable-volumes-gce-pd: "127"
cpu: 3920m
ephemeral-storage: "47060071478"
hugepages-1Gi: "0"
hugepages-2Mi: "0"
memory: 13498416Ki
pods: "110"
capacity:
attachable-volumes-gce-pd: "127"
cpu: "4"
ephemeral-storage: 98831908Ki
hugepages-1Gi: "0"
hugepages-2Mi: "0"
memory: 16393264Ki
pods: "110"
在這個輸出中,allocatable
區段中的值是節點上可分配的資源。「capacity
」部分中的值是節點上的資源總數。臨時儲存空間的單位為位元組。
GKE 資源預留
GKE 會根據節點上可用的資源總大小,在節點上保留特定數量的記憶體和 CPU 資源。較大的機器類型會執行更多容器和 Pod,因此 GKE 保留的資源量會隨著較大的機器而調高。Windows Server 節點也需要比同等 Linux 節點更多的資源,才能執行 Windows OS 和無法在容器中執行的 Windows Server 元件。
記憶體和 CPU 預留空間
以下各節說明根據機型預設保留的記憶體和 CPU。
記憶體預留
以記憶體資源來說,GKE 保留下列項目:
- 記憶體容量小於 1 GiB 的機器,可使用 255 MiB 的記憶體
- 第一個 4 GiB 記憶體的 25%
- 下一個 4 GiB 記憶體的 20% (最高 8 GiB)
- 下一個 8 GiB 記憶體的 10% (最高 16 GiB)
- 下一個 112 GiB 記憶體的 6% (最高 128 GiB)
- 如果記憶體大小超過 128 GiB,則保留任何記憶體的 2%
此外,GKE 也會在每個節點上保留額外的 100 MiB 記憶體,以處理 Pod 移除作業。
CPU 預留量
以 CPU 資源來說,GKE 保留下列項目:
- 第一個核心的 6%
- 下一個核心的 1% (最多 2 個核心)
- 後兩個核心的 0.5% (最多 4 個核心)
- 若超過 4 個核心,則超過的任一核心保留 0.25%
如果是共用核心 E2 機器類型,GKE 會保留總共 1060 毫核心。
本機暫存空間預留
GKE 會為節點提供本機臨時儲存空間,並以本機連線裝置 (例如節點的開機磁碟或本機 SSD) 做為備份。暫時性儲存空間無法保證可用性,如果節點故障並遭到刪除,暫時性儲存空間中的資料可能會遺失。
GKE 會保留節點總臨時儲存空間的一部分,做為 kubelet 在 Pod 逐出期間使用的單一檔案系統,以及在節點上執行的其他系統元件。您可以將剩餘的暫時性儲存空間分配給 Pod,用於記錄檔等用途。如要瞭解如何在 Pod 中指定暫存空間要求和限制,請參閱本機暫存空間。
GKE 會依下列方式計算本機暫時儲存空間預留量:
EVICTION_THRESHOLD + SYSTEM_RESERVATION
實際值會因備份儲存空間的裝置大小和類型而異。
由節點開機磁碟支援的臨時儲存空間
根據預設,臨時儲存空間是由節點開機磁碟提供支援。在這種情況下,GKE 會依下列方式判斷驅逐門檻值:
EVICTION_THRESHOLD = 10% * BOOT_DISK_CAPACITY
驅逐閾值一律為開機磁碟總容量的 10%。
GKE 決定系統預留空間值的方式如下:
SYSTEM_RESERVATION = Min(50% * BOOT_DISK_CAPACITY, 6GiB + 35% * BOOT_DISK_CAPACITY, 100 GiB)
系統預留金額為下列金額的最低值:
- 開機磁碟容量的 50%
- 開機磁碟容量的 35% + 6 GiB
- 100 GiB
舉例來說,如果開機磁碟為 300 GiB,則適用下列值:
- 50% 的容量:150 GiB
- 容量的 35% + 6 GiB:111 GiB
- 100 GiB
GKE 會保留下列項目:
- 系統保留:100 GiB (最低值)
- 逐出門檻:30 GiB
保留的暫存空間總容量為 130 GiB。剩餘容量為 170 GiB,可分配為暫存空間。
採用本機 SSD 的暫存儲存空間
如果臨時儲存空間採用本機 SSD,GKE 會依下列方式計算撤銷門檻:
EVICTION_THRESHOLD = 10% * SSD_NUMBER * 375 GiB
在此計算中,SSD_NUMBER
是附加的本機 SSD 數量。所有本機 SSD 的大小都是 375 GiB,因此撤銷門檻為暫時儲存空間總容量的 10%。請注意,這是指格式化磁碟機前的容量,因此可用容量會減少幾個百分比,視節點映像檔版本而定。
GKE 會根據所連 SSD 的數量計算系統預留空間,計算方式如下:
本機固態硬碟數量 | 系統預留空間 (GiB) |
---|---|
1 | 50 GiB |
2 | 75 GiB |
3 個以上 | 100 GiB |
使用資源預留功能規劃節點大小
請考量工作負載在部署時和負載下的資源需求。這包括工作負載的要求和預計限制,以及因應擴充而產生的額外負擔。
請考慮要使用少量的大型節點,還是大量的小型節點來執行工作負載。
- 如果資源密集型工作負載不需要高可用性,少量的大型節點就非常適合。節點自動調度資源較不靈活,因為必須移出更多 Pod,才能進行縮減作業。
- 大量的小型節點適合高可用性工作負載,且不會耗用大量資源。節點自動調整功能更靈活,因為縮減作業發生時,需要移出的 Pod 較少。
請參閱 Compute Engine 機器系列比較指南,為節點選擇合適的機器系列和家族。
請考量工作負載的暫時性儲存空間需求。節點開機磁碟是否足夠?您是否需要本機 SSD?
使用前幾節的資訊,計算所選機器類型上的可分配資源。並與您需要的資源和額外負荷進行比較。
- 如果選取的機器類型過大,請考慮使用較小的機器,以免支付額外資源的費用。
- 如果選取的機器類型太小,請考慮使用較大的機器,以降低工作負載中斷的風險。