K3s 离线安装
本例将引导您使用 Hangar 快速搭建包含多架构容器镜像的 Registry 服务器,以用于 K3s Air-Gap(离线环境)安装。
您可按照 K3s 私有镜像仓库 文档在离线环境安装 K3s。
最佳实践
-
部署一个 registry 服务器,用于存储 K3s 容器镜像。
#!/bin/bash
# 本例中,将 K3s 容器镜像 Layer 文件存储至本地目录
mkdir -p registry
docker run -d \
-p 5000:5000 \
-v $(pwd)/registry:/var/lib/registry \
--name registry \
registry:2登录至私有镜像仓库:
hangar login 'localhost:5000' --tls-verify=false
备注默认情况下,Registry 可以使用任意的用户名和密码登录。
您可以参考 Distribution Registry Token Authentication 配置 Registry 的认证信息,并参考 HTTPS certificate 配置 HTTPS。
-
在 K3s GitHub Release 页面下载 K3s 镜像列表。
本例使用版本为
v1.27.6+k3s1
。wget 'https://github.com/k3s-io/k3s/releases/download/v1.27.6%2Bk3s1/k3s-images.txt'
-
如果私有镜像仓库的主机可以访问公共网络,您可使用 Hangar mirror 命令,将
amd64
和arm64
架构的容器镜像从 Docker Hub Mirror 至私有镜像仓库。#!/bin/bash
hangar mirror \
-f 'k3s-images.txt' \
-s 'docker.io' \
-d 'localhost:5000' \
--arch 'amd64,arm64' \
--os 'linux' \
--jobs 5 \
--tls-verify=false可使用 mirror validate 命令确保镜像均被正确拷贝至私有镜像仓库中。
#!/bin/bash
hangar mirror validate \
-f 'k3s-images.txt' \
-s 'docker.io' \
-d 'localhost:5000' \
--arch 'amd64,arm64' \
--os 'linux' \
--jobs 5 \
--tls-verify=false -
如果主机无法访问至公共网络,可先在有网络连接的主机上使用 hangar save 命令保存镜像,之后使用 hangar load 命令将保存的容器镜像拷贝至私有镜像仓库中。
#!/bin/bash
# 将镜像保存在 k3s-images.zip 压缩包中。
# 在有网络连接的设备执行以下命令。
hangar save \
-f 'k3s-images.txt' \
-s 'docker.io' \
-d 'k3s-images.zip' \
--arch 'amd64,arm64' \
--os 'linux' \
--jobs 5
# 如有需要,验证已保存的镜像。
hangar save validate \
-f 'k3s-images.txt' \
-s 'docker.io' \
-d 'k3s-images.zip' \
--arch 'amd64,arm64' \
--os 'linux' \
--jobs 5生成的
k3s-images.zip
压缩包含有amd64
和arm64
架构的容器镜像。#!/bin/bash
# 将 k3s-images.zip 保存的镜像上传至私有镜像仓库。
# 可在无网络连接的设备上执行此命令。
hangar load \
-s 'k3s-images.zip' \
-d 'localhost:5000' \
--arch 'amd64,arm64' \
--os 'linux' \
--jobs 5 \
--tls-verify=false
# 如有需要,验证已上传的镜像。
hangar load validate \
-s 'k3s-images.zip' \
-d 'localhost:5000' \
--arch 'amd64,arm64' \
--os 'linux' \
--jobs 5 \
--tls-verify=false