跳到主要内容
版本:v2.9

3. 安装 Kubernetes(Docker 安装请跳过)

备注

如果你使用 Docker 在单个节点上安装 Rancher,请跳过本节。

本文描述了如何根据 Rancher Server 环境的最佳实践来安装 Kubernetes 集群。该集群需要专用于运行 Rancher Server。

Rancher 可以安装在任何 Kubernetes 集群上,包括托管的 Kubernetes。

在 RKE、RKE2 或 K3s 上离线安装 Kubernetes 集群的步骤如下所示:

在本指南中,我们假设你已经在离线环境中创建了节点,并且在堡垒服务器上有一个安全的 Docker 私有镜像仓库。

安装概要

  1. 准备镜像目录
  2. 创建镜像仓库 YAML
  3. 安装 K3s
  4. 保存并开始使用 kubeconfig 文件

1. 准备镜像目录

Releases 页面获取要运行的 K3s 版本的镜像 tar 文件。

在每个节点上启动 K3s 之前,将这个 tar 文件放在 images 目录中,例如:

sudo mkdir -p /var/lib/rancher/k3s/agent/images/
sudo cp ./k3s-airgap-images-$ARCH.tar /var/lib/rancher/k3s/agent/images/

2. 创建镜像仓库 YAML

registries.yaml 文件创建到 /etc/rancher/k3s/registries.yaml 中。此文件为 K3s 提供连接到你的私有镜像仓库的详细信息。

在加入必要信息之前,registries.yaml 文件是这样的:

---
mirrors:
customreg:
endpoint:
- "https://ip-to-server:5000"
configs:
customreg:
auth:
username: xxxxxx # 镜像仓库的用户名
password: xxxxxx # 镜像仓库的密码
tls:
cert_file: <镜像仓库所用的证书文件路径>
key_file: <镜像仓库所用的密钥文件路径>
ca_file: <镜像仓库所用的 CA 文件路径>

请注意,目前,K3s 仅支持安全的镜像仓库(带有自定义 CA 的 SSL)。

有关 K3s 的私有镜像仓库配置文件的详情,请参见 K3s 官方文档

3. 安装 K3s

Rancher 需要安装在支持的 Kubernetes 版本上。如需了解你使用的 Rancher 版本支持哪些 Kubernetes 版本,请参见 Rancher 支持矩阵

如需指定 K3s(Kubernetes)版本,在运行 K3s 安装脚本时使用 INSTALL_K3S_VERSION 环境变量(例如 INSTALL_K3S_VERSION="v1.24.10+k3s1")。

Releases 页面获取 K3s 的二进制文件,该文件要匹配用于获取离线镜像的 tar 版本。 访问 K3s 安装脚本以获取 K3s 的安装脚本。

将二进制文件放到每个节点的 /usr/local/bin 中。 将安装脚本放在每个节点的任意位置,并将脚本命名为 install.sh

在每个 Server 上安装 K3s:

INSTALL_K3S_SKIP_DOWNLOAD=true INSTALL_K3S_VERSION=<VERSION> ./install.sh

在每个 Agent 上安装 K3s:

INSTALL_K3S_SKIP_DOWNLOAD=true INSTALL_K3S_VERSION=<VERSION> K3S_URL=https://<SERVER>:6443 K3S_TOKEN=<TOKEN> ./install.sh

其中 <SERVER> 是 Server 的 IP 或有效 DNS,<TOKEN> 是可以在 /var/lib/rancher/k3s/server/node-token 中找到的 Server node-token。

备注

K3s 自动为 kubelets 提供 --resolv-conf 标志,该标志可能对在离线环境中配置 DNS 有帮助。

4. 保存并开始使用 kubeconfig 文件

在每个 Rancher Server 节点安装 K3s 时,会在每个节点的 /etc/rancher/k3s/k3s.yaml 中生成一个 kubeconfig 文件。该文件包含访问集群的凭证。请将该文件保存在安全的位置。

如要使用该 kubeconfig 文件:

  1. 安装 Kubernetes 命令行工具 kubectl
  2. 复制 /etc/rancher/k3s/k3s.yaml 文件并保存到本地主机的 ~/.kube/config 目录上。
  3. 在 kubeconfig 文件中,server 的参数为 localhost。你需要将 server 配置为负载均衡器的 DNS,并指定端口 6443(通过端口 6443 访问 Kubernetes API Server,通过端口 80 和 443 访问 Rancher Server)。以下是一个 k3s.yaml 示例:
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: [CERTIFICATE-DATA]
server: [LOAD-BALANCER-DNS]:6443 # 编辑此行
name: default
contexts:
- context:
cluster: default
user: default
name: default
current-context: default
kind: Config
preferences: {}
users:
- name: default
user:
password: [PASSWORD]
username: admin

结果:你可以开始使用 kubectl 来管理你的 K3s 集群。如果你有多个 kubeconfig 文件,在使用 kubectl 时,你可以传入文件路径来指定要使用的 kubeconfig 文件:

kubectl --kubeconfig ~/.kube/config/k3s.yaml get pods --all-namespaces

有关 kubeconfig 文件的详情,请参见 K3s 官方文档 Kubernetes 官方文档中关于使用 kubeconfig 文件管理集群访问的部分。

升级注意事项

你可以通过以下方式完成离线环境的升级:

  1. Releases 页面下载要升级的 K3s 版本的新离线镜像 tar 包。将 tar 文件放在每个节点上的 /var/lib/rancher/k3s/agent/images/ 目录中。删除旧的 tar 文件。
  2. 复制并替换每个节点上 /usr/local/bin 中的旧 K3s 二进制文件。复制 K3s 安装脚本(因为脚本可能自上次版本发布以来已更改)。使用相同的环境变量再次运行脚本。
  3. 重启 K3s 服务(如果安装程序没有自动重启 K3s 的话)。
备注

后两个文件名中的 rancher-cluster 部分取决于你命名 RKE 集群配置文件的方式。

故障排除

参见故障排除页面。

后续操作

安装 Rancher