问题描述:
方法一:最近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
方法二就是一次性的每启动一个容器都需要指定比较麻烦,所以建议使用方法一