本文档采用自动化机器翻译技术翻译。 尽管我们力求提供准确的译文,但不对翻译内容的完整性、准确性或可靠性作出任何保证。 若出现任何内容不一致情况,请以原始 英文 版本为准,且原始英文版本为权威文本。

高可用性外部数据库

本节描述如何安装具有外部数据库的高可用性 SUSE® Rancher Prime: K3s 集群。

要快速部署大型 HA 集群,请参见 相关项目

单服务器集群可以满足多种用例,但对于 Kubernetes 控制平面运行时间至关重要的环境,您可以以 HA 配置运行 K3s。HA K3s 集群由以下部分组成:

  • 两个或更多 服务器节点,它们将提供 Kubernetes API 并运行其他控制平面服务

  • 一个 外部数据存储(与单服务器设置中使用的嵌入式 SQLite 数据存储相对)

  • 可选:零个或多个 代理节点,这些节点被指定用于运行您的应用程序和服务

  • 可选:一个 固定注册地址,供代理节点向集群注册

有关这些组件如何协同工作的更多详细信息,请参阅 架构部分。

安装大纲

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

1.创建外部数据存储

您首先需要为集群创建一个外部数据存储。有关更多详细信息,请参见 集群数据存储选项 文档。

2.启动服务器节点

SUSE® Rancher Prime: K3s 需要两个或更多服务器节点以进行此 HA 配置。有关最低机器要求,请参见 要求 指南。

在这些节点上运行 k3s server 命令时,您必须设置 datastore-endpoint 参数,以便 K3s 知道如何连接到外部数据存储。token 参数也可以用于在添加节点时设置确定性词元。当为空时,此词元将自动生成以供进一步使用。

例如,可以使用以下命令将 K3s 服务器与 MySQL 数据库作为外部数据存储进行安装,并 设置一个词元

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" \
  --tls-san=<FIXED_IP> # Optional, needed if using a fixed registration address

其中 INSTALL_K3S_ARTIFACT_URLPrime Artifacts URL

数据存储端点格式根据数据库类型而有所不同。有关详细信息,请参阅 数据存储端点格式 部分。

要在启动服务器节点时配置 TLS 证书,请参阅 数据存储配置指南

可用于单服务器安装的相同安装选项也适用于高可用性安装。有关更多详细信息,请参见 配置选项 文档。

默认情况下,服务器节点将可调度,因此您的工作负载可以在其上启动。如果您希望拥有一个专用的控制平面,不运行任何用户工作负载,可以使用污点。node-taint 参数将允许您配置带有污点的节点,例如 --node-taint CriticalAddonsOnly=true:NoExecute

一旦您在所有服务器节点上启动了 k3s server 进程,请确保集群已正确启动,使用 k3s kubectl get nodes。您应该看到服务器节点处于就绪状态。

3.可选:加入额外的服务器节点

步骤 2 中的相同示例命令可用于加入额外的服务器节点,其中需要使用第一个节点的词元。

如果第一个服务器节点在没有 --token CLI 标志或 K3S_TOKEN 变量的情况下启动,则可以从已加入集群的任何服务器中检索词元值:

cat /var/lib/rancher/k3s/server/token

然后可以通过 使用词元 添加额外的服务器节点:

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"

在所有服务器节点中,有一些配置标志必须保持一致:

  • 与网络相关的标志: --cluster-dns, --cluster-domain, --cluster-cidr, --service-cidr

  • 控制某些组件部署的标志:--disable-helm-controller--disable-kube-proxy--disable-network-policy`以及传递给--disable`的任何组件

  • 与功能相关的标志:--secrets-encryption

确保保留此词元的副本,因为在从备份恢复和添加节点时需要它。之前,K3s在使用外部SQL数据存储时不强制使用词元。

4.可选:配置固定注册地址

代理节点需要一个 URL 进行注册。这可以是任何服务器节点的 IP 或主机名,但在许多情况下,这些可能会随着时间而变化。例如,如果在支持扩展组的云中运行集群,节点可能会随着时间的推移而被创建和销毁,导致初始服务器节点的 IP 地址发生变化。最好在服务器节点前面有一个稳定的端点,该端点不会随着时间而变化。可以使用多种方法设置此端点,例如:

  • 第4层(TCP)负载均衡器

  • 轮询DNS

  • 虚拟或弹性 IP 地址

请参见集群负载均衡器以获取示例配置。

此端点也可用于访问Kubernetes API。因此,您可以例如修改您的https://kubernetes.io/docs/concepts/configuration/organize-cluster-access-kubeconfig/[kubeconfig]文件,使其指向此端点,而不是特定节点。

为了避免在这种配置中出现证书错误,您应该使用 --tls-san=YOUR_IP_OR_HOSTNAME_HERE 选项来配置服务器。此选项会将额外的主机名或 IP 作为 TLS 证书中的主题备用名称添加,如果您希望通过 IP 和主机名进行访问,可以多次指定。

5.可选:加入代理节点

因为 K3s 服务器节点默认是可调度的,所以 HA K3s 集群不需要代理节点。然而,您可能希望拥有专用的代理节点来运行您的应用程序和服务。

在高可用性集群中加入代理节点与在单服务器集群中加入代理节点是相同的。您只需指定代理应注册的 URL(可以是服务器 IP 地址之一或固定注册地址)以及它应使用的词元。

K3S_TOKEN=SECRET k3s agent --server https://server-or-fixed-registration-address:6443