问题描述:

  最近kubernetes的机器io负载很高,经过查看是4T的磁盘被写满了,经过查看是容器下生成的core文件占用的磁盘比较大,
  文件里的内容都是说一写磁盘的负载比较高都是一些错误信息,但是对我们生产环境是没有影响的,最总的解决办法是把docker的core给禁用。

方法一:
1、[root@k8snode1 ~]# vim /lib/systemd/system/docker.service
添加:14行   ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --default-ulimit core=0:0

注:–default-ulimit core=0:0 # 禁用容器生成Core文件

2、[root@k8snode1 ~]# systemctl daemon-reload
3、[root@k8snode1 ~]#  systemctl restart docker
4、验证一下ulimit是否限制成功
[root@k8snode1 ~]# docker run -it centos bash
[root@ed25437581ff /]# ulimit -a
core file size          (blocks, -c) 0		 # 0不启用 , unlited, 不限制  单位kb
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 31744
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1048576
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) unlimited
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited
方法二:
1、	直接在运行容器的时候限制ulimit
[root@k8smaster ~]# docker run -d --ulimit core=0 --name apline b97b1dc3e74c 
[root@k8smaster ~]# docker exec -it apline sh
/usr/local/tomcat # ulimit -a
-f: file size (blocks)             unlimited
-t: cpu time (seconds)             unlimited
-d: data seg size (kb)             unlimited
-s: stack size (kb)                8192
-c: core file size (blocks)        0
-m: resident set size (kb)         unlimited
-l: locked memory (kb)             64
-p: processes                      unlimited
-n: file descriptors               1048576
-v: address space (kb)             unlimited
-w: locks                          unlimited
-e: scheduling priority            0
-r: real-time priority             0

方法一二对比:优缺点

方法一的好处就是以后启动所有的容器都是限制了core文件,包含:compose、yaml、run、create
方法二就是一次性的每启动一个容器都需要指定比较麻烦,所以建议使用方法一

查看详细信息请点击