2. 同步镜像到私有镜像仓库
本节介绍如何配置私有镜像仓库,以便在安装 Rancher 时,Rancher 可以从此私有镜像仓库中拉取所需的镜像。
默认情况下,Rancher 中所有用于创建 Kubernetes 集群或启动 Rancher 中任何工具(如监控和日志)的镜像都来自 Docker Hub。在 Rancher 的离线安装中,你将需要一个私有镜像仓库,该镜像仓库位于你的 Rancher Server 可访问的某个位置。然后,你将在镜像仓库中加载所有的镜像。
对于高可用安装和单节点安装,同步镜像到私有镜像仓库的过程是相同的。
但是同步用来创建 Linux 集群和用来创建 Windows 集群的镜像过程是不同的。所以这取决于你是否要创建 Windows 集群。默认情况下,我们假设只配置 Linux 集群,我们提供了如何推送 Linux 需要的镜像到私有镜像库的步骤。但是如果你计划创建 Windows 集群,我们有单独的文档来介绍如何同步 Linux 和 Windows 集群所需的镜像。
先决条件:
已有一个 Rancher 可访问的私有镜像仓库。
如果镜像仓库有证书,请按照添加私有镜像仓库的 K3s 文档进行操作。证书和镜像仓库配置文件需要挂载到 Rancher 容器中。可以参考公众号文章单节点 Rancher 离线安装的关键一步
- 仅限 Linux 集群
- Linux 和 Windows 集群
对于创建仅有 Linux 节点的集群的 Rancher Server,请按以下步骤推送镜像到私有镜像库。
- 查找你用的 Rancher 版本所需要的资源
- 收集 cert-manager 镜像 (除非你使用自己的证书或在负载均衡器上终止 TLS)
- 将镜像保存到你的工作站中
- 推送镜像到私有镜像库
#
先决条件这些步骤要求你使用一个 Linux 工作站,它可以访问互联网和你的私有镜像库。请确保至少有 20GB 的磁盘空间可用。
如果要使用 ARM64 主机,则镜像仓库必须支持 Docker Manifest。截至 2020 年 4 月,Amazon Elastic Container Registry 不支持 Docker Manifest 功能。
#
1、查找你用的 Rancher 版本所需要的资源浏览我们的版本发布页面,查找你想安装的 Rancher v2.x.x 版本。不要下载标记为
rc
或Pre-release
的版本,因为它们在生产环境下是不稳定的。从发行版 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
文件中。如果使用自己的证书,则跳过此步骤。
获取最新的
cert-manager
Helm chart,解析模板并获取镜像详细信息:注意: 由于
cert-manager
最近的改动,你需要升级cert-manager
版本。如果你要升级 Rancher 并且使用cert-manager
的版本低于 v0.12.0,请看我们的升级文档。对镜像列表进行排序和唯一化,去除重复的镜像源:
#
3、将镜像保存到你的工作站中为
rancher-save-images.sh
文件添加可执行权限:执行脚本
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 不支持该参数),例如:结果: Docker 会开始拉取用于离线安装所需的镜像。这个过程会花费几分钟时间。完成时,你的当前目录会输出名为
rancher-images.tar.gz
的压缩包。请确认输出文件是否存在。
#
4、推送镜像到私有镜像库下一步,你将使用脚本将文件 rancher-images.tar.gz
中的镜像上传到你自己的私有镜像库。
文件 rancher-images.txt
和 rancher-images.tar.gz
应该位于工作站中运行 rancher-load-images.sh
脚本的同一目录下。
登录私有镜像库:
为
rancher-load-images.sh
添加可执行权限:使用脚本
rancher-load-images.sh
提取rancher-images.tar.gz
文件中的镜像,根据文件rancher-images.txt
中的镜像列表对提取的镜像文件重新打 tag 并推送到你的私有镜像库:
对于用来创建包含 Linux 和 Windows 集群的 Rancher Server,因为一个集群会包含 Linux 和 Windows 的混合节点,所以会有不同的步骤来为你的私有镜像库同步 Windows 镜像和 Linux 镜像。
#
同步 Windows 镜像从 Windows 工作站中收集和推送 Windows 镜像。
#
先决条件这些步骤要求你使用 Windows Server 1809 工作站,该工作站能访问网络、你的私有镜像库以及至少拥有 50 GB 的磁盘空间。
工作站必须安装 Docker 18.02+ 版本,因为这个版本的 Docker 支持 manifests,这个特性是设置 Windows 集群所必须的。
你的镜像仓库必须支持 Docker Manifest。截至 2020 年 5 月,Amazon Elastic Container Registry 不支持 Docker Manifest 功能。
#
1、查找你用的 Rancher 版本所需要的资源浏览我们的版本发布页面并查找你想要安装的 Rancher v2.x.x 版本。不要下载标记为
rc
orPre-release
的版本,因为它们在生产环境下不稳定。从发行版本的
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 Server 工作站中在
powershell
中,进入上一步有下载文件的目录里。运行脚本
rancher-save-images.ps1
, 去创建所有必需的压缩包:结果: 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 镜像仓库层,需要将其拉入私有镜像库。
#
4、推送镜像到私有镜像库将通过脚本,将文件rancher-windows-images.tar.gz
中的镜像移入到你私有镜像库中。
在工作站中,文件rancher-windows-images.txt
和rancher-windows-images.tar.gz
要放在与运行脚本rancher-load-images.ps1
的同一目录下。
如果需要,请使用
powershell
,登录到你的私有镜像库:在
powershell
中,使用rancher-load-images.ps1
脚本,提取文件rancher-images.tar.gz
中的镜像,重新打 tag 并将它们推送到你的私有镜像库中:
#
同步 Linux 镜像Linux 镜像需要从 Linux 主机上收集和推送,但是必须先将 Windows 镜像推送到你的私有镜像库,然后再推送 Linux 镜像。这些步骤不同于只支持 Linux 集群设置步骤,因为被推送的 Linux 镜像实际是支持 Windows 和 Linux 镜像的 manifest 镜像。
#
先决条件在把 Linux 镜像推送到私有镜像库中之前,必须先把 Windows 镜像推送到私有镜像库中。如果你已经把 Linux 镜像推送到私有镜像库中,则需要再次按照这些说明重新推送,因为它们将发布支持 Windows 和 Linux 镜像的 manifest 镜像。
这些步骤要求你使用一个 Linux 工作站,它能访问互联网,而且可以访问你的私有镜像库。并且至少有 20GB 的磁盘空间。
因为需要支持 manifest 特性,工作站必须装有 Docker 18.02+ 版本,这是配置 Windows 集群的先决条件。
#
1、查找你用的 Rancher 版本所需要的资源浏览我们的版本发布页面并查找你想要安装的 Rancher v2.x.x 版本。不要下载标记为
rc
或Pre-release
的版本,因为它们在生产环境下不稳定。从发行版 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
文件中。如果使用自己的证书,则跳过此步骤。
获取最新的
cert-manager
Helm chart,并解析模板以获取镜像详细信息:注意: 由于
cert-manager
最近的改动,你需要升级cert-manager
版本。如果你要升级 Rancher 并且使用cert-manager
的版本低于 v0.12.0,请看我们的升级文档。对镜像列表进行排序和唯一化,以去除重复的镜像源:
#
3、将镜像保存到你的工作站中给脚本添加
rancher-save-images.sh
可执行权限:以镜像列表文件
rancher-images.txt
为参数执行脚本rancher-save-images.sh
来创建所有必须镜像的压缩包:提示
国内用户,可以从 http://mirror.rancher.cn --> rancher --> [rancher 版本] 下载 rancher-save-images.sh,该脚本支持通过参数
--from-aliyun true
来指定从阿里云镜像仓库拉去 rancher 镜像(从 rancher/rancher release 下载的 rancher-save-images.sh 不支持该参数),例如:结果: 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
同一目录下。
请先登录到自己的私有镜像库中:
给文件
rancher-load-images.sh
添加可执行权限:使用
rancher-load-images.sh
脚本,提取文件rancher-images.tar.gz
中的镜像,重新打 tag 并将它们推送到你的私有镜像库 中: