• Docker 和 kubelet 的 cgroup driver


    在用minikube安装k8s的时候,有一个强烈的要求就是docker与kubelet的驱动,必须是保持一致的,需要都使用system或cgroupfs,一直搞不清这两个驱动的区别在哪。

    首先当然要了解cgroup的概念;cgroups,其名称源自控制组群(control groups)的简写,是Linux内核主要用于限制和隔离一组进程对系统资源的使用,也就是做资源QoS。可控制的资源主要包括CPU、内存、block I/O、网络带宽等等。cgroup 是将任意进程进行分组化管理的 linux 内核功能,cgroup 本身是提供将进程进行分组化管理的功能和接口的基础结构(各自的细节资源管控下的tasks文件记录了这个Cgroup的所有进程(包括线程))

    现在的cgroups适用于多种应用场景,从单个进程的资源控制,到实现操作系统层次的虚拟化;

    Cgroups是透过阶层式的方式来管理的,和程序、子群组相同,都会由它们的 parent 继承部份属性。然而,这两个模型之间有所不同

    由于k8s官网推荐使用systmed(docker默认安装也是systemd)

    如下图所示,我们可以看到对应的总资源管理及细节的资源管理:图1为总的资源管控,图2为细节的资源管控

     

     那么 systemd 和 cgroupfs 这两种驱动有什么区别呢?

    1. systemd cgroup driver 是 systemd 本身提供了一个 cgroup 的管理方式,使用systemd 做 cgroup 驱动的话,所有的 cgroup 操作都必须通过 systemd 的接口来完成,不能手动更改 cgroup 的文件

    2. cgroupfs 驱动就比较直接,比如说要限制内存是多少、要用 CPU share 为多少?直接把 pid 写入对应的一个 cgroup 文件,然后把对应需要限制的资源也写入相应的 memory cgroup 文件和 CPU 的 cgroup 文件就可以了

    所以可以看出来 systemd 更加安全,因为不能手动去更改 cgroup 文件,当然我们也推荐使用 systemd 驱动来管理 cgroup。

     

  • 相关阅读:
    POJ 1269 Intersecting Lines(判断两条线段关系)
    POJ 3304 Segments(判断直线和线段相交)
    poj 1383 Labyrinth【迷宫bfs+树的直径】
    poj 2631 Roads in the North【树的直径裸题】
    poj 1985 Cow Marathon【树的直径裸题】
    hdoj 1596 find the safest road【最短路变形,求最大安全系数】
    hdoj 1260 Tickets【dp】
    poj 1564 Sum It Up【dfs+去重】
    2014 牡丹江现场赛 i题 (zoj 3827 Information Entropy)
    hdoj 2473 Junk-Mail Filter【并查集节点的删除】
  • 原文地址:https://www.cnblogs.com/cutecatkk/p/13745304.html
Copyright © 2020-2023  润新知