Rancher 2.6.6 如何拉取自建镜像仓库 http 协议

Rancher Server 设置

  • Rancher 版本:2.6.6
  • 安装选项 (Docker install/Helm Chart): Docker install
    • 如果是 Helm Chart 安装,需要提供 Local 集群的类型(RKE1, RKE2, k3s, EKS, 等)和版本:
  • 在线或离线部署:在线

下游集群信息

  • Kubernetes 版本: 提供商: RKE2 Kubernetes 版本: v1.23.7
  • Cluster Type (Local/Downstream):
    • 如果 Downstream,是什么类型的集群?(自定义/导入或为托管 等): 新建 RKE2 集群

用户信息

  • 登录用户的角色是什么? (管理员/集群所有者/集群成员/项目所有者/项目成员/自定义):admin
    • 如果自定义,自定义权限集:

主机操作系统: CentOS 7

问题描述: 如何配置拉取自建的镜像仓库,自建的镜像仓库是 http 的harbor?具体步骤是如何。

重现步骤:

  1. Creating a Registry in Namespaces
  2. 没有进行 Creating a Registry in Projects(按照说明应该不需要实际也没有进行该步骤)
  3. Using the Private Registry with the Rancher UI
    结果:

预期结果:

截图:




其他上下文信息:

日志


你需要在 容器镜像 输入框输入完整的镜像名称,包括你的私有镜像仓库地址

E0728 13:28:36.436511   42428 pod_workers.go:951] "Error syncing pod, skipping" err="failed to \"StartContainer\" for \"container-0\" with ErrImagePull: \"rpc error: code = Unknown desc = failed to pull and unpack image \\\"172.25.52.91:7002/library/scottyc/webapp:latest\\\": failed to resolve reference \\\"172.25.52.91:7002/library/scottyc/webapp:latest\\\": failed to do request: Head \\\"https://172.25.52.91:7002/v2/library/scottyc/webapp/manifests/latest\\\": http: server gave HTTP response to HTTPS client\"" pod="alpha/fghjf-65dbc5558f-9crwf" podUID=a1d60f1f-87a0-462f-bf40-5b2f67b9c05c

这个就比较奇怪了,正常来说,访问 http 的镜像仓库,只要 docker pull 能拉下来就可以。

有两个地方你可以去人下:

  1. 你在第一个截图中设置了镜像仓库的地址,如果你的 http 镜像仓库不需要人户认证的话,是不需要加的
  2. 第三个图中 daemon.json 关于 insecure-registries 的配置也有点问题,应该是不需要指定 协议的,也就是 http,你可以参考:Test an insecure registry | Docker Documentation

把这两个地方修复下,看看情况

请问如何在上述环境下打开这个配置项 --plain-http=true

-plain-http=true 是 containerd 的配置,你用的是 docker,不知道你的需求是什么

Rancher Server 是 Docker 起来的没有错,但是现在通过 Rancher UI 创建的下游集群是 * Kubernetes 版本: 提供商: RKE2 Kubernetes 版本: v1.23.7 (请看上述环境描述里有写)那么该集群用的就是 containerd 由此希望配置该集群的该选项。借有配置该选项来拉取 http 镜像协议的私有仓库

参考:Containerd Registry Configuration - RKE2 - Rancher's Next Generation Kubernetes Distribution