首页 > 解决方案 > Kubernetes 节点 OOM 和 Node Allocator 的 systemReserved 设置

问题描述

我们遇到了节点进入 NotReady 状态的问题。我们实现了 metricbeat 来观察每个进程的 cpu/mem 使用情况,并实现了 filebeat 来获取 kubelet 日志,我们在崩溃点看到:

看起来我们正在进入交换地狱,服务器正在从可执行文件中换出 mmap 文件,然后在再次运行该进程时需要将它们从磁盘中带回。

我已经很好地了解了 Node Allocator 项目。令人讨厌的是,您需要指定 SystemReserved - 正如他们警告的那样,这是系统服务的内存上限。

即你可以很容易地在系统保留的 cgroup 中遇到同样的 OOM 地狱情况......

我可以看到我们设置了 -cgroups-per-qos 标志,并且我们创建了 kubepods cgroup,其中包含所有 pod。

我认为对 kubepods cgroup 应用内存限制会很容易,例如比机器上的总 RAM 少 2GB。

我遇到的问题是 kubelet 的可用内存计算仍然会查看整个节点上的内存,而不仅仅是 kubepod 的 cgroup 中的内存......</p>

有没有人找到一种解决方法让 kubelet 根据 kubepods cgroup 计算可用内存,而无需打开 Node Allocatable?

标签: kuberneteskubelet

解决方案


推荐阅读