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)

 

posted @ 2020-05-29 17:07  刘宏缔的架构森林  阅读(9896)  评论(0编辑  收藏  举报