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://www.cnblogs.com/architectforest

         對應的源碼可以訪問這里獲取: 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)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM