|
本文档采用自动化机器翻译技术翻译。 尽管我们力求提供准确的译文,但不对翻译内容的完整性、准确性或可靠性作出任何保证。 若出现任何内容不一致情况,请以原始 英文 版本为准,且原始英文版本为权威文本。 |
隔离安装
本指南将引导您通过三步过程在隔离的环境中安装 K3s。
|
您可以使用在 Prime Artifacts URL 上列出的任何 K3s Prime 版本来获取这些步骤中提到的资产。要了解有关 Prime Artifacts URL 的更多信息,请参阅我们的 仅限 Prime 的文档。需要身份验证。使用您的 SUSE 客户中心 (SCC) 凭据登录。 |
加载镜像
每种镜像加载方法有不同的要求,适用于不同的隔离场景。选择最适合您基础设施和安全要求的方法。
-
私有注册表方法
-
手动部署镜像方法
-
嵌入式注册表镜像
这些步骤假设您已经在隔离环境中创建了节点,使用捆绑的 containerd 作为容器运行时,并且在您的环境中有一个符合 OCI 标准的私有注册表。
如果您尚未设置私有 Docker 注册表,请参阅 官方注册表文档。
创建注册表 YAML 并推送镜像
-
从您将运行的 K3s 版本的 Prime Artifacts URL 页面获取适合您架构的镜像归档。
-
使用
docker image load k3s-airgap-images-amd64.tar.zst将镜像从 tar 文件导入到 docker 中。 -
使用
docker tag和docker push重新标记并推送加载的镜像到您的私有注册表。 -
请遵循 私有注册表配置 指南创建和配置
registries.yaml文件。 -
继续查看下面的 安装 K3s 部分。
这些步骤假设您已经在隔离环境中创建了节点,使用捆绑的 containerd 作为容器运行时,并且无法或不想使用私有注册表。
此方法要求您手动将必要的镜像部署到每个节点,适用于在边缘部署中运行私有注册表不切实际的情况。
准备镜像目录和隔离镜像压缩包
-
在可以访问互联网的机器上,从您计划安装的K3s版本的https://scc.suse.com/rancher-docs/rancherprime/latest/en/reference-guide.html#prime-artifacts-url[Prime Artifacts URL]页面下载适合您架构的镜像归档。例如:
curl -L -o k3s-airgap-images-amd64.tar.zst "<PRIME-ARTIFACTS-URL>/k3s/v1.35.1%2Bk3s1/k3s-airgap-images-amd64.tar.zst" -
将镜像归档传输到隔离节点。将它们放置在代理的镜像目录中,例如:
sudo mkdir -p /var/lib/rancher/k3s/agent/images/ sudo curl -L -o /var/lib/rancher/k3s/agent/images/k3s-airgap-images-amd64.tar.zst ""https://github.com/k3s-io/k3s/releases/download/v1.33.1%2Bk3s1/k3s-airgap-images-amd64.tar.zst" sudo cp k3s-airgap-images-amd64.tar.zst /var/lib/rancher/k3s/agent/images/k3s-airgap-images-amd64.tar.zst -
继续查看下面的 安装 K3s 部分。
启用条件镜像导入
|
版本门控
条件镜像导入自2025年5月的版本开始可用:v1.33.1+k3s1,v1.32.5+k3s1,v1.31.9+k3s1,v1.30.13+k3s1。 |
每次k3s启动时都会导入镜像归档。这样做是为了确保所有镜像始终可用,即使某些镜像在上次启动后被删除或修剪。然而,这会延迟启动,因为kubelet在处理完所有归档之前不会启动。为了缓解这种延迟,有一个选项可以仅导入自上次导入以来发生变化的归档,即使在重启之间也是如此。
要启用此功能,请在镜像目录中创建一个`.cache.json`文件:
touch /var/lib/rancher/k3s/agent/images/.cache.json
缓存文件将在处理归档时存储元数据。只要归档的大小和修改时间保持不变,K3s 的后续重启将不会导入镜像。
|
当启用此功能时,将无法确保每次k3s启动时所有镜像都可用。如果自上次启动以来删除或修剪了某个镜像,请手动采取措施重新导入该镜像。或者:
|
K3s 包含一个嵌入式分布式 OCI 兼容的注册表镜像。 当启用并正确配置时,任何节点上的 containerd 镜像存储中的可用镜像可以被其他集群成员拉取,而无需访问外部镜像注册表。
镜像可以来自上游注册表、注册表镜像或隔离镜像归档。 有关启用嵌入式分布式注册表镜像的更多信息,请参见嵌入式注册表镜像文档。
安装K3s
先决条件
在安装K3s之前,选择上面的加载镜像选项之一,以预填充K3s安装所需的镜像。
下载二进制文件和脚本
-
从https://scc.suse.com/rancher-docs/rancherprime/latest/en/reference-guide.html#prime-artifacts-url[Prime Artifacts URL]页面下载K3s二进制文件,确保与获取隔离镜像时使用的版本相匹配。将二进制文件放置在每个隔离节点的`/usr/local/bin`中,并确保其可执行。
sudo curl -Lo /usr/local/bin/k3s <PRIME-ARTIFACTS-URL>/k3s/v1.35.1%2Bk3s1/k3s sudo chmod +x /usr/local/bin/k3s -
在https://get.k3s.io[get.k3s.io]下载K3s安装脚本。将安装脚本放置在每个隔离节点的任意位置,并命名为`install.sh`。
curl -Lo install.sh https://get.k3s.io chmod +x install.sh
设置默认网络路由 - 对于没有默认路由的节点是必需的
如果您的节点没有具有默认路由的接口,则必须配置默认路由;即使是通过虚拟接口的黑洞路由也可以。K3s需要默认路由以自动检测节点的主IP,并使kube-proxy的ClusterIP路由正常工作。要添加虚拟路由,请执行以下操作:
ip link add dummy0 type dummy
ip link set dummy0 up
ip addr add 203.0.113.254/31 dev dummy0
ip route add default via 203.0.113.255 dev dummy0 metric 1000
下载SELinux RPM - 对于启用SELinux的隔离节点是必需的
如果在启用SELinux的隔离节点上运行,您必须在安装K3s之前手动安装k3s-selinux RPM。此 RPM 包含 K3s 正常运行所需的 SELinux 策略。最新版本的 RPM 可以在 这里 找到。例如,在 CentOS 8 上:
# On an internet accessible machine:
curl -LO https://github.com/k3s-io/k3s-selinux/releases/download/v1.6.stable.1/k3s-selinux-1.6-1.el8.noarch.rpm
# Transfer RPM to air-gapped machine
sudo yum install ./k3s-selinux-1.6-1.el8.noarch.rpm
k3s-selinux RPM 安装需要以下依赖项在操作系统中可用:
-
container-selinux
-
policycoreutils
-
selinux-policy
有关更多信息,请参见 SELinux 部分。
运行安装脚本
您可以按照以下描述在一个或多个服务器上安装 K3s。
-
单服务器配置
-
高可用性配置
要在单个服务器上安装 K3s,只需在服务器节点上执行以下操作:
INSTALL_K3S_SKIP_DOWNLOAD=true ./install.sh
要添加额外的代理,请在每个代理节点上执行以下操作:
INSTALL_K3S_SKIP_DOWNLOAD=true K3S_URL=https://<SERVER_IP>:6443 K3S_TOKEN=<YOUR_TOKEN> ./install.sh
参考 使用外部数据库的高可用性 或 使用嵌入式数据库的高可用性 指南。您将调整安装命令,因此您指定 INSTALL_K3S_SKIP_DOWNLOAD=true 并在本地运行安装脚本,而不是通过 curl。您还将利用 INSTALL_K3S_EXEC='args' 来提供任何参数给 k3s。
例如,使用外部数据库的高可用性指南的第二步提到以下内容:
curl -sfL https://get.k3s.io | INSTALL_K3S_ARTIFACT_URL=<PRIME-ARTIFACTS-URL>/k3s sh -s - server \
--token=SECRET \
--datastore-endpoint="mysql://username:password@tcp(hostname:3306)/database-name"
相反,您将像下面这样修改这些示例:
INSTALL_K3S_SKIP_DOWNLOAD=true INSTALL_K3S_EXEC='server --token=SECRET' \
K3S_DATASTORE_ENDPOINT='mysql://username:password@tcp(hostname:3306)/database-name' \
./install.sh
|
K3s 的 |
升级
-
手动升级
-
自动升级方法
升级隔离环境可以通过以下方式完成:
-
从 Prime Artifacts URL 页面下载您将要升级的 K3s 版本的新隔离镜像(tar 文件)。将 tar 文件放置在每个节点的
/var/lib/rancher/k3s/agent/images/目录中。删除旧的 tar 文件。 -
在每个节点的
/usr/local/bin中复制并替换旧的 K3s 二进制文件。将安装脚本复制到 https://get.k3s.io(因为自上次发布以来可能已更改)。再次运行脚本,就像您过去一样,使用相同的环境变量。 -
重启 K3s 服务(如果安装程序没有自动重启的话)。
K3s 支持自动升级。要在隔离的环境中启用此功能,您必须确保所需的镜像在您的私有注册表中可用。
您需要与您打算升级的 K3s 版本相对应的 rancher/k3s-upgrade 版本。请注意,镜像标签将 K3s 发布中的 ` 替换为 `-`,因为 Docker 镜像不支持 `。
您还需要在您将要部署的 system-upgrade-controller 清单 YAML 中指定的 system-upgrade-controller 和 kubectl 的版本。检查system-upgrade-controller的最新发布https://github.com/rancher/system-upgrade-controller/releases/latest[这里],并下载system-upgrade-controller.yaml以确定您需要推送到私有注册表的版本。例如,在 Upgrade Controller 的 v0.4.0 版本(即 system-upgrade-controller)中,这些映像在清单 YAML 中指定:
rancher/system-upgrade-controller:v0.4.0 rancher/kubectl:v0.17.0
一旦您将必要的rancher/k3s-upgrade、rancher/system-upgrade-controller和rancher/kubectl映像添加到您的私有注册表中,请遵循自动升级指南。