可供工作負載使用的資源

本頁面說明如何判斷節點上可用的 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說明文件中的「可分配資源」。