K3s离线安装
#
概述本文介绍 K3s 离线安装包管理以及使用离线安装方式部署集群。
#
基础命令新增子命令 autok3s airgap
,用于管理 K3s 离线安装文件。以下是命令帮助详情:
#
创新离线安装包使用命令 autok3s airgap create <name>
创建一个新的离线安装包,必输参数为 arch
以及 k3s-version
。支持通过 CLI 交互的方式填写参数。
K3s 版本(k3s-version
)列表可以在 Github 中 K3s 的Release列表中找到。针对内核架构选择,支持 amd64
, arm64
, arm
, 以及 s390x
。需要注意的是 s390x
架构只在比较新的 K3s 版本中支持;如果在某个 K3s 版本下选择了并不支持的内核架构,创建离线安装包时会给出错误提示。
当新的离线安装包被创建后,autok3s 会校验其合法性并开始从 K3s 二进制分发站点下载资源。默认情况下会从 github
进行下载,如果遇到 Github 站点访问困难的情况,可以通过 autok3s serve
开启UI界面,在 API UI中修改配置 /v1/settings/package-download-source
,从 github
改为 aliyunoss
,使 autok3s 从 aliyun OSS 分发站点中进行下载。在未来的版本会支持在CLI中修改该配置。
下载的离线安装包资源会存放在 <config-path>/pakcage/<name>
路径中,以下为每个安装包的目录结构:
每个支持的内核架构文件都会存放在单独的目录中,并会在安装 K3s 集群时通过 scp 复制到目标节点中。
在资源下载完成后,通过 autok3s airgap ls
可以看待每个离线安装包的状态,下载完成后会显示为 Active
状态。
#
更新离线安装包通过命令 autok3s airgap update <name> [flags]
可以更新离线安装包,与创建时一样,支持修改 arch
以及 k3s-version
。
当你修改 K3s 版本或删除一个 已经下载的内核架构时,会提示确认。也可以通过添加参数 -f, --force
进行强制更新。
更新操作只对受影响的内核架构资源文件进行变更。当更新 K3s 版本时,则所有选择的内核架构对应的资源都会被删除并重新下载。
#
离线安装包导入导出离线安装包可以通过命令 autok3s airgap export <name> <path>
进行导出。离线安装包名称 name
以及导出路径 path
是必须的。导出路径可以指定一个以 tar.gz
结尾的文件名,或指定一个目录 。当导出路径为目录时,导出的文件名则为 name.tar.gz
。
已经导出的离线安装包可以通过命令 autok3s airgap import <path> [name]
进行导入。也可以在创建集群时,指定该安装包进行离线安装。
#
K3s安装脚本根据K3s官方文档,安装脚本 install.sh
需要在离线安装前分发到待安装集群的节点上。
在 autok3s 中,我们在CI流程中内置了从 https://get.k3s.io
下载的脚本并存储在 install-script
设置中。通过命令 autok3s airgap update-install-script
可以联网更新最新的安装脚本到本地数据库中。安装脚本来源地址配置在设置 install-script-source-repo
中。
#
使用离线安装包创建/升级集群目前离线安装集群支持除 k3d
外所有的 云提供商
。你可以从帮助信息 ./autok3s create -p native --help
中看到以下参数:
使用离线安装包进行安装/升级集群时,可以通过 --package-name
参数指定一个已经下载好的离线安装包名称,或使用 --package-path
指定一个已导出的离线安装文件。
当以上任意一个参数被使用的情况下,autok3s 会认为使用离线安装方式安装 K3s 集群,这些参数 --k3s-channel
, --k3s-install-mirror
, --k3s-install-script
以及 --k3s-version
将不会生效。并且显示的 K3s 版本为离线安装包对应的版本。
离线安装过程如下:
- 创建待安装 K3s 集群的节点,不需要则跳过
- ssh到节点上,通过
uname -a
确认节点的内核架构 - 确认该节点的内核架构是否在离线安装包中支持,不支持则报错退出
- 将资源
install.sh
,k3s
以及k3s-image-list.tar
通过 scp 远程复制到节点上 - 使用离线安装命令安装 K3s 集群
当前不支持在离线安装模式下使用 docker 容器运行时运行 K3s组件,该功能将会在未来版本中支持。