Skip to main content

高可用安装

本节介绍如何安装一个高可用性(HA)的 RKE2 集群。一个高可用的 RKE2 集群由以下部分组成:

  • 一个固定的注册地址,放在 server 节点的前面,允许其他节点在集群中注册。
  • 一个奇数(推荐三个)的 server节点,将运行 etcd、Kubernetes API 和其他控制面服务。
  • 零个或多个agent 节点,它们将运行你的应用程序和服务。

Agent 通过固定的注册地址进行注册。但是,当 RKE2 启动 kubelet 且必须连接到 Kubernetes api 服务器时,它通过rke2 agent进程(充当客户端负载均衡器)进行连接。

设置一个 HA 集群需要以下步骤:

  1. 配置一个固定的注册地址
  2. 启动第一个 server 节点
  3. 加入其他 server 节点
  4. 加入 agent 节点

1. 配置固定的注册地址#

除了第一个 server 节点和所有 agent 节点之外,还需要一个 URL 来进行注册。这可以是任何一个 server 节点的 IP 或 hostname,但在许多情况下,随着节点的创建和销毁,这些可能会随着时间而改变。因此,你应该在 server 节点的前面有一个稳定的端点。

这个端点可以使用多种方法来设置,例如:

  • 一个 4 层(TCP)负载均衡器
  • 轮询的 DNS
  • 虚拟或弹性 IP 地址

这个端点也可以用来访问 Kubernetes 的 API。因此,你可以修改你的kubeconfig文件指向这个端点,而不是指向特定节点。

注意,rke2 server 进程在端口 9345 上监听新节点的注册。正常情况下,Kubernetes API 的服务端口是6443。相应地配置你的负载均衡器。

2. 启动第一个 server 节点#

第一个 server 节点建立 token,其他 server 或 agent 节点在连接到集群时将用这个 token 来注册。

如果要指定自定义的 token,可以在启动时设置token参数。

如果你没有指定 token,RKE2 将生成一个 token 并放在/var/lib/rancher/rke2/server/node-token中。

为了避免固定注册地址的证书错误,你应该在启动 server 时设置tls-san参数。这个选项在 server 节点的 TLS 证书中增加了一个额外的 hostname 或 IP 作为备用名称,如果你希望同时通过 IP 和 hostname 访问,可以将其指定为一个列表。

如果您遵循本指南,这里是 RKE2 配置文件(位于/etc/rancher/rke2/config.yaml)的示例。

注意 RKE2 配置文件需要手动创建。你可以通过以特权用户身份运行 touch /etc/rancher/rke2/config.yaml 来完成。

token: my-shared-secret
tls-san:
- my-kubernetes-domain.com
- another-kubernetes-domain.com

2a. 可选:server 节点的污点#

默认情况下,server 节点是可调度的,因此你的工作负载可以在它们上面启动。如果你希望有一个专用的控制平面,没有用户工作负载运行,你可以使用 taints。参数 node-taint 将允许你配置带有污点的节点。下面是一个在配置文件中添加节点污点的例子:

node-taint:
- "CriticalAddonsOnly=true:NoExecute"

注意:当所有节点都被 CriticalAddonsOnly 污染时,NGINX Ingress 和 Metrics Server 插件将不会部署。如果你的 server 节点被污染,这些插件将保持挂起,直到未污染的 agent 节点添加到集群中。

3. 启动其他 server 节点#

其他的 server 节点的启动和第一个节点的启动很相似,只是你必须指定 servertoken 参数,以便它们能够成功连接到初始 server 节点。

如果你遵循本指南,则以下示例显示了其他 server 节点的 RKE2 配置文件:

server: https://my-kubernetes-domain.com:9345
token: my-shared-secret
tls-san:
- my-kubernetes-domain.com
- another-kubernetes-domain.com

如前所述,你必须有总数为奇数的 server 节点。

4. 确认集群是正常的#

在所有 server 节点上启动rke2 server进程后,请确保群集已正常启动:

/var/lib/rancher/rke2/bin/kubectl \
--kubeconfig /etc/rancher/rke2/rke2.yaml get nodes

你应该看到你的 server 节点处于Ready状态。

注意: 默认情况下,任何 kubectl 命令都需要 root 用户访问权限,除非使用 RKE2_KUBECONFIG_MODE。请在集群访问页面中阅读更多信息。

5. 可选:加入 agent 节点#

因为 RKE2 server 节点默认是可调度的,所以一个 HA 的 RKE2 server 集群的最小节点数是 3 个 server 节点和 0 个 agent 节点。要添加指定的节点来运行你的应用程序和服务,请将 agent 节点加入你的集群。

在 HA 集群中加入 agent 节点与在单个 server 集群中加入 agent 节点是一样的。你只需要指定 agent 应该注册的 URL 和它应该使用的 token。

server: https://my-kubernetes-domain.com:9345
token: my-shared-secret
Last updated on by hailong