默认情况下,Rancher 中所有用于或运行任何工具的镜像都从 Docker Hub 中拉取,如: 监控、日志、告警、流水线等镜像。但是在离线环境下安装 Rancher 的步骤略有不同。您需要创建一个私有镜像库,将所有镜像下载到这个私有镜像库里,然后使用 Rancher Server 访问这个仓库,从仓库中拉取镜像。
本节描述如何在离线环境中设置您的私有镜像库,以便在安装 Rancher 时,Rancher 从私有镜像库拉取所需的镜像。
默认情况下,我们假设只配置 Linux 集群,所以本文只提供了如何推送 Linux 需要的镜像到私有镜像库的步骤。如果您需要创建 Windows 集群,请参考。
对于只用来创建 Linux 集群的 Rancher Server,请按以下步骤推送镜像到私有镜像库。
- A. 查找您用的 Rancher 版本所需要的资源
- B. 搜集所有必需的镜像
- C. 将镜像保存到您的工作站中
- D. 推送镜像到私有镜像库
先决条件
这些步骤要求您使用一个 Linux 工作站,它可以访问互联网和您的私有镜像库。请确保至少有 20GB 的磁盘空间可用。
如果要使用 ARM64 主机,则镜像库必须支持 docker manifest 功能。截至 2020 年 5 月,Amazon Elastic Container Registry 不支持 docker manifest。
A. 查找您用的 rancher 版本所需要的资源
浏览我们的版本发布页面,查找您想安装的 Rancher v2.x.x 版本。不要下载标记为 或
Pre-release
的版本,因为它们在生产环境下是不稳定的。从发行版 Assets 部分下载以下文件:
B. 收集所有必需的镜像(针对使用 Rancher 生成的自签名证书的高可用安装)
在安装高可用过程中,如果选择使用 Rancher 默认的自签名 TLS 证书,则还必须将 镜像添加到 rancher-images.txt
文件中。如果使用自己的证书,则跳过此步骤。
获取最新的
cert-manager
Helm chart,并解析模板以获取镜像详细信息:
C. 将镜像保存到您的工作站中
添加
rancher-save-images.sh
文件的可执行权限。chmod +x rancher-save-images.sh
执行脚本
rancher-save-images.sh
并以--image-list ./rancher-images.txt
作为参数,创建所需镜像的压缩包。./rancher-save-images.sh --image-list ./rancher-images.txt
结果: Docker 开始会拉取用于离线安装所需的镜像。这个过程会花费几分钟时间。完成时,您的当前目录会输出名为
rancher-images.tar.gz
的压缩包。请确认文件存在这个目录里。
D. 推送镜像到私有镜像库
登录私有镜像库。
docker login <REGISTRY.YOURDOMAIN.COM:PORT>
添加
rancher-load-images.sh
文件的可执行权限。chmod +x rancher-load-images.sh
使用脚本
rancher-load-images.sh
提取rancher-images.tar.gz
文件中的镜像,根据文件rancher-images.txt
中的镜像列表对提取的镜像文件重新打 tag 并推送到您的私有镜像库中。
v2.3.0 及以后版本可用
对于用来创建 Linux 和 Windows 集群的 Rancher Server,会有不同的步骤来为您的私有镜像库同步 Windows 镜像和 Linux 镜像。因为一个 Windows 集群会包含 Linux 和 Windows 的混合节点。
从 Windows 工作站中收集和推送 Windows 镜像。
- A. 查找您用的 rancher 版本所需要的资源
- B. 将镜像保存到您的 Windows 服务工作站中
- C. 准备 Docker 守护进程
- D. 推送镜像到私有镜像库
先决条件
这些步骤要求您使用 Windows Server 1809 工作站,该工作站能访问网络、能访问您的私有镜像库 以及至少 50 GB 的磁盘空间。
工作站必须安装 Docker 18.02+版本,因为这个版本的 Docker 支持 manifests,这个特性是设置 Windows 集群所必须的。
如果要使用 ARM64 主机,则镜像库必须支持 docker manifest 功能。截至 2020 年 5 月,Amazon Elastic Container Registry 不支持 docker manifest。
A. 查找您用的 Rancher 版本所需要的资源
浏览我们的版本发布页面并查找您想要安装的 Rancher v2.x.x 版本。不要下载标记为
rc
或Pre-release
的版本,因为它们在生产环境下不稳定。从发行版本的 “Assets” 部分,下载下列文件:
B. 将镜像保存到您的 Windows 服务工作站中
在
powershell
中,进入上一步有下载文件的目录里。运行脚本
rancher-save-images.ps1
, 去创建所有必需的压缩包:./rancher-save-images.ps1
步骤结果: Docker 会开始拉取离线安装所需要的镜像。这个过程需要几分钟时间,请耐心等待。拉取镜像结束后,您的当前目录会输出名为
rancher-windows-images.tar.gz
的压缩包。请确认输出文件是否存在。
C. 准备 Docker 守护进程
将您的私有镜像库地址追加到 Docker 守护进程配置文件(C:\ProgramData\Docker\config\daemon.json
)的allow-nondistributable-artifacts
配置字段中。由于 Windows 镜像的基础镜像是由mcr.microsoft.com
Registry 维护的,这一步是必须的,因为 Docker Hub 中缺少 Microsoft 注册表层,需要将其拉入私有镜像库。
{
...
"allow-nondistributable-artifacts": [
...
"<REGISTRY.YOURDOMAIN.COM:PORT>"
]
...
D. 推送镜像到私有镜像库
通过脚本将文件rancher-windows-images.tar.gz
中的镜像移入到您私有镜像库中。在工作站中,文件rancher-windows-images.txt
要放在与运行脚本rancher-load-images.ps1
同一目录下。
如果需要,请使用
powershell
,登录到您的私有镜像库:docker login <REGISTRY.YOURDOMAIN.COM:PORT>
-
./rancher-load-images.ps1 --registry <REGISTRY.YOURDOMAIN.COM:PORT>
同步 Linux 镜像
Linux 镜像需要从 Linux 主机上收集和推送,但是必须先将 Windows 镜像推送到您的私有镜像库,然后再推送 Linux 镜像。这些步骤不同于只支持 Linux 集群设置步骤,因为被推送的 Linux 镜像实际是支持 Windows 和 Linux 镜像的 manifest 镜像。
- A. 查找您用的 rancher 版本所需要的资源
- B. 收集所有需要的镜像
- C. 将镜像保存到您的 Linux 服务工作站中
- D. 推送镜像到私有镜像库
先决条件
在把 Linux 镜像推送到私有镜像库中之前,必须先把 Windows 镜像推送到私有镜像库中。如果您已经把 Linux 镜像推送到私有镜像库中,则需要再次按照这些说明重新推送,因为它们将发布支持 Windows 和 Linux 镜像的 manifest 镜像。
这些步骤要求您使用一个 Linux 工作站,它能访问互联网,而且可以访问您的私有镜像库。并且至少有 20GB 的磁盘空间。
因为需要支持 manifest 特性,工作站必须装有 Docker 18.02+ 版本,这是配置 Windows 集群的先决条件。
A. 查找您用的 Rancher 版本所需要的资源
浏览我们的并查找您想要安装的 Rancher v2.x.x 版本。不要下载标记为 rc or Pre-release 的版本,因为它们在生产环境下不稳定。
从发行版 Assets 部分下载以下文件,这些文件是离线环境下安装 Rancher 所必需的:
B. 收集所有必需的镜像
针对使用 Rancher 生成的自签名证书安装的高可用: 在安装 Kubernetes 过程中,如果选择使用 Rancher 默认的自签名 TLS 证书,则还必须将cert-manager
镜像添加到rancher-images.txt
文件中。如果使用自己的证书,则跳过此步骤。
获取最新的
cert-manager
Helm chart,并解析模板以获取镜像详细信息:helm repo add jetstack https://charts.jetstack.io
helm repo update
helm fetch jetstack/cert-manager --version v0.12.0
helm template ./cert-manager-<version>.tgz | grep -oP '(?<=image: ").*(?=")' >> ./rancher-images.txt
对镜像列表进行排序和唯一化,以去除重复的镜像源:
C. 将镜像保存到您的工作站中
给脚本添加
rancher-save-images.sh
可执行权限:chmod +x rancher-save-images.sh
以镜像列表文件
rancher-images.txt
为参数执行脚本rancher-save-images.sh
来创建所有必须镜像的压缩包:./rancher-save-images.sh --image-list ./rancher-images.txt
结果: Docker 会开始拉取用于离线安装所需的镜像。这个过程会花费几分钟时间。完成时,您的当前目录会输出名为 rancher-images.tar.gz 的压缩包。请确认文件存在这个目录里。
D. 推送镜像到私有镜像库
用脚本rancher-load-images.sh
将文件rancher-images.tar.gz
中的镜像移入到您私有镜像库中。在工作站中,镜像列表文件 rancher-images.txt
/ rancher-windows-images.txt
要放在与运行脚本rancher-load-images.sh
同一目录下。
请先登录到自己的私有镜像库 中:
docker login <REGISTRY.YOURDOMAIN.COM:PORT>
给文件
rancher-load-images.sh
添加可执行权限:chmod +x rancher-load-images.sh
使用
rancher-load-images.sh
脚本,提取文件rancher-images.tar.gz
中的镜像,重新打 tag 并将它们推送到您的私有镜像库 中:./rancher-load-images.sh --image-list ./rancher-images.txt \