linux(centos8):配置docker的cgroup driver为systemd
一,为什么要修改docker的cgroup driver?
1,什么是cgroups?
cgroups(Control Groups) 是 linux 内核提供的一种机制
它可以限制、记录任务组所使用的物理资源
它是内核附加在程序上的hook,
使程序运行时对资源的调度触发相应的钩子,
达到资源追踪和限制资源使用的目的
2,cgroupfs是什么?
docker默认的Cgroup Driver是cgroupfs
cgroupfs是cgroup为给用户提供的操作接口而开发的虚拟文件系统类型,
它和sysfs,proc类似,可以向用户展示cgroup的hierarchy,通知kernel用户对cgroup改动
对cgroup的查询和修改只能通过cgroupfs文件系统来进行
3,为什么要修改为使用systemd?
Kubernetes 推荐使用 systemd
来代替 cgroupfs
因为
systemd是Kubernetes自带的cgroup管理器, 负责为每个进程分配cgroups,
但docker的cgroup driver默认是cgroupfs,这样就同时运行有两个cgroup控制管理器,
当资源有压力的情况时,有可能出现不稳定的情况
如果不修改配置,会在kubeadm init时有提示:
[WARNING IsDockerSystemdCheck]: detected "cgroupfs" as the Docker cgroup driver.
The recommended driver is "systemd".
Please follow the guide at https://kubernetes.io/docs/setup/cri/
说明:刘宏缔的架构森林是一个专注架构的博客,
网站:https://blog.imgtouch.com
本文: https://blog.imgtouch.com/index.php/2023/05/22/docker-pei-zhi-docker-de-cgroupdriver-wei-systemddocker19038/
对应的源码可以访问这里获取: https://github.com/liuhongdi/
说明:作者:刘宏缔 邮箱: 371125307@qq.com
二,查看当前docker服务的cgroup driver?
[root@centos8 ~]# docker info Client: Debug Mode: false Server: Containers: 2 Running: 0 Paused: 0 Stopped: 2 Images: 10 Server Version: 19.03.8 Storage Driver: overlay2 Backing Filesystem: <unknown> Supports d_type: true Native Overlay Diff: true Logging Driver: json-file Cgroup Driver: cgroupfs ...
可以看到默认的Cgroup Driver是cgroupfs
三,修改docker的cgroup driver为systemd
编辑docker的配置文件,如果不存在就创建
[root@centos8 ~]# vi /etc/docker/daemon.json
内容如下:
{ ... "exec-opts": ["native.cgroupdriver=systemd"] }
说明:增加一条:
"exec-opts": ["native.cgroupdriver=systemd"]
如果上面一行还有内容,记得在上面一行加上逗号
例如:
{ "graph": "/data/docker", "exec-opts": ["native.cgroupdriver=systemd"] }
修改完成后重启docker服务
[root@centos8 ~]# systemctl restart docker
查看修改的效果
[root@centos8 ~]# docker info Client: Debug Mode: false Server: Containers: 2 Running: 0 Paused: 0 Stopped: 2 Images: 10 Server Version: 19.03.8 Storage Driver: overlay2 Backing Filesystem: <unknown> Supports d_type: true Native Overlay Diff: true Logging Driver: json-file Cgroup Driver: systemd Plugins: ...
可以看到修改成功,当前Cgroup Driver已修改为systemd
四,查看docker的版本
[root@centos8 ~]# docker --version Docker version 19.03.8, build afacb8b
五,查看linux的版本
[root@centos8 ~]# cat /etc/redhat-release CentOS Linux release 8.1.1911 (Core)