zoukankan      html  css  js  c++  java
  • 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)
  • 相关阅读:
    使用 gpg 加密文件
    CodeIgniter-Lottery
    使用phpize安装php扩展
    myWaterfall
    一台电脑上的git同时使用两个github账户
    移动端上传照片 预览+Draw on Canvas's Demo(解决 iOS 等设备照片旋转 90 度的 bug)
    移动端禁止页面下滑
    移动端用js与jquery实时监听输入框值的改动
    不管人生怎么走,都需要实时回头看看
    Shader 入门笔记(二) CPU和GPU之间的通信,渲染流水线
  • 原文地址:https://www.cnblogs.com/architectforest/p/12988488.html
Copyright © 2011-2022 走看看