Kube-Reserved/System-Reserved vs Eviction Threshold
我想為資源壓力場景正確準備我們的自我管理集群。從文件中我無法理解配置參數的必要性,當我們可以通過為 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 系統守護程序(如kubelet
、container runtime
、node problem detector
等)擷取資源預留。它並不意味著為作為 pod 執行的系統守護程序預留資源。kube-reserved
通常是pod density
節點上的函式。
system-reserved
:
system-reserved
旨在為 OS 系統守護程序(如sshd
,udev
等)擷取資源system-reserved
預留memory
,kernel
因為此時kernel
記憶體不計入 Kubernetes 中的 pod。還建議為使用者登錄會話保留資源(user.slice
在 systemd 世界中)。簡而言之,您可以輕鬆想像當您沒有為系統組件和
Kubelet
.您甚至可能會遇到驅逐處理程序不會發揮作用的情況,因為系統已經進入不穩定狀態。
另外值得一提的是:
--kube-reserved
您可以做的一件事--system-reserved
是為那些--eviction-hard
僅基於記憶體和臨時儲存的組件保留所需的 CPU。