Skip to main content

2. 同步镜像到私有镜像仓库

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

默认情况下,Rancher 中所有用于创建 Kubernetes 集群或启动 Rancher 中任何工具(如监控和日志)的镜像都来自 Docker Hub。在 Rancher 的离线安装中,你将需要一个私有镜像仓库,该镜像仓库位于你的 Rancher Server 可访问的某个位置。然后,你将在镜像仓库中加载所有的镜像。

对于高可用安装和单节点安装,同步镜像到私有镜像仓库的过程是相同的。

但是同步用来创建 Linux 集群和用来创建 Windows 集群的镜像过程是不同的。所以这取决于你是否要创建 Windows 集群。默认情况下,我们假设只配置 Linux 集群,我们提供了如何推送 Linux 需要的镜像到私有镜像库的步骤。但是如果你计划创建 Windows 集群,我们有单独的文档来介绍如何同步 Linux 和 Windows 集群所需的镜像。

先决条件:

已有一个 Rancher 可访问的私有镜像仓库

如果镜像仓库有证书,请按照添加私有镜像仓库的 K3s 文档进行操作。证书和镜像仓库配置文件需要挂载到 Rancher 容器中。可以参考公众号文章单节点 Rancher 离线安装的关键一步

对于创建仅有 Linux 节点的集群的 Rancher Server,请按以下步骤推送镜像到私有镜像库。

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

先决条件#

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

如果要使用 ARM64 主机,则镜像仓库必须支持 Docker Manifest。截至 2020 年 4 月,Amazon Elastic Container Registry 不支持 Docker Manifest 功能。

1、查找你用的 Rancher 版本所需要的资源#

  1. 浏览我们的版本发布页面,查找你想安装的 Rancher v2.x.x 版本。不要下载标记为 rcPre-release 的版本,因为它们在生产环境下是不稳定的。

  2. 从发行版 Assets 部分下载以下文件,这些文件是离线环境下安装 Rancher 所必需的:

    Release 文件描述
    rancher-images.txt此文件包含安装 Rancher、创建集群和运行 Rancher 工具所需的镜像列表。
    rancher-save-images.sh这个脚本会从 DockerHub 中拉取在文件rancher-images.txt中描述的所有镜像,并将它们保存为文件rancher-images.tar.gz
    rancher-load-images.sh这个脚本会载入文件rancher-images.tar.gz中的镜像,并将它们推送到你自己的私有镜像库。

2、收集 cert-manager 镜像#

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

在安装高可用过程中,如果选择使用 Rancher 默认的自签名 TLS 证书,则还必须将 cert-manager 镜像添加到 rancher-images.txt 文件中。如果使用自己的证书,则跳过此步骤。

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

    注意: 由于cert-manager最近的改动,你需要升级cert-manager版本。如果你要升级 Rancher 并且使用cert-manager的版本低于 v0.12.0,请看我们的升级文档

    helm repo add jetstack https://charts.jetstack.io
    helm repo update
    helm fetch jetstack/cert-manager --version v1.5.1
    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-save-images.sh并以--image-list ./rancher-images.txt 作为参数,创建所有需要镜像的压缩包:

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

    国内用户,可以从 http://mirror.rancher.cn --> rancher --> [rancher 版本] 下载 rancher-save-images.sh,该脚本支持通过参数 --from-aliyun true 来指定从阿里云镜像仓库拉去 rancher 镜像(从 rancher/rancher release 下载的 rancher-save-images.sh 不支持该参数),例如:

    ./rancher-save-images.sh --image-list ./rancher-images.txt --from-aliyun true
    Image pull success: registry.cn-hangzhou.aliyuncs.com/rancher/busybox
    Image pull success: registry.cn-hangzhou.aliyuncs.com/rancher/backup-restore-operator:v1.0.4-rc4
    ...

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

4、推送镜像到私有镜像库#

下一步,你将使用脚本将文件 rancher-images.tar.gz 中的镜像上传到你自己的私有镜像库。

文件 rancher-images.txtrancher-images.tar.gz 应该位于工作站中运行 rancher-load-images.sh 脚本的同一目录下。

  1. 登录私有镜像库:

    docker login <REGISTRY.YOURDOMAIN.COM:PORT>
  2. rancher-load-images.sh 添加可执行权限:

    chmod +x rancher-load-images.sh
  3. 使用脚本 rancher-load-images.sh提取rancher-images.tar.gz文件中的镜像,根据文件rancher-images.txt中的镜像列表对提取的镜像文件重新打 tag 并推送到你的私有镜像库:

    ./rancher-load-images.sh --image-list ./rancher-images.txt --registry <REGISTRY.YOURDOMAIN.COM:PORT>`

后续操作#

安装 Rancher 高可用的下一步

安装 Rancher 单节点的下一步

Last updated on by kingsd041