Cloud Native(云原生) 🔥
部署 k8s 集群 (1.28.2)
4. 安装 Containerd

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