首页 > 系统相关 >k8s 集群节点 SLUB: Unable to allocate memory on node -1 cgroup 内存泄露问题

k8s 集群节点 SLUB: Unable to allocate memory on node -1 cgroup 内存泄露问题

时间:2022-08-17 16:33:07浏览次数:64  
标签:node grub kmem Unable allocate cgroup memory 2.2 内核

1.原因

cgroup 的 kmem account 特性在 3.x 内核上有内存泄露问题,如果开启了 kmem account 特性 会导致可分配内存越来越少,直到无法创建新 pod 或节点异常

几点解释:

kmem account 是cgroup 的一个扩展,全称CONFIG_MEMCG_KMEM,属于机器默认配置,本身没啥问题,只是该特性在 3.10 的内核上存在漏洞有内存泄露问题,4.x的内核修复了这个问题。
因为 kmem account 是 cgroup 的扩展能力,因此runc、docker、k8s 层面也进行了该功能的支持,即默认都打开了kmem 属性
因为3.10 的内核已经明确提示 kmem 是实验性质,我们仍然使用该特性,所以这其实不算内核的问题,是 k8s 兼容问题

2.解决方案:

2.1 升级内核到 4.x

既然是 3.x 的问题,直接升级内核到 4.x 及以上即可

2.2修改机器启动引导项

修改虚机启动的引导项 grub 中的cgroup.memory=nokmem,让机器启动时直接禁用 cgroup的 kmem 属性

2.2.1 先备份grub

cp -a /etc/default/grub /etc/default/grub.bak

2.2.2 修改 grub,添加 “cgroup.memory=nokmem”

vim /etc/default/grub

GRUB_CMDLINE_LINUX="rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet cgroup.memory=nokmem"

2.2.3 生成配置

/usr/sbin/grub2-mkconfig -o /boot/grub2/grub.cfg

2.2.4 重启机器

 reboot

2.2.5 验证

cat /sys/fs/cgroup/memory/kubepods/burstable/pod*/*/memory.kmem.slabinfo 输出为0或者Input/output error说明修改成功 使用如下命令查看KMEM是否打开: cat /boot/config-`uname -r`|grep CONFIG_MEMCG CONFIG_MEMCG_KMEM=y # 开启kmem

标签:node,grub,kmem,Unable,allocate,cgroup,memory,2.2,内核
From: https://www.cnblogs.com/zbhlinux/p/16595615.html

相关文章

  • Nodejs 多进程与多线程
    为什么要使用多进程多进程与多线程介绍Nodejs多进程和多线程使用与区别cluster为什么需要多进程nodejs单线程,在处理http请求的时候一个错误都会导致进程退出,这是灾......
  • node.js安装过程中遇到的坑
    node.js的安装noide.js的完全卸载node.js的安装一些报错的解决1.node.js的完全卸载第一步:打开系统自带的应用管理器卸载ndoe.js。第二步:删除和node.js相关......
  • 多个Node.js版本之间切换
    本篇文章会讲windows和Mac系统下实现多个node.js版本之间的切换。1.windows下采用nvm(nvm-window)2.Mac下采用nvm和n注:window和mac下的nvm地址是不一样的一、windows系......
  • MindNode 5 for Mac(思维导图)
    MindNode5forMac是一款应用于mac平台的思维导图软件产品,为用户在灵感启发、思绪整理、记忆协助、项目规划、授课讲演等诸多场景下提升学习和工作效率。通过导图社区和云......
  • nodejs环境下使用redis(基础入门)
    redis-server--service-start 启动redis服务winptyredis-cli进入redis-cli,可查看存入的数据redis环境配好之后,先[email protected]安装nodejs环境下的redis库......
  • fnm node版本管理工具
    推荐一款小巧好用的node管理工具FastNodeManager(fnm)安装(注意添加永久环境变量)#初始安装curl-fsSLhttps://fnm.vercel.app/install|bash#后续升级curl......
  • centos7.9 nodejs16安装
    1、添加NodeSource到yum源curl-fsSLhttps://rpm.nodesource.com/setup_16.x|sudobash-2、安装Node.js和npmsudoyuminstallnodejs3、验证Node.js和npm的安装......
  • prometheus的node_exporter 端口被占用解决办法
    node_exporter数据采集客户端端口为9100,因为端口被占用,所以需要修改端口1.后台启动模式nohup./node_exporter--web.listen-adderss=:9111&2.系统启动模式修改......
  • Node
    Nodepackageorg.jsoup.nodes;importorg.jsoup.SerializationException;importorg.jsoup.helper.StringUtil;importorg.jsoup.helper.Validate;importorg.jsoup......
  • Nodemon 如何实时监听 TypeScript 项目下的文件并热部署?
    首先你的项目要安装ts-node和nodemon:npmi-Dts-nodenodemon在package.json文件中配置运行脚本:"dev":"nodemon--watchsrc/**/*.ts--exec\\\"ts-node\\\"src/ma......