主机:centos 7.9
1.下载
官网GitHub上下载地址:https://github.com/containerd/containerd/releases
2.在官网上看好版本写入v${VERSION},以containerd.io 1.5.13为例子
yum remove containerd.io
# wget https://github.com/containerd/containerd/releases/download/v${VERSION}/cri-containerd-cni-${VERSION}-linux-amd64.tar.gz
# tar --no-overwrite-dir -C / -xzf cri-containerd-cni-${VERSION}-linux-amd64.tar.gz
wget https://github.com/containerd/containerd/releases/download/v1.5.13/cri-containerd-cni-1.5.13-linux-amd64.tar.gz
# 直接将压缩包解压到系统的各个目录中:--no-overwrite-dir 保存已经存在的目录的原信息 --overwrite-dir 覆盖已经存在的目录
tar --no-overwrite-dir -C / -xzf cri-containerd-cni-1.5.13-linux-amd64.tar.gz
3.生成配置文件
# containerd 的默认配置文件为 /etc/containerd/config.toml,我们可以通过如下所示的命令生成一个默认的配置:
mkdir /etc/containerd
containerd config default > /etc/containerd/config.toml
#如果是阿里云的配置的k8s这个文件丢失了,可以从其他节点拷贝一个过来
# containerd 压缩包中包含一个 etc/systemd/system/containerd.service 的文件,这样我们就可以通过 systemd 来配置 containerd 作为守护进程运行了,内容如下所示:
cat /etc/systemd/system/containerd.service
[Unit]
Description=containerd container runtime
Documentation=https://containerd.io
After=network.target local-fs.target
[Service]
ExecStartPre=-/sbin/modprobe overlay
ExecStart=/usr/local/bin/containerd
Type=notify
Delegate=yes
KillMode=process
Restart=always
RestartSec=5
# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNPROC=infinity
LimitCORE=infinity
LimitNOFILE=infinity
# Comment TasksMax if your systemd version does not supports it.
# Only systemd 226 and above support this version.
TasksMax=infinity
OOMScoreAdjust=-999
[Install]
WantedBy=multi-user.target
这里有两个重要的参数:
Delegate: 这个选项允许 containerd 以及运行时自己管理自己创建容器的 cgroups。如果不设置这个选项,systemd 就会将进程移到自己的 cgroups 中,从而导致 containerd 无法正确获取容器的资源使用情况。
KillMode: 这个选项用来处理 containerd 进程被杀死的方式。默认情况下,systemd 会在进程的 cgroup 中查找并杀死 containerd 的所有子进程。KillMode 字段可以设置的值如下。
control-group(默认值):当前控制组里面的所有子进程,都会被杀掉
process:只杀主进程
mixed:主进程将收到 SIGTERM 信号,子进程收到 SIGKILL 信号
none:没有进程会被杀掉,只是执行服务的 stop 命令
要将 KillMode 的值设置为 process,这样可以确保升级或重启 containerd 时不杀死现有的容器。(不用设置,默认就是process)
4.启动服务
# 将 /usr/local/bin 和 /usr/local/sbin 追加到 ~/.bashrc 文件的 PATH 环境变量中,然后执行下面的命令使其立即生效:(这一步在该系统中不用操作,默认这俩路径已经在PATH 环境变量中了)
export PATH=$PATH:/usr/local/bin:/usr/local/sbin
source ~/.bashrc
或者将所有文件全部移到/usr/bin下
mv /usr/local/bin/* /usr/bin/
systemctl daemon-reload
systemctl start containerd
systemctl status containerd
systemctl enable containerd
查看版本
ctr version
containerd --version