Kube-Reserved/System-Reserved 与驱逐阈值

Kube-Reserved/System-Reserved 与驱逐阈值

我想为我们的自我管理集群做好充分的准备,以应对资源压力的情况。从文档我无法理解配置参数的必要性,因为我们可以通过为 kubelet 和系统守护进程--eviction-hard设置适当的值来实现相同的效果。--kube-reserved--system-reserved

让我通过一个例子来问一下。为什么我需要设置 Kubelet 和 system-daemons 的预留,而这似乎只需要 configure --eviction-hard?一般来说,每当有资源压力时,这应该足以触发 pod 驱逐事件。那么 Kubelet 和 system-daemons 预留选项存在的原因是什么?

答案1

根据官方文件:

节点可分配

在此处输入图片描述

Kubernetes 节点上的“可分配”定义为 Pod 可用的计算资源量。调度程序不会超额订阅“可分配”。目前支持“CPU”、“内存”和“临时存储”。

可分配资源Node(调度程序可以用来分配工作负载的资源)可以定义为:

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

另外,至于:

  • kube-reserved

kube-reserved旨在捕获 kubernetes 系统守护进程(如、、等)的资源预留。它kubelet并不旨在为作为 pod 运行的系统守护进程预留资源。通常是节点上的功能。container runtimenode problem detectorkube-reservedpod density

--Kubernetes.io:文档:任务:管理集群:预留计算资源:Kube 保留

  • system-reserved

system-reserved旨在捕获 OS 系统守护进程(如、等)的资源预留。sshdudevsystem-reserved为 预留,memory因为kernel此时kernel内存尚未计入 Kubernetes 中的 pod。还建议为用户登录会话预留资源(user.slice在 systemd 世界中)。

--Kubernetes.io:文档:任务:管理集群:预留计算资源:系统预留

简而言之,你可以很容易地想象当你没有为系统组件和保留足够的资源时会发生什么Kubelet

您甚至可能会遇到这样的情况:由于系统已经进入不稳定状态,驱逐处理程序将无法发挥作用。

另外值得一提的是:

您可以使用的一件事--kube-reserved是保留那些仅基于内存和临时存储的--system-reserved组件所需的 CPU 。--eviction-hard

相关内容