cgroup

030、实现容器的底层技术(2019-01-25 周五)

让人想犯罪 __ 提交于 2020-02-29 07:09:43
参考 https://www.cnblogs.com/CloudMan6/p/7045784.html 为了更好的理解容器的特性,本节我们将讨论容器的底层实现技术。 cgroup 和 namespace 是最重要的两种技术。 cgroup 实现资源限额 , namespace 实现资源隔离 cgroup 全程 Control Group 。Linux操作系统通过 cgroup 可以设置进程使用CPU、MEM 和 IO 资源的限额。就是我们前面学习的参数 --cpu-shares -m --device-write-bps root@docker-lab:~# docker run -it --cpu-shares 512 progrium/stress -c 1 # 启动容器,设置cpu.shares 512 stress: info: [1] dispatching hogs: 1 cpu, 0 io, 0 vm, 0 hdd stress: dbug: [1] using backoff sleep of 3000us stress: dbug: [1] --> hogcpu worker 1 [7] forked root@docker-lab:~# docker ps # 查看容器ID CONTAINER ID IMAGE COMMAND CREATED STATUS

实现容器的底层技术

一世执手 提交于 2020-02-29 07:04:52
https://www.cnblogs.com/CloudMan6/p/7045784.html 为了更好地理解容器的特性,本节我们将讨论容器的底层实现技术。 cgroup 和 namespace 是最重要的两种技术。cgroup 实现资源限额, namespace 实现资源隔离。 cgroup cgroup 全称 Control Group。Linux 操作系统通过 cgroup 可以设置进程使用 CPU、内存 和 IO 资源的限额。相信你已经猜到了:前面我们看到的 --cpu-shares 、 -m 、 --device-write-bps 实际上就是在配置 cgroup。 cgroup 到底长什么样子呢?我们可以在 /sys/fs/cgroup 中找到它。还是用例子来说明,启动一个容器,设置 --cpu-shares=512 : 查看容器的 ID: 在 /sys/fs/cgroup/cpu/docker 目录中,Linux 会为每个容器创建一个 cgroup 目录,以容器长ID 命名: 目录中包含所有与 cpu 相关的 cgroup 配置,文件 cpu.shares 保存的就是 --cpu-shares 的配置,值为 512。 同样的,/sys/fs/cgroup/memory/docker 和 /sys/fs/cgroup/blkio/docker 中保存的是内存以及

Kubernetes1.3:QoS服务质量管理

我与影子孤独终老i 提交于 2020-02-28 20:40:55
Kubernetes1.3:QoS 服务 质量管理 在kubernetes中,每个POD都有个QoS标记,通过这个Qos标记来对POD进行 服务 质量管理 。QoS的英文全称为"Quality of Service",中文名为"服务质量",它取决于用户对服务质量的预期,也就是期望的服务质量。对于POD来说,服务质量体现在两个指标上,一个指标是CPU,另一个指标是 内存 。在实际运行过程中,当NODE节点上内存资源紧张的时候,kubernetes根据POD具有的不同QoS标记,采取不同的处理策略。 在Kubernetes中,POD的QoS 服务 质量 一共有三个级别,如下图所示: 这三个QoS级别介绍,可以看下面表格: QoS级别 QoS介绍 BestEffort POD中的所有容器都没有指定CPU和内存的requests和limits,那么这个POD的QoS就是BestEffort级别 Burstable POD中只要有一个容器,这个容器requests和limits的设置同其他容器设置的不一致,那么这个POD的QoS就是Burstable级别 Guaranteed POD中所有容器都必须统一设置了limits,并且设置参数都一致,如果有一个容器要设置requests,那么所有容器都要设置,并设置参数同limits一致,那么这个POD的QoS就是Guaranteed级别

linux中的挂载命令

不想你离开。 提交于 2020-02-28 15:41:03
一.查询与自动挂载 查询系统中已经挂载的设备,-l会显示卷标名称 mount [-l] oot@izm5e2q95pbpe1hh0kkwoiz tmp]# mount sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime) proc on /proc type proc (rw,nosuid,nodev,noexec,relatime) devtmpfs on /dev type devtmpfs (rw,nosuid,size=932240k,nr_inodes=233060,mode=755) securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime) tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev) devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000) tmpfs on /run type tmpfs (rw,nosuid,nodev,mode=755) tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid

LXC(linux container) 之 cgroup

生来就可爱ヽ(ⅴ<●) 提交于 2020-02-22 15:14:36
  在学习了解docker的时候介绍到LXC(Linux Container)和Cgroup的概念,菜鸟一枚,所以先学习了解下什么是Cgroup   Cgroup是将任意进程进行分组化管理的Linux内核功能。cgroup本身提供将进程进行分组化管理的功能和接口的基础结构。这里的分组化管理限制某个进程或者某些进程使用资源的过程,也就是所谓实现一组容器。在这个容器中,有分配好的特定比例的cpu时间,IO时间,可用内存大小等。于是就出现了cgroup的概念,cgroup就是controller group,最初由google的工程师提出,后来被整合进Linux内核中。 一、基本概念   Cgroup:  controller group     task:   一个进程   control group:   控制族群,按照某种标准划分的进程组   hierarchy:   层级,control group可以形成树形的结构,有父节点,子节点,每个节点都是一个control group,子节点继承父节点的特定属性。   subsystem:   子系统。子系统就是资源控制器,每种子系统就是一个资源的分配器,比如cpu子系统是控制cpu时间分配的。 二、安装和启动   以centos为例 安装cgroup    yum install libcgroup   启动方式     对于yum

docker容器的底层技术

半腔热情 提交于 2020-02-22 13:43:07
cgroup(实现资源限制) cgroup全称control group。linux操作系统通过cgroup可以设置进程使用CPU、内存和IO资源的限制。--cpu-shares、-m、--device-write-bps实际上就是在配置cgroup。 在/sys/fs/cgroup/cpu/docker目录中,linux会为每个容器创建一个cgroup目录,以容器的长ID命名的目录中包含所有与cpu相关的cgroup配置,文件cpu.shares保存的就是--cpu-shares的配置,同样的,/sys/fs/cgroup/memory/docker和/sys/fs/cgroup/blkio/docker中保存的就是内存以及block io的cgroup配置 namespace(实现资源隔离) 在每个容器中,都有文件系统、网卡等资源,这些资源看上去都是容器自己的。拿容器来说,每个容器都会认为自己有一块独立的网卡。即使host上只有一块物理网卡。这种方式非常好,它使得容器更像一个独立的计算机 linux实现这种方式的技术是namespace。namespace管理着host中全局唯一的资源。可以让每个容器都觉得只有自己在使用它。换句话说,namespace实现了容器间资源的隔离 Linux使用了6种namespace,分别对应6种资源:mount、uts、ipc、pid

【kubectl】The connection to the server localhost:8080 was refused - did you specify the right host or

不羁岁月 提交于 2020-02-13 17:00:53
Server Agent journalctl -xefu kubelet failed to run Kubelet: failed to create kubelet: misconfiguration: kubelet cgroup driver: "systemd" is different from docker cgroup driver: "cgroupfs" docker info vi /etc/docker/daemon.json 添加一行: “exec-opts”: [“native.cgroupdriver=systemd”], 重启docker systemctl daemon-reload systemctl restart docker 来源: CSDN 作者: haixwang 链接: https://blog.csdn.net/HaixWang/article/details/104294943

Docker Cgroup 容器资源限制

ε祈祈猫儿з 提交于 2020-02-08 13:42:09
docker通过cgroup来控制容器使用的资源配额,包括CPU、内存、磁盘三大方面。 1.限制内存 查询系统中已经mount的cgroup的文件系统,这里的t表示type [root@server1 ~]# mount -t cgroup 搜索cgroup软件包 [root@server1 ~]# yum search cgroup 安装libcgroup [root@server1 ~]# yum install -y libcgroup-tools.x86_64 [root@sever1 ~]# cd /sys/fs/cgroup/memory/ [root@sever1 memory]# ls 创建目录 [root@sever1 memory]# mkdir x1 [root@sever1 memory]# cd x1 [root@sever1 x1]# ls [root@sever1 x1]# cat memory.limit_in_bytes 9223372036854771712 [root@sever1 x1]# cat memory.memsw.limit_in_bytes 9223372036854771712 限制内存;200M = 1024 * 200 = 209715200 [root@sever1 x1]# echo 209715200 > memory

docker 容器环境 检测方法

試著忘記壹切 提交于 2020-01-30 00:46:14
1.背景 现在有研究表明,人们目前有使用Docker进行恶意代码重现工作的倾向。Docker的反检测可分为三部分:CPU反检测,内存反检测和存储数据反检测。该技术利用了AUFS的层叠镜像技术,使得我们的Docker反检测技术可以很容易地实现在镜像的一层中——反检测层。这样,只需要将反检测层动态地部署到Docker容器中,即可实现对Container环境的CPU、内存和存储的封装,从而遮蔽掉Container特征。这样的话,该容器中的恶意代码也就无法检测其自身是否在Container中运行了。 2.cgroup方法 在Host和Container中执行cat /proc/1/cgroup命令的结果是不同的,可以利用这一点进行判断。(或者cat /proc/self/cgroup命令也行) 在Host中执行cat /proc/1/cgroup命令的结果: root@ubuntu:~# cat /proc/1/cgroup 10:hugetlb:/ 9:cpuset:/ 8:memory:/ 7:cpu,cpuacct:/ 6:perf_event:/ 5:blkio:/ 4:net_cls,net_prio:/ 3:freezer:/ 2:devices:/ 1:name=systemd:/ 在Container中执行cat /proc/1/cgroup命令的结果: root

003_Linux的Cgroup<实例详解>

☆樱花仙子☆ 提交于 2020-01-29 12:43:19
为什么要有cgroup Linux系统中经常有个需求就是希望能限制某个或者某些进程的分配资源。也就是能完成一组容器的概念,在这个容器中,有分配好的特定比例的cpu时间,IO时间,可用内存大小等。于是就出现了cgroup的概念,cgroup就是controller group,最初由google的工程师提出,后来被整合进Linux内核中。 Cgroup是 将任意进程进行分组化管理的Linux内核功能 。 cgroup本身提供将进程进行分组化管理的功能和接口的基础结构 。 而后的Android操作系统也就凭借着这个技术, 为每个应用程序分配不同的cgroup,将每个程序进行隔离,达到了一个应用程序不会影响其他应用程序环境的目的。 概念 task: 一个进程 control group: 控制族群,按照某种标准划分的进程组 hierarchy: 层级,control group可以形成树形的结构,有父节点,子节点,每个节点都是一个control group, 子节点 继承 父节点 的特定属性。 subsystem: 子系统。 子系统就是 资源控制器 ,每种子系统就是一个资源的分配器,比如cpu子系统是控制cpu时间分配的。 可以使用 lssubsys -al 来列出系统支持多少种子系统,和使用 ls /sys/fs/cgroup/ (ubuntu) 来显示已经挂载的子系统: