本頁面說明如何判斷節點上可用的 CPU 和記憶體數量,以便在 Google Distributed Cloud 上執行工作負載。
預留資源
在每個叢集節點上,Google Distributed Cloud 會為作業系統元件和核心 Kubernetes 元件保留下列資源:
- 80 毫核心 + CPU 容量的 1%
- 330 MiB + 記憶體容量的 5%
舉例來說,假設節點的預設容量為 4 個 CPU 核心和 8 GiB 記憶體。接著,Google Distributed Cloud 會預留:
- 80 毫核 + 4 核的 1% = 120 毫核
- 330 MiB + 8 GiB 的 5% = 730 MiB
作業系統和 Kubernetes 核心元件不會以 Pod 形式執行,而是以一般程序形式執行。扣除這些預留資源後,剩餘的資源可供 Pod 使用。
排除門檻
如要判斷 Pod 可用的記憶體量,您也必須考量逐出門檻。Google Distributed Cloud 會將驅逐門檻設為 100 MiB。也就是說,如果節點上的可用記憶體低於 100 MiB,kubelet
可能會逐出一個或多個 Pod。
可分配的資源
節點上可供 Pod 使用的資源稱為「可分配資源」。可分配資源的計算方式如下:
Allocatable CPU = CPU Capacity - Reserved CPU
Allocatable Memory = Memory Capacity - Reserved Memory - Eviction Threshold
舉例來說,假設節點的記憶體容量為 8 GiB,保留記憶體為 680 MiB,移除門檻為 100 MiB。然後可分配的記憶體為:
8 GiB - 680 MiB - 100 MiB = 7220 MiB
可供工作負載使用的資源
節點的可分配資源是 Pod 可用的資源。包括執行工作負載的 Pod,以及執行 Google Distributed Cloud 外掛程式的 Pod。外掛程式包括 Ingress 控制器、Ingress 服務、Connect 代理程式、網路元件、記錄元件等。
在特定節點上,如要判斷工作負載可用的資源,請先從可分配的資源開始,然後減去外掛程式使用的資源。
問題在於外掛程式並未平均分配到 Google Distributed Cloud 叢集的節點。一個節點可能會有三個外掛程式,另一個節點則可能有十個外掛程式。此外,各種外掛程式所需的 CPU 和記憶體量也不同。
一般而言,在節點上執行的外掛程式需要:
- 200 毫核心的 CPU
- 100 MiB 的記憶體
現在,您可以按照下列方式,計算節點上可供工作負載使用的資源:
Allocatable CPU - 200 millicores
Allocatable memory - 100 MiB
某些節點需要比上述一般規則更多的外掛程式資源。舉例來說,某個節點可能執行需要 2 GiB 記憶體的 Prometheus 外掛程式。不過,如果叢集有多個節點,一般規則應該適用於大多數節點。
後續步驟
如要進一步瞭解可分配資源的概念,請參閱 GKE on Google Cloud說明文件中的「可分配資源」。