查看docker当前的Cgroup版本:
docker info | grep Cgroup
返回:
Cgroup Driver: systemd
Cgroup Version: 1
如果你这里是2那么说明启用了,如果是1,那么就未启用。
Docker使用cgroup v2的条件
对于Docker来说,Cgroups v2的使用需要满足以下条件:
- Linux内核版本在4.15以上,使用
uname -r
查看。 - 系统已经启用Cgroups v2,可以通过
sudo mount -t cgroup2 none /sys/fs/cgroup
命令来启用。 - Docker版本在20.10及以上。
识别Linux节点上的cgroup版本
cgroup版本取决于使用的Linux发行版和操作系统上配置的默认cgroup版本。要检查你的发行版使用的cgroup版本,可以在节点上运行以下命令:
stat -fc %T /sys/fs/cgroup/
- 如果输出是
cgroup2fs
,则表示使用的是cgroup v2
。 - 如果输出是
tmpfs
,则表示使用的是cgroup v1
。
也可以运行查看:
cat /proc/filesystems | grep cgroup
启用cgroup v2
编辑 /etc/default/grub
或者 /etc/sysconfig/grub
,添加以下内容来启用cgroup v2
:
GRUB_CMDLINE_LINUX="cgroup_no_v1=all systemd.unified_cgroup_hierarchy=1"
保存文件后,运行以下命令更新GRUB配置:
update-grub # 对于Debian/Ubuntu
grub2-mkconfig -o /boot/grub2/grub.cfg # 对于CentOS/Fedora
重启系统以应用内核启动参数。
reboot
确认cgroup v2已经启用。运行以下命令:
mount | grep cgroup
你应该会看到类似以下的输出,其中cgroup2被挂载:
cgroup2 on /sys/fs/cgroup type cgroup2 (rw,nosuid,nodev,noexec,relatime,nsdelegate,memory_recursiveprot)
启动Docker服务。如果你已经按照上面的步骤进行了配置,Docker会自动检测并使用cgroup v2。
确认Docker是否在cgroup v2中运行。运行以下命令:
docker info | grep Cgroup
回退到Cgroup v1
如果你想在配置回去
编辑原来的grub文件配置为:
GRUB_CMDLINE_LINUX="cgroup_no_v1=all systemd.unified_cgroup_hierarchy=0"
运行指令
sudo update-grub
reboot
REF
https://kubernetes.io/zh-cn/docs/concepts/architecture/cgroups/