前言
最近部门的k8s 集群为了扩展,增加了两个节点,结果用了一段时间后莫名出现了以下问题,新增的这两个节点上无法创建pod
从rancher发现事件报错信息如下:
问题排查步骤
第一步:
报错信息说无法创建,于是进入到/sys/fs/cgroup/memory/docker目录下用touch 创建一个文件:
结果报错:no space left on device
第二步:
从提示本人以为是磁盘满了,于是上到具体的k8s节点看了下磁盘,用命令 df -h ,结果磁盘是充足的。
第三步:
docker 每启动一个容器,就会创建一个cgroup,看下系统是不是cgroups个数达上限了
cat /proc/cgroups |grep memory (subsys_name hierarchy num_cgroups enabled)
结果:发现num_cgroups也就才50多个,上限一般都6W左右(如果你们发现自己的特别多,可以 echo 1>/sys/fs/cgroup/devices/docker/cgroup.clone_children 解决下)
也不是这个原因
但是个人对cgroup到底是个什么东东,于是chrom一下,看了一篇博客做了大概的了解
Docker原理之Cgroups
第四步:
那此时可以基本断定问题跟Cgroup有关,此时想到了selinux,通过 getenforce 查看selinux状态,果然竟然是开着的。关了,然后磁盘重新激活下。
当然将对应的问题节点直接重启系统reboot直接可以解决