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

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

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

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

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

先决条件: 已有一个 Rancher 可访问的私有镜像仓库

集群中仅有 Linux 节点

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

  1. 查找您用的 Rancher 版本所需要的资源
  2. 搜集 cert-manager 镜像
  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,请看我们的升级文档

    1. helm repo add jetstack https://charts.jetstack.io
    2. helm repo update
    3. helm fetch jetstack/cert-manager --version v1.5.1
    4. helm template ./cert-manager-<version>.tgz | grep -oP '(?<=image: ").*(?=")' >> ./rancher-images.txt

    Copy

  2. 对镜像列表进行排序和唯一化,去除重复的镜像源:

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

    Copy

3、将镜像保存到您的工作站中

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

    1. chmod +x rancher-save-images.sh

    Copy

  2. 执行脚本rancher-save-images.sh并以--image-list ./rancher-images.txt 作为参数,创建所有需要镜像的压缩包:

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

    Copy

    提示

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

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

    Copy

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

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

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

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

  1. 登录私有镜像库:

    1. docker login <REGISTRY.YOURDOMAIN.COM:PORT>

    Copy

  2. rancher-load-images.sh 添加可执行权限:

    1. chmod +x rancher-load-images.sh

    Copy

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

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

    Copy

集群中同时含有 Linux 节点 和 Windows 节点

v2.3.0 及以后版本可用

对于用来创建包含 Linux 节点和 Windows 节点的集群的 Rancher Server,因为一个集群会包含 Linux 和 Windows 的混合节点,所以会有不同的步骤来为您的私有镜像库同步 Windows 镜像和 Linux 镜像。

同步 Windows 镜像

从 Windows 工作站中收集和推送 Windows 镜像。

    1. 查找您用的 rancher 版本所需要的资源
    1. 将镜像保存到您的 Windows 服务工作站中
    1. 准备 Docker 守护进程
    1. 推送镜像到私有镜像库

先决条件

这些步骤要求您使用 Windows Server 1809 工作站,该工作站能访问网络、您的私有镜像库以及至少拥有 50 GB 的磁盘空间。

工作站必须安装 Docker 18.02+版本,因为这个版本的 Docker 支持 manifests,这个特性是设置 Windows 集群所必须的。

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

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

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

  2. 从发行版本的 “Assets” 部分,下载下列文件:

    Release 文件描述
    rancher-windows-images.txt这个文件包含设置 Windows 集群所需的 Windows 镜像列表。
    rancher-save-images.ps1这个脚本会从 DockerHub 上拉取所有在文件rancher-windows-images.txt中列举的镜像,并将它们保存到rancher-windows-images.tar.gz文件中。
    rancher-load-images.ps1这个脚本会从压缩包rancher-windows-images.tar.gz中加载镜像,并把它们推送到您的私有镜像库 中。

2、将镜像保存到您的 Windows 服务工作站中

  1. powershell中,进入上一步有下载文件的目录里。

  2. 运行脚本 rancher-save-images.ps1, 去创建所有必需的压缩包:

    1. ./rancher-save-images.ps1

    Copy

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

3、准备 Docker 守护进程

将您的私有镜像库地址追加到 Docker 守护进程配置文件(C:\ProgramData\Docker\config\daemon.json)的allow-nondistributable-artifacts配置字段中。由于 Windows 镜像的基础镜像是由mcr.microsoft.com Registry 维护的,这一步是必须的,因为 Docker Hub 中缺少 Microsoft 镜像仓库层,需要将其拉入私有镜像库。

  1. {
  2. ...
  3. "allow-nondistributable-artifacts": [
  4. ...
  5. "<REGISTRY.YOURDOMAIN.COM:PORT>"
  6. ]
  7. ...
  8. }

Copy

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

将通过脚本,将文件rancher-windows-images.tar.gz中的镜像移入到您私有镜像库中。

在工作站中,文件rancher-windows-images.txtrancher-windows-images.tar.gz要放在与运行脚本rancher-load-images.ps1的同一目录下。

  1. 如果需要,请使用 powershell,登录到您的私有镜像库:

    1. docker login <REGISTRY.YOURDOMAIN.COM:PORT>

    Copy

  2. powershell中,使用 rancher-load-images.ps1脚本,提取文件rancher-images.tar.gz中的镜像,重新打 tag 并将它们推送到您的私有镜像库中:

    1. ./rancher-load-images.ps1 --registry <REGISTRY.YOURDOMAIN.COM:PORT>

    Copy

同步 Linux 镜像

Linux 镜像需要从 Linux 主机上收集和推送,但是必须先将 Windows 镜像推送到您的私有镜像库,然后再推送 Linux 镜像。这些步骤不同于只支持 Linux 集群设置步骤,因为被推送的 Linux 镜像实际是支持 Windows 和 Linux 镜像的 manifest 镜像。

  • 查找您用的 rancher 版本所需要的资源
  • 收集所有需要的镜像
  • 将镜像保存到您的 Linux 服务工作站中
  • 推送镜像到私有镜像库

先决条件

在把 Linux 镜像推送到私有镜像库中之前,必须先把 Windows 镜像推送到私有镜像库中。如果您已经把 Linux 镜像推送到私有镜像库中,则需要再次按照这些说明重新推送,因为它们将发布支持 Windows 和 Linux 镜像的 manifest 镜像。

这些步骤要求您使用一个 Linux 工作站,它能访问互联网,而且可以访问您的私有镜像库。并且至少有 20GB 的磁盘空间。

因为需要支持 manifest 特性,工作站必须装有 Docker 18.02+ 版本,这是配置 Windows 集群的先决条件。

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

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

  2. 从发行版 Assets 部分下载以下文件:

    Release 文件描述
    rancher-images.txt此文件包含安装 Rancher、设置集群和用户 Rancher 工具所需的镜像列表。
    rancher-windows-images.txt此文件包含需要设置 Windows 集群所需的镜像列表。
    rancher-save-images.sh这个脚本会从 Docker Hub 中拉取所有在文件rancher-images.txt中列举的镜像并将它们保存到rancher-images.tar.gz文件中。
    rancher-load-images.sh这个脚本会从压缩包rancher-images.tar.gz中加载镜像,并把它们推送到您的私有镜像库 中。

2、收集所有必需的镜像

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

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

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

    1. helm repo add jetstack https://charts.jetstack.io
    2. helm repo update
    3. helm fetch jetstack/cert-manager --version v1.5.1
    4. helm template ./cert-manager-<version>.tgz | grep -oP '(?<=image: ").*(?=")' >> ./rancher-images.txt

    Copy

  2. 对镜像列表进行排序和唯一化,以去除重复的镜像源:

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

    Copy

3、将镜像保存到您的工作站中

  1. 给脚本添加 rancher-save-images.sh 可执行权限:

    1. chmod +x rancher-save-images.sh

    Copy

  2. 以镜像列表文件rancher-images.txt为参数执行脚本 rancher-save-images.sh来创建所有必须镜像的压缩包:

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

    Copy

    提示

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

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

    Copy

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

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

将用脚本rancher-load-images.sh将文件rancher-images.tar.gz中的镜像移入到您私有镜像库中。在工作站中,镜像列表文件 rancher-images.txt / rancher-windows-images.txt要放在与运行脚本rancher-load-images.sh同一目录下。

  1. 请先登录到自己的私有镜像库中:

    1. docker login <REGISTRY.YOURDOMAIN.COM:PORT>

    Copy

  2. 给文件 rancher-load-images.sh 添加可执行权限:

    1. chmod +x rancher-load-images.sh

    Copy

  3. 使用 rancher-load-images.sh脚本,提取文件rancher-images.tar.gz中的镜像,重新打 tag 并将它们推送到您的私有镜像库 中:

    1. ./rancher-load-images.sh --image-list ./rancher-images.txt \
    2. --windows-image-list ./rancher-windows-images.txt \
    3. --registry <REGISTRY.YOURDOMAIN.COM:PORT>

    Copy

后续操作

安装 Rancher 高可用的下一步

安装 Rancher 单节点的下一步