简介
本文介绍解决K8Scontainerd拉镜像的报错:containerd http: server gave HTTP response to HTTPS client的方法。
问题描述
在kubernetes中使用containerd容器服务获取私有仓库的镜像的时候报错:
`https://xxxxxxx/v2/xxxx/xxxx/manifests/sha256:xxxx: http: server gave HTTP response to HTTPS client`
原因分析
原因是:Harbor私有仓库用的是http,但是容器获取镜像是通过https的。
解决方案
修改配置,支持访问Harbor私库的http地址。本处我的Harbor私库地址是:http://192.168.5.193:/15001
第1步:修改配置
修改/etc/containerd/config.toml文件,添加如下内容:
[plugins."io.containerd.grpc.v1.cri".registry.configs]
[plugins."io.containerd.grpc.v1.cri".registry.configs."192.168.5.193:15001".tls]
insecure_skip_verify = true
[plugins."io.containerd.grpc.v1.cri".registry.mirrors]
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."192.168.5.193:15001"]
endpoint = ["http://192.168.5.193:15001"]
添加的位置是:
[plugins]
[plugins.”io.containerd.grpc.v1.cri”]
[plugins.”io.containerd.grpc.v1.cri”.registry]
如下图所示:
备注
https方式如果没有证书,也可以用这个方法去修改,一模一样。
第2步:重启containerd
systemctl restart containerd
第3步:测试
再次运行原来创建pod的命令即可,也可以单独测试拉取镜像:
crictl pull --creds admin:Harbor12345 192.168.5.193:15001/custom_image/nginx:latest
请先
!