高可用外部数据库
本文介绍了如何安装具有外部数据库的高可用 K3s 集群。
单服务器集群可以满足各种用例,但如果你的环境对 Kubernetes control plane 的正常运行时间有要求,你可以在 HA 配置中运行 K3s。一个 HA K3s 集群包括:
- 两个或多个 Server 节点为 Kubernetes API 提供服务并运行其他 control plane 服务
- 外部数据存储(与单节点设置中使用的嵌入式 SQLite 数据存储相反)
- 可选:零个或多个 Agent 节点,用于运行你的应用和服务
- 可选:固定注册地址,供 Agent 节点注册到集群
有关这些组件如何协同工作的详细信息,请参阅架构。
安装概要
设置 HA 集群需要以下步骤:
1. 创建外部数据存储
你首先需要为集群创建一个外部数据存储。有关更多详细信息,请参阅集群数据存储选项文档。
2. 启动 Server 节点
K3s 需要两个或更多的 Server 节点来实现 HA 配置。有关最低主机要求,请参阅安装要求。
在这些节点上运行 k3s server
命令时,你必须设置 datastore-endpoint
参数,以便 K3s 知道如何连接到外部数据存储。token
参数也可以 用来在添加节点时设置一个固定的 token。当为空时,将自动生成 token。
例如,你可以使用如下命令安装 K3s Server,并使用 MySQL 数据库作为外部数据存储和设置 token:
curl -sfL https://get.k3s.io | 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
根据数据库类型的不同,数据存储端点的格式也不同。有关详细信息,请参阅数据存储端点格式。
要在启动 server 节点时配置 TLS 证书,请参阅数据存储配置指南。
单台 Server 安装时可用的安装选项也适用于高可用安装。有关详细信息,请参阅配置选项文档。
默认情况下,Server 节点是可调度的,因此你的工作负载可以在它们上启动。如果你希望拥有一个不会运行用户工作负载的专用 control plane,你可以使用污点(taint)。node-taint
参数将允许你配置带有污点的节点,例如 --node-taint CriticalAddonsOnly=true:NoExecute
。
在所有 server 节点上启动 k3s server
进程后,请通过 k3s kubectl get nodes
确保集群已正确启动。你应该看到 server 节点处于 Ready 状态。