Skip to content

实战-centos7上containerd的安装-v1-6-10-20221205-测试成功-荐

实战:centos7上containerd的安装(v1.6.10)-2022.12.5(测试成功)【荐】

image-20230910083600243

环境

实验环境

软件版本
操作系统centos7.6_x64 1810 mini(其他centos7.x版本也行)
containerdv1.6.10

实验软件

链接:https:libseccomp-2.3.1-4.el7.x86_64# 如果没有安装 libseccomp 包则可以执行下面的命令安装依赖[root@master1 ~]#wget http:[root@master1 ~]#yum install libseccomp-2.3.1-4.el7.x86_64.rpm -y

由于 Containerd 需要依赖底层的 runc 工具,所以我们也需要先安装 runc,不过 Containerd 提供了一个包含相关依赖的压缩包 cri-containerd-cni-${VERSION}.${OS}-${ARCH}.tar.gz,可以直接使用这个包来进行安装,强烈建议使用该安装包,不然可能因为 runc 版本问题导致不兼容。(这个安装包包含了一些包,例如runc,ctr命令等) 首先从 release 页面下载最新的 1.6.10 版本的压缩包:

记得将 /usr/local/bin 和 /usr/local/sbin 追加到 PATH 环境变量中:(默认就在环境变量里的)

可以正常执行 containerd -v 命令证明 Containerd 安装成功了,但是执行 runc -h 命令的时候却出现了类似runc:undefined symbol:seccomp_notify_respond 的错误,这是因为我们当前系统默认安装的 libseccomp是 2.3.1 版本,该版本已经不能满足我们这里的 v1.6.10 版本的 Containerd 了(从 1.5.7 版本开始就不兼容了),需要 2.4 以上的版本,所以我们需要重新安装一个高版本的 libseccomp 。

注意:

老师说先要卸载老版本的libseccomp-2.3.1-4包,但是之前的chrony软件包会依赖这个libseccomp包,卸载libseccomp包的同时chrony也会被卸载掉。后面安装好高版本libseccomp-2.5.1-1要记得再次安装下chrony软件。 另外,新版本libseccomp-2.5.1-1.el8.x86_64.rpm是el8的,但是直接安装到el7上也是没问题的哦;

这里开始操作:

现在 runc 命令就可以正常使用了:

2.配置containerd

Containerd 的默认配置文件为 /etc/containerd/config.toml,我们可以通过如下所示的命令生成一个默认的配置:

bash
[root@master1 ~]#mkdir -p /etc/containerd[root@master1 ~]#containerd config default >/etc/containerd/config.toml

containerd都是插件化的。

image-20230910083656516

1.修改containerd 的 cgroup driver类型为systemd

将 containerd 的 cgroup driver 配置为 systemd。

对于使用 systemd 作为 init system 的 Linux 的发行版,使用 systemd作为容器的 cgroup driver可以确保节点在资源紧张的情况更加稳定,所以推荐将 containerd 的 cgroup driver 配置为 systemd。

修改前面生成的配置文件 /etc/containerd/config.toml,在 plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options配置块下面将 SystemdCgroup设置为 true

bash
[root@master1 ~]#vim /etc/containerd/config.toml#通过搜索SystemdCgroup进行定位[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc]……[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]SystemdCgroup=true....

image-20230910083702723

2.配置镜像加速器地址

然后再为镜像仓库配置一个加速器,需要在 cri 配置块下面的 registry配置块下面进行配置 registry.mirrors:(注意缩进)

bash
[root@master1 ~]#vim /etc/containerd/config.toml#通过搜索registry.mirrors进行定位144[plugins."io.containerd.grpc.v1.cri".registry]……152153[plugins."io.containerd.grpc.v1.cri".registry.mirrors]154[plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]155endpoint=["https:endpoint=["https:[plugins."io.containerd.grpc.v1.cri".registry.mirrors."k8s.gcr.io"]endpoint=["https:……sandbox_image="registry.aliyuncs.com/k8sxio/pause:3.8"……

修改前: image-20230910083723758修改后: image-20230910083728373

3.启动containerd服务

由于上面我们下载的 containerd 压缩包中包含一个 etc/systemd/system/containerd.service的文件,这样我们就可以通过 systemd 来配置 containerd 作为守护进程运行了,现在我们就可以启动 containerd 了,直接执行下面的命令即可:

bash
[root@master1 ~]#systemctl daemon-reload[root@master1 ~]#systemctl enable containerd --nowCreatedsymlinkfrom/etc/systemd/system/multi-user.target.wants/containerd.serviceto/etc/systemd/system/containerd.service.

4.验证

启动完成后就可以使用 containerd 的本地 CLI 工具 ctrcrictl了,比如查看版本:

[root@master1 ~]#containerd -vcontainerd github.com/containerd/containerd v1.6.10 770bd0108c32f3fb5c73ae1264f7e503fe7b2661[root@master1 ~]#ctr version #ctr--containerd类似于docker--dockerd。Client:Version:v1.6.10Revision:770bd0108c32f3fb5c73ae1264f7e503fe7b2661Go version:go1.18.8Server:Version:v1.6.10Revision:770bd0108c32f3fb5c73ae1264f7e503fe7b2661UUID:4b5d9dc9-7e39-47ce-be54-c9f4c0fa4865[root@master1 ~]#crictl version #crictl是操作k8s里的cri的。Version:0.1.0RuntimeName:containerdRuntimeVersion:v1.6.10RuntimeApiVersion:v1

至此,containerd安装完成。

关于我

我的博客主旨:

  • 排版美观,语言精炼;
  • 文档即手册,步骤明细,拒绝埋坑,提供源码;
  • 本人实战文档都是亲测成功的,各位小伙伴在实际操作过程中如有什么疑问,可随时联系本人帮您解决问题,让我们一起进步!

🍀 微信二维码 x2675263825 (舍得), qq:2675263825。

image-20230107215114763

🍀 微信公众号 《云原生架构师实战》

image-20230107215126971

🍀 个人博客站点

http:

版权:此文章版权归 One 所有,如有转载,请注明出处!

链接:可点击右上角分享此页面复制文章链接

上次更新时间:

最近更新