Kubernetes

Kube-Reserved/System-Reserved vs Eviction Threshold

  • July 15, 2021

我想為資源壓力場景正確準備我們的自我管理集群。從文件中我無法理解配置參數的必要性,當我們可以通過為 kubelet 和系統守護程序--eviction-hard設置適當的值來達到相同的效果時。--kube-reserved``--system-reserved

讓我通過一個例子來問。為什麼我需要為 Kubelet 和 system-daemons 設置保留,而似乎配置就足夠了--eviction-hard?每當有資源壓力時,這應該足以觸發 pod eviction 事件。那麼 Kubelet 和 system-daemons 預留選項存在的原因是什麼?

根據官方文件:

節點可分配

在此處輸入圖像描述

Kubernetes 節點上的“可分配”定義為 pod 可用的計算資源量。調度程序不會過度訂閱“可分配”。目前支持“CPU”、“記憶體”和“臨時儲存”。

Node分配的(調度程序可以用來分配工作負載的資源)可以定義為:

  • Node allocatable = Node capacity - kube-reserved - system-reserved

另外,至於:

  • kube-reserved:

kube-reserved旨在為 kubernetes 系統守護程序(如kubeletcontainer runtimenode problem detector等)擷取資源預留。它並不意味著為作為 pod 執行的系統守護程序預留資源。kube-reserved通常是pod density節點上的函式。

Kubernetes.io:文件:任務:管理集群:預留計算資源:Kube 預留

  • system-reserved:

system-reserved旨在為 OS 系統守護程序(如sshd,udev等)擷取資源system-reserved預留memorykernel因為此時kernel記憶體不計入 Kubernetes 中的 pod。還建議為使用者登錄會話保留資源(user.slice在 systemd 世界中)。

Kubernetes.io:文件:任務:管理集群:預留計算資源:系統預留

簡而言之,您可以輕鬆想像當您沒有為系統組件和Kubelet.

您甚至可能會遇到驅逐處理程序不會發揮作用的情況,因為系統已經進入不穩定狀態。

另外值得一提的是:

--kube-reserved您可以做的一件事--system-reserved是為那些--eviction-hard僅基於記憶體和臨時儲存的組件保留所需的 CPU。

引用自:https://serverfault.com/questions/1067519