跳到主要内容
版本:v2.7

2. 收集镜像并发布到私有仓库

本文介绍如何配置私有镜像仓库,以便在安装 Rancher 时,Rancher 可以从此私有镜像仓库中拉取所需的镜像。

默认情况下,所有用于配置 Kubernetes 集群或启动 Rancher 中的工具(如监控,流水线,告警等)的镜像都是从 Docker Hub 中拉取的。在 Rancher 的离线安装中,你需要一个私有仓库,该仓库位于你的 Rancher Server 中某个可访问的位置。然后,你可加载该存有所有镜像的镜像仓库。

使用 Docker 安装 Rancher,和把 Rancher 安装到 Kubernetes 集群,其对应的推送镜像到私有镜像仓库步骤是一样的。

你使用 Rancher 配置的下游集群是否有运行 Windows 的节点,决定了本文涉及的步骤。我们提供的推送镜像到私有镜像仓库步骤,是基于假设 Rancher 仅配置运行 Linux 节点的下游 Kubernetes 集群的。但是,如果你计划在下游 Kubernetes 集群中使用 Windows 节点,我们有单独的文档来介绍如何为需要的镜像提供支持。

先决条件:

你必须有一个可用的私有镜像仓库

如果镜像仓库有证书,请参见 K3s 文档中心了解添加私有镜像仓库的详情。证书和镜像仓库配置文件均需要挂载到 Rancher 容器中。

如果 Rancher Server 用于配置仅有 Linux 节点的集群,请按以下步骤将你的镜像推送到私有镜像仓库。

  1. 找到你的 Rancher 版本所需的资源
  2. 收集 cert-manager 镜像(除非你使用自己的证书,或在负载均衡器上终止 TLS)
  3. 把镜像保存到你的工作站
  4. 推送镜像到私有镜像仓库

先决条件

这些步骤要求你使用一个 Linux 工作站,该工作站需要可访问互联网和你的私有镜像仓库,且至少有 20GB 的可用磁盘空间。

如果你的主机架构是 ARM64,镜像仓库必须支持 Manifest。这是因为从 2020 年 4 月开始, Amazon Elastic Container Registry 已经不再支持 Manifest。

1. 找到你的 Rancher 版本所需的资源

  1. 访问 Rancher 的发布说明页面,找到你需要安装的 Rancher v2.x.x 版本,然后点击 Assets。注意不要使用带有 rcPre-release 标记的版本,因为这些版本在生产环境中不够稳定。

  2. 从你所需版本的 Assets 处下载以下文件,这些文件是在离线环境中安装 Rancher 所必须的:

Release 文件描述
rancher-images.txt此文件包含安装 Rancher、配置集群和用户 Rancher 工具所需的镜像。
rancher-save-images.sh该脚本从 Docker Hub 中拉取在文件 rancher-images.txt 中记录的所有镜像,并把这些镜像保存为 rancher-images.tar.gz
rancher-load-images.sh该脚本从 rancher-images.tar.gz 文件中加载镜像,并把镜像推送到你的私有镜像仓库。

2. 收集 cert-manager 镜像

备注

如果你使用自己的证书,或要在外部负载均衡器上终止 TLS,请跳过此步骤。

在 Kubernetes 安装中,如果你使用的是 Rancher 默认的自签名 TLS 证书,则必须将 cert-manager 镜像添加到 rancher-images.txt 文件中。

  1. 获取最新的 cert-manager Helm Chart,并解析模板以获取镜像的详情信息:

    备注

    由于 cert-manager 的最新改动,你需要升级 cert-manager 版本。如果你需要升级 Rancher 并使用低于 0.12.0 的 cert-manager 版本,请参见升级文档

    helm repo add jetstack https://charts.jetstack.io
    helm repo update
    helm fetch jetstack/cert-manager
    helm template ./cert-manager-<version>.tgz | awk '$1 ~ /image:/ {print $2}' | sed s/\"//g >> ./rancher-images.txt
  2. 对镜像列表进行排序和唯一化,以去除重复的镜像源:

    sort -u rancher-images.txt -o rancher-images.txt

3. 将镜像保存到你的工作站中

  1. rancher-save-images.sh 文件添加可执行权限:

    chmod +x rancher-save-images.sh
  2. 使用 rancher-images.txt 镜像列表执行 rancher-save-images.sh 脚本,以创建包含所有所需镜像的压缩包:

    ./rancher-save-images.sh --image-list ./rancher-images.txt

    结果:Docker 开始拉取用于离线安装的镜像。请耐心等待。这个过程需要几分钟。完成时,你的当前目录会输出名为 rancher-images.tar.gz 的压缩包。请确认输出文件是否存在。

4. 推送镜像到私有镜像仓库

下一步,你将使用脚本将 rancher-images.tar.gz 中的镜像移动到你的私有镜像仓库,以方便加载镜像。

使用脚本将 rancher-images.tar.gz 中的镜像移动到你的私有镜像仓库,以方便加载镜像。

rancher-images.txt 需要位于工作站中运行 rancher-load-images.sh 脚本的同一目录中。rancher-images.tar.gz 也需要位于同一目录中。

  1. 登录到你的私有镜像仓库:
docker login <REGISTRY.YOURDOMAIN.COM:PORT>
  1. rancher-load-images.sh 添加可执行权限:
chmod +x rancher-load-images.sh
  1. 使用 rancher-load-images.sh 脚本来提取,标记和推送 rancher-images.txtrancher-images.tar.gz 到你的私有镜像仓库:
./rancher-load-images.sh --image-list ./rancher-images.txt --registry <REGISTRY.YOURDOMAIN.COM:PORT>

Kubernetes 安装的后续步骤 - 启动 Kubernetes 集群

Docker 安装的后续步骤 - 安装 Rancher