问题描述:
最近kubernetes的机器io负载很高,经过查看是4T的磁盘被写满了,经过查看是容器下生成的core文件占用的磁盘比较大,文件里的内容都是说一写磁盘的负载比较高都是一些错误信息,但是对我们生产环境是没有影响的,最总的解决办法是把docker的core给禁用。
方法一:
修改Docker的Service文件,新增 --default-ulimit core=0:0参数
[root@NercAuth 001.mssql]# cat /lib/systemd/system/docker.service
添加13行:ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --default-ulimit core=0:0
注:–default-ulimit core=0:0 # 禁用容器生成Core文件
[root@NercAuth 001.mssql]# systemctl daemon-reload
[root@NercAuth 001.mssql]# systemctl restart docker
[root@NercAuth 001.mssql]#
#验证下ulimit是否限制成功
[root@NercAuth 001.mssql]# docker exec -it MSSQL2019 bash
root@MSSQL2019:/# ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 63456
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
方法二:
在启动运行容器的时候直接进行限制ulimit
docker run -d --ulimit core=0 --name apline apline:latest
docker exec -it apline bash
ulimit -a
...
...
...
...
方法对比
方法一:对整台服务器全局做了限制,以后在此服务器上启动的所有容器都限制了core文件。
方法二:此操作是一次性的,每次启动一个容器都需要单独指定此参数。
评论区