如果云主机采用了Ubuntu 21.04或以下的版本时,默认开启的是CGroup v1,如果要使容器系统能够使用CGroup v2来管理资源,就必须手动开启CGroup v2。本文将记录如何在Ubuntu 21.04及以下系统中开启CGroup v2,并安装containerd容器系统和nerdctl容器控制工具的过程。
启动CGroup v2功能
在启动系统的CGroup v2功能之前,首先需要确认系统是否提供了CGroup v2的支持,并且系统是否已经启动了CGroup v2功能。
在命令行中执行以下命令,可以查看系统是否提供了CGroup v2的支持。
|
|
如果输出的结果中包含以下内容,那就说明系统已经提供了CGroup v2的支持。
|
|
接下来是检查系统中是否已经激活了CGroup v2。同样在命令行中执行以下命令:
|
|
如果系统提示找不到指定文件,那么就说明系统目前没有激活CGroup v2。
此时就可以激活系统中的CGroup v2了,需要注意的是,激活系统中的CGroup v2功能会要求系统重新启动,如果正在操作生产系统,要保证当前系统管理操作不会对系统中所承载的服务产生影响。
打开系统中的/etc/default/grub/
文件,在其中的GRUB_CMDLINE_LINUX
参数的尾部增加以下内容。
|
|
添加完以后的GRUB_CMDLINE_LINUX
参数可能是这样的:
|
|
完成添加以后执行以下两条命令,更新系统引导并重新启动系统。
|
|
sudo
。
完成系统重启以后,可以再次执行检查CGroup v2是否已经激活的命令,此时应该会列出cgroup.controllers
文件。
cat /sys/fs/cgroup/cgroup.controllers
可以检查目前有哪些设备已经托管给了CGroup。
安装containerd和nerdctl
containerd是一个OCI标准的容器化支持环境,但是并不需要我们单独的去完成containerd的安装。nerdctl的完整安装包内已经集成了containerd、runC和CNI,所以直接在Ubuntu中安装nerdctl的完整版即可。
顺序执行以下命令可以下载nerdctl 0.22.2版,并将nerdctl和containerd等都安装到/usr/local
中。
|
|
以上命令的最后两行是启动containerd和镜像打包支持。安装包解压完毕以后,不必重启系统,应该就已经可以执行nerdctl
命令了。
如果当前不能使用root用户来完成containerd和nerdctl的安装,那么就需要使用Rootless方式安装nerdctl了。这种情况下可以执行完上面第二条解压命令以后,执行以下命令完成安装。
|
|