繁体   English   中英

启动Pod时,Kubernetes不考虑总节点内存使用量

[英]Kubernetes doesn't take into account total node memory usage when starting Pods

我所看到的是:Kubernetes在计划新Pod时仅考虑其组件使用的内存,并且将剩余内存视为空闲,即使Kubernetes之外的其他系统进程正在使用该内存。 因此,在创建新部署时,它将尝试在窒息的节点上安排新的Pod。

我希望看到的是:Kubernetes 自动考虑总内存使用情况(通过kubernetes组件+系统进程),并将其安排在另一个节点上。

解决方法是,是否需要设置配置参数,还是一个错误?

是的,分配资源的参数很少:您可以为pod分配内存和CPU,并为系统守护程序手动分配内存和CPU。 在文档中,您可以找到该示例的工作方式:

示例场景

这是说明节点可分配计算的示例:

  • 节点具有32Gimemory16 CPUs100GiStorage
  • --kube-reserved设置为cpu=1,memory=2Gi,ephemeral-storage=1Gi
  • --system-reserved设置为cpu=500m,memory=1Gi,ephemeral-storage=1Gi
  • --eviction-hard设置为memory.available<500Mi,nodefs.available<10%

在这种情况下, Allocatable的内存将是14.5 CPUs28.5Gi的内存和98Gi的本地存储。 调度程序确保该节点上所有Pod的总内存requests不超过28.5Gi ,存储空间不超过88Gi 只要跨Pod的总内存使用量超过28.5Gi ,或者如果磁盘总使用量超过88Gi如果节点上的所有进程都消耗尽可能多的CPU,则Pod一起使用最多不能超过14.5 CPUs

如果未强制执行kube-reserved和/或system-reserved并且系统守护程序超出了其保留, kubelet只要总节点内存使用量高于31.5Gistorage大于90Gikubelet将pod 90Gi

您可以分配,你需要Kubernetes与标志多达--kube-reserved ,并与标志系统-system-reserved

此外,如果您需要更严格的规则来生成Pod,可以尝试使用Pod Affinity。

Kubelet具有--system-reserved参数,可让您为系统进程保留cpu和内存。

它不是动态的(您仅在启动时保留资源),而是告诉Kubelet不要使用节点中所有资源的唯一方法。

--system-reserved mapStringString

一组ResourceName = ResourceQuantity(例如cpu = 200m,内存= 500Mi,临时存储= 1Gi)对,描述了为非Kubernetes组件保留的资源。 当前仅支持cpu和内存。 有关更多详细信息,请参见http://kubernetes.io/docs/user-guide/compute-resources [默认=无]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM