containerd基本下的k8s环境拉取镜像失败

avatar 2023年9月21日18:12:16 评论 357 次浏览

在给予containerd下的k8s环境,在拉取私有镜像时,总是会请求https,因为是私有网络,所以也没有使用https,不管harbor的443端口开还是不开,都是请求超时的异常,这个在以前是没有的,就是在最近要部署新的环境,我以为是我的k8s的密钥设置的不对呢,但是在宿主机上拉取镜像也是一样的问题,初步怀疑是containerd的问题。在网上看了一下,原来是contaninerd的配置问题。

 vim /etc/containerd/config.toml
 .....................................
     [plugins."io.containerd.grpc.v1.cri".registry]
       config_path = ""
       [plugins."io.containerd.grpc.v1.cri".registry.auths]
       [plugins."io.containerd.grpc.v1.cri".registry.configs]
       [plugins."io.containerd.grpc.v1.cri".registry.headers]
       [plugins."io.containerd.grpc.v1.cri".registry.mirrors]
         [plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]
           endpoint = ["https://bqr1dr1n.mirror.aliyuncs.com"]
         [plugins."io.containerd.grpc.v1.cri".registry.mirrors."k8s.gcr.io"]
         endpoint = ["https://registry.aliyuncs.com/k8sxio"]
         .................................

这个是自动生成的containerd config default > /etc/containerd/config.toml生成的,之所以拉取镜像使用的https,是因为containerd的配置指定的。如果是拉取的私有镜像经过认证,需要登录一下,如果是公开镜像直接拉取即可。之所以没有拉取成功是因为在containerd配置的没有私有镜像源。

 vim /etc/containerd/config.toml
 .....................................
     [plugins."io.containerd.grpc.v1.cri".registry]
       config_path = ""
 
       [plugins."io.containerd.grpc.v1.cri".registry.auths]
 
       [plugins."io.containerd.grpc.v1.cri".registry.configs]
         [plugins."io.containerd.grpc.v1.cri".registry.configs."10.32.128.214".tls]
           insecure_skip_verify = true
         [plugins."io.containerd.grpc.v1.cri".registry.configs."10.32.128.214".auth]
           username = "admin"
           password = "Harbor12345"
       [plugins."io.containerd.grpc.v1.cri".registry.headers]
 
       [plugins."io.containerd.grpc.v1.cri".registry.mirrors]
         [plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]
           endpoint = ["https://bqr1dr1n.mirror.aliyuncs.com"]
         [plugins."io.containerd.grpc.v1.cri".registry.mirrors."k8s.gcr.io"]
         endpoint = ["https://registry.aliyuncs.com/k8sxio"]
         [plugins."io.containerd.grpc.v1.cri".registry.mirrors."10.32.128.214"]
           endpoint = ["http://10.32.128.214"]

使用的ip可以换成自己的域名,另外正常不需要配置harbor的用户和密码的,因为拉取镜像的认证是通过k8s的secret镜像认证的。这里只所以添加是因为涉及到比如jenkins这样的单个服务,也需要单独拉取镜像的。

avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: