为什么用containerd
containerd是一个基于Go语言编写的开源容器运行时(container runtime),它是docker项目的一部分,后来被独立出来成为一个开源项目,与Docker相比containerd拥有更细粒度的控制,更高的可扩性和更强的安全性,使得它在生产环境中使用的越来越广泛。
containerd提供了接口让上层容器编排系统(如kubernetes)可以与底层容器引擎进行通信,通过这个接口,上层容器编排系统可以管理和配置容器,监控和调整容器的资源使用情况,对容器进行快速的启动和停止重启等操作。
部署containerd
根据kubernetes官网推荐的部署方式,进入github源代码仓库,根据源代码仓库中的说明,给出了两种部署方式,分别是使用二进制文件的方式来部署containerd或者使用apt-get或者dnf也就是使用rpm包的yum源进行部署。
查看配置文件:
vim /etc/containerd/config.toml
这是默认配置:
version = 2
root = "/var/lib/containerd"
state = "/run/containerd"
oom_score = 0
[grpc]
max_recv_message_size = 16777216
max_send_message_size = 16777216
[debug]
level = "info"
[metrics]
address = ""
grpc_histogram = false
[plugins]
[plugins."io.containerd.grpc.v1.cri"]
sandbox_image = "k8s.gcr.io/pause:3.6"
max_container_log_line_size = -1
[plugins."io.containerd.grpc.v1.cri".containerd]
default_runtime_name = "runc"
snapshotter = "overlayfs"
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes]
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc]
runtime_type = "io.containerd.runc.v2"
runtime_engine = ""
runtime_root = ""
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
systemdCgroup = true
[plugins."io.containerd.grpc.v1.cri".registry]
[plugins."io.containerd.grpc.v1.cri".registry.mirrors]
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]
endpoint = ["https://registry-1.docker.io"]
在拉取镜像时报错:
crictl pull 192.168.210.114:5000/nvidia/k8s-device-plugin:1.11
E0227 11:09:55.046795 1104354 remote_image.go:238] "PullImage from image service failed" err="rpc error: code = Unknown desc = failed to pull and unpack image \"192.168.210.114:5000/nvidia/k8s-device-plugin:1.11\": failed to resolve reference \"192.168.210.114:5000/nvidia/k8s-device-plugin:1.11\": failed to do request: Head \"https://192.168.210.114:5000/v2/nvidia/k8s-device-plugin/manifests/1.11\": http: server gave HTTP response to HTTPS client" image="192.168.210.114:5000/nvidia/k8s-device-plugin:1.11"
FATA[0000] pulling image: rpc error: code = Unknown desc = failed to pull and unpack image "192.168.210.114:5000/nvidia/k8s-device-plugin:1.11": failed to resolve reference "192.168.210.114:5000/nvidia/k8s-device-plugin:1.11": failed to do request: Head "https://192.168.210.114:5000/v2/nvidia/k8s-device-plugin/manifests/1.11": http: server gave HTTP response to HTTPS client
但docker pull 192.168.210.114:5000/nvidia/k8s-device-plugin:1.11 正常
问题在于ctr配置在文件/etc/containerd/config.toml中,需要将配置备份后改成以下配置:
version = 2
root = "/var/lib/containerd"
state = "/run/containerd"
oom_score = 0
[grpc]
max_recv_message_size = 16777216
max_send_message_size = 16777216
[debug]
level = "info"
[metrics]
address = ""
grpc_histogram = false
[plugins]
[plugins."io.containerd.grpc.v1.cri"]
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."192.168.210.114:5000"]
endpoint = ["http://192.168.210.114:5000"]
[plugins."io.containerd.grpc.v1.cri".registry.configs."192.168.210.114:5000".tls]
insecure_skip_verify = false
[plugins."io.containerd.grpc.v1.cri".containerd]
default_runtime_name = "nvidia"
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes]
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.nvidia]
privileged_without_host_devices = false
runtime_engine = ""
runtime_root = ""
runtime_type = "io.containerd.runc.v2"
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.nvidia.options]
BinaryName = "/usr/bin/nvidia-container-runtime"
再重启
systemctl restart containerd
再次拉取镜像:
crictl pull 192.168.210.114:5000/nvidia/k8s-device-plugin:1.11
Image is up to date for sha256:01db6f81e66883f945d46d5b5f19807c89d8e01d79b0855cfd26e07d7aea5a93
2662

被折叠的 条评论
为什么被折叠?



