kubernetes - Kubernetes 节点 OOM 和 Node Allocator 的 systemReserved 设置
问题描述
我们遇到了节点进入 NotReady 状态的问题。我们实现了 metricbeat 来观察每个进程的 cpu/mem 使用情况,并实现了 filebeat 来获取 kubelet 日志,我们在崩溃点看到:
- kswapd 尖峰
- 网络和基本系统服务似乎退出了。
- ssh 监听但不处理请求
看起来我们正在进入交换地狱,服务器正在从可执行文件中换出 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?
解决方案
推荐阅读
- wordpress - 如何使用 301 重定向的重写规则删除 URL 中的所有 ? 源行代码
- post - 如何从 NestJs 代码将数据发布到 URL?
- python-3.x - Python RSA 密钥,收到密钥但收到错误“这不是私钥”
- java - 如何配置 apache httpclient 4.5+ SSLContext 以使用带有自签名证书的双向 TLS 身份验证?
- javascript - 如何比较每行中每个数组中的第三个?
- amazon-web-services - AWS ECR 尝试使用 Get-ECRLoginCommnad 失败
- typescript - 父类中的TypeScript方法访问子类中的Type
- node.js - 安装 yeoman 的问题
- python - Python中的词云错误:字符串索引必须是整数
- vue.js - Vuetify Fullscreen 属性未创建高度为 100% 的元素