4. 安装 Containerd (v1.7.2)
Master, Worker 1, Worker 2 节点均要安装
下载最新版本的 Containerd, 截止到目前最新版本是 1.7.2
下载Containerd的二进制包, 需要注意cri-containerd-(cni-)-VERSION-OS-ARCH.tar.gz发行包自containerd 1.6版本起已经被弃用,
在某些 Linux 发行版上无法正常工作,并将在containerd 2.0版本中移除,这里下载containerd-x.tar.gz的发行包,后边在单独下载安装runc和CNI plugins:
wget https://github.com/containerd/containerd/releases/download/v1.7.2/containerd-1.7.2-linux-amd64.tar.gz
> wget
将其解压缩到/usr/local
下:
tar Cxzvf /usr/local containerd-1.7.2-linux-amd64.tar.gz
bin/
bin/containerd-shim-runc-v1
bin/containerd-shim-runc-v2
bin/containerd-stress
bin/containerd
bin/containerd-shim
bin/ctr
接下来从runc的github上单独下载安装runc,该二进制文件是静态构建的,并且应该适用于任何Linux发行版。
wget https://github.com/opencontainers/runc/releases/download/v1.1.7/runc.amd64
install -m 755 runc.amd64 /usr/local/sbin/runc
接下来生成containerd的配置文件:
mkdir -p /etc/containerd
containerd config default > /etc/containerd/config.toml
根据文档Container runtimes中的内容,对于使用systemd作为init system的Linux的发行版, 使用systemd作为容器的cgroup driver可以确保服务器节点在资源紧张的情况更加稳定,因此这里配置各个节点上containerd的cgroup driver为systemd。
修改前面生成的配置文件/etc/containerd/config.toml
:
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc]
...
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
SystemdCgroup = true
再修改/etc/containerd/config.toml
中的
[plugins."io.containerd.grpc.v1.cri"]
...
# sandbox_image = "registry.k8s.io/pause:3.8"
sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.9"
如果你的containerd版本和操作系统和本文的一致, 也可以直接下载此文件, https://cdn.jansora.com/files/uPic/2023/09/21/config.toml (opens in a new tab)
为了通过systemd启动containerd,请还需要从
https://raw.githubusercontent.com/containerd/containerd/main/containerd.service (opens in a new tab)
下载containerd.service
单元文件,并将其放置在 /etc/systemd/system/containerd.service
中。 配置containerd开机启动,并启动containerd,执行以下命令:
systemctl daemon-reload
systemctl enable containerd --now
下载安装crictl工具:
wget https://github.com/kubernetes-sigs/cri-tools/releases/download/v1.27.0/crictl-v1.27.0-linux-amd64.tar.gz
tar -zxvf crictl-v1.27.0-linux-amd64.tar.gz
install -m 755 crictl /usr/local/bin/crictl
使用crictl测试一下,确保可以打印出版本信息并且没有错误信息输出:
crictl --runtime-endpoint=unix:///run/containerd/containerd.sock version
Version: 0.1.0
RuntimeName: containerd
RuntimeVersion: v1.7.2
RuntimeApiVersion: v1