當監控工具仍然顯示我們有記憶體時,GKE 殺死 pod

當監控工具仍然顯示我們有記憶體時,GKE 殺死 pod

我正在使用 GKE 的預設監控圖表來測試 GKE。
叢集摘要表示每個節點 (n2-custom-4-8192) 有 6.36 GB 可分配記憶體。
在節點詳細資訊頁面中,我可以看到當 pod 被殺死時,「已使用」峰值為 4.19。

我錯過了什麼嗎?還是這是圖表的問題? 6.36 GB 可分配內存

Pod 在使用 4.19 GB 時被殺死

答案1

在這種情況下,一切都按預期進行。我猜你錯過了關於 的資訊Eviction threshold

AllocatableCapacity是減去Reserved和的值Eviction Threshold

GKE文件中節點可分配資源您可以找到有關資源分配的資訊。

運行GKEKubernetes 節點元件需要節點的一些資源,這些元件是使該節點作為cluster.因此,您可能會注意到節點的總資源(如機器類型文件中指定)allocatableGKE.由於較大的機器類型往往會運作較多(進而延伸出較多的 Pod),因此為較大機器保留的containers資源量會向上擴展。還需要比典型的。節點需要額外的資源來運行 Windows 作業系統以及無法在容器中執行的 Windows Server 元件。GKEKubernetes componentsWindows Server nodesmore resourcesLinux node

若要檢查叢集中可用的節點可分配資源,請執行下列命令:

$ kubectl describe node ${NodeName} | grep Allocatable -B 7 -A 6

傳回的輸出包含容量和可分配欄位以及暫存、記憶體和 CPU 的測量值。

如果您將滾動向下一點可分配的記憶體和CPU資源您將了解到可分配資源的計算方式如下:

Allocatable = Capacity - Reserved - Eviction Threshold

對於記憶體資源,GKE 保留以下內容:

  • 對於內存小於 1 GB 的計算機,255 MiB 內存
  • 前 4GB 記憶體的 25%
  • 接下來 4GB 記憶體的 20%(最多 8GB)
  • 接下來 8GB 記憶體的 10%(最高 16GB)
  • 接下來的 112GB 記憶體(最高 128GB)的 6%
  • 128GB 以上記憶體的 2%

相關內容