1: 高版本docker与老版本Linux内核不兼容,导致内存泄漏
详细描述:
高版本docker与老版本Linux内核不兼容,导致内存泄漏
容器集群中某个计算节点ICMP ping失败,上线查看机器已经宕机,重启后查看内核日志
出现:SLUB: Unable to allocate memory on node -1
重启后机器不断打出改log。但free查看内存,发现内存有空闲
解题思路:
无
原因分析:
参见网址:https://github.com/moby/moby/issues/27576
新版docker启用Linux CGroup memory这个feature,但这个feature在kernel 4.0以下版本中是非稳定版本(经过实践,即使是kernel 4.2也不靠谱),会导致内存泄露。
解决步骤:
将升级内核到4.9,问题即可解决
2: 默认容器文件系统采用device mapper,导致硬盘空间频繁被占满
详细描述:
默认容器文件系统采用device mapper,导致硬盘空间频繁被占满
现象:磁盘空间告警,提示根目 录/、/var/lib/docker、/var/lib/kubelet、/var/lib/docker/devicemapper的磁盘空间已经超过80%
解题思路:
无
原因分析:
由于内核升级等原因,docker默认采用的文件系统由aufs变成了devicemapper,而devicemapper所占用的空间比较多。
查看 #cat /proc/filesysytems | grep aufs # cat /proc