crictl镜像拉取配置并使pod支持gpu

为什么用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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智能体格

你的鼓将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值