containerd安装.md

新版本的k8s使用containerd作为容器管理,不再使用docker。containerd的安装并不复杂,复杂的是如何配置镜像加速和本地镜像库。

安装containerd的过程不复杂:

1
2
3
4
5
6
7
8
9
# 安装containerd
sudo apt-get update
sudo apt-get install -y containerd

# 配置containerd
sudo mkdir -p /etc/containerd
containerd config default | sudo tee /etc/containerd/config.toml
sudo systemctl restart containerd
sudo systemctl enable containerd

接下来需要配置镜像加速,新版本的containerd将配置保存在config_path中,所以需要编辑/etc/containerd/config.toml文件,设置路径:

1
2
[plugins."io.containerd.grpc.v1.cri".registry]
config_path = "/etc/containerd/certs.d"

还需要修改 sandbox_image = “registry.aliyuncs.com/google_containers/pause:3.10”

[plugins.”io.containerd.grpc.v1.cri”.containerd.runtimes.runc.options]
SystemdCgroup = true

修改完成后,创建保存配置文件的目录:

1
sudo mkdir /etc/containerd/certs.d

然后为每个需要配置的镜像网站创建目录:

1
sudo mkdir /etc/containerd/certs.d/docker.io

在这个目录中创建hosts.toml

1
sudo vim /etc/containerd/certs.d/docker.io/hosts.toml

内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
server = "https://docker.io"

[host."https://docker.1ms.run"]
capabilities = ["pull", "resolve"]
skip_verify = true

[host."https://docker.m.daocloud.io"]
capabilities = ["pull", "resolve"]
skip_verify = true

[host."https://dockerhub.anzu.vip"]
capabilities = ["pull", "resolve"]
skip_verify = true

如果已经设置了私有镜像库,可以在这里设置http支持,假如私有镜像库地址是192.168.31.57:5000,首先创建目录,然后编辑文件hosts.toml:
sudo mkdir /etc/containerd/certs.d/192.168.31.57:5000
sudo vim /etc/containerd/certs.d/192.168.31.57:5000/hosts.toml

1
2
3
4
5
server = "http://192.168.31.57:5000"

[host."http://192.168.31.57:5000"]
capabilities = ["pull", "resolve", "push"]
skip_verify = true

设置完成后,需要重新启动containerd:
sudo systemctl restart containerd

可以检查containerd的运行状态:

1
2
3
4
5
# 检查 containerd 服务状态
systemctl status containerd

# 检查 containerd 日志,寻找 CRI 相关的错误
journalctl -u containerd -f

可以使用 sudo containerd config dump 检查当前的配置,如果配置文件中有错误,没有生效,使用这种方式可以检查。