cgroup路径可配置

功能描述

系统容器提供在宿主机上进行容器资源隔离和预留的能力。通过--cgroup-parent参数,可以将容器使用的cgroup目录指定到某个特定目录下,从而达到灵活分配宿主机资源的目的。例如可以设置容器a、b、c的cgroup父路径为/lxc/cgroup1,容器d、e、f的cgroup父路径为/lxc/cgroup2,这样通过cgroup路径将容器分为两个group,实现容器cgroup组层面的资源隔离。

参数说明

命令

参数

参数指定值说明

isula create/run

—cgroup-parent

  • 字符串变量。
  • 指定容器cgroup父路径。

除了通过命令行指定单个系统容器对应的cgroup父路径外,还可通过修改iSulad容器引擎启动配置文件,指定所有容器的cgroup路径。

配置文件路径

配置项

配置项说明

/etc/isulad/daemon.json

—cgroup-parent

  • 字符串变量。
  • 指定容器默认cgroup父路径。
  • 配置示例:”cgroup-parent”: “/lxc/mycgroup”

约束限制

  • 如果daemon端和客户端都设置了cgroup parent参数,最终以客户端指定的--cgroup-parent生效。
  • 如果已启动容器A,然后启动容器B,容器B的cgroup父路径指定为容器A的cgroup路径,在删除容器的时候需要先删除容器B再删除容器A,否则会导致cgroup资源残留。

使用示例

启动系统容器,指定—cgroup-parent参数:

  1. [root@localhost ~]# isula run -tid --cgroup-parent /lxc/cgroup123 --system-container --external-rootfs /root/myrootfs none init
  2. 115878a4dfc7c5b8c62ef8a4b44f216485422be9a28f447a4b9ecac4609f332e

查看容器init进程的cgroup信息:

  1. [root@localhost ~]# isula inspect -f "{{json .State.Pid}}" 11
  2. 22167
  3. [root@localhost ~]# cat /proc/22167/cgroup
  4. 13:blkio:/lxc/cgroup123/115878a4dfc7c5b8c62ef8a4b44f216485422be9a28f447a4b9ecac4609f332e
  5. 12:perf_event:/lxc/cgroup123/115878a4dfc7c5b8c62ef8a4b44f216485422be9a28f447a4b9ecac4609f332e
  6. 11:cpuset:/lxc/cgroup123/115878a4dfc7c5b8c62ef8a4b44f216485422be9a28f447a4b9ecac4609f332e
  7. 10:pids:/lxc/cgroup123/115878a4dfc7c5b8c62ef8a4b44f216485422be9a28f447a4b9ecac4609f332e
  8. 9:rdma:/lxc/cgroup123/115878a4dfc7c5b8c62ef8a4b44f216485422be9a28f447a4b9ecac4609f332e
  9. 8:devices:/lxc/cgroup123/115878a4dfc7c5b8c62ef8a4b44f216485422be9a28f447a4b9ecac4609f332e
  10. 7:hugetlb:/lxc/cgroup123/115878a4dfc7c5b8c62ef8a4b44f216485422be9a28f447a4b9ecac4609f332e
  11. 6:memory:/lxc/cgroup123/115878a4dfc7c5b8c62ef8a4b44f216485422be9a28f447a4b9ecac4609f332e
  12. 5:net_cls,net_prio:/lxc/cgroup123/115878a4dfc7c5b8c62ef8a4b44f216485422be9a28f447a4b9ecac4609f332e
  13. 4:cpu,cpuacct:/lxc/cgroup123/115878a4dfc7c5b8c62ef8a4b44f216485422be9a28f447a4b9ecac4609f332e
  14. 3:files:/lxc/cgroup123/115878a4dfc7c5b8c62ef8a4b44f216485422be9a28f447a4b9ecac4609f332e
  15. 2:freezer:/lxc/cgroup123/115878a4dfc7c5b8c62ef8a4b44f216485422be9a28f447a4b9ecac4609f332e
  16. 1:name=systemd:/lxc/cgroup123/115878a4dfc7c5b8c62ef8a4b44f216485422be9a28f447a4b9ecac4609f332e/init.scope
  17. 0::/lxc/cgroup123/115878a4dfc7c5b8c62ef8a4b44f216485422be9a28f447a4b9ecac4609f332e

可以看到容器的cgroup父路径被设置为/sys/fs/cgroup//lxc/cgroup123

同时,对于所有容器cgroup父路径的设置可以配置一下容器daemon文件,例如:

  1. {
  2. "cgroup-parent": "/lxc/cgroup123",
  3. }

然后重启容器引擎,配置生效。