K3s 嵌入式 DB 的高可用

2022-08-22 10:39 更新

嵌入式DB的高可用

从 v1.19.5+k3s1 版本开始,K3s 已添加了对嵌入式 etcd 的完全支持。从 v1.19.1 到 v1.19.4 版本只提供了对嵌入式 etcd 的实验性支持。在 K3s v1.19.1 版本中,嵌入式 etcd 取代了实验性的 Dqlite。这是一个突破性的变化。请注意,不支持从实验性 Dqlite 升级到嵌入式 etcd。如果你尝试升级,升级将不会成功,并且数据将会丢失。
嵌入式 etcd (HA) 在速度较慢的磁盘上可能会出现性能问题,例如使用 SD 卡运行的 Raspberry Pi。

新集群

要在这种模式下运行 K3s,你必须有奇数的 server 节点。我们建议从三个节点开始。

要开始运行,首先启动一个 server 节点,使用​cluster-init​标志来启用集群,并使用一个标记作为共享的密钥来加入其他服务器到集群中。

curl -sfL https://get.k3s.io | K3S_TOKEN=SECRET sh -s - server --cluster-init

启动第一台 server 后,使用共享密钥将第二台和第三台 server 加入集群。

curl -sfL https://get.k3s.io | K3S_TOKEN=SECRET sh -s - server --server https://<ip or hostname of server1>:6443

现在你有了一个高可用的 controlplane。你可以在 ​--server​ 参数中使用任何集群 server,从而加入额外的 server 和 worker 节点。将额外的 worker 节点加入到集群中,步骤与单个 server 集群相同。

验证

kubectl get nodes

输出:

NAME        STATUS   ROLES                       AGE   VERSION
server1     Ready    control-plane,etcd,master   28m   vX.Y.Z
server2     Ready    control-plane,etcd,master   13m   vX.Y.Z

有几个配置标志在所有 server 节点中必须是相同的:

  • 与网络有关的标志:​--cluster-dns​, ​--cluster-domain​, ​--cluster-cidr​, ​--service-cidr
  • 控制某些组件的部署的标志:​--disable-helm-controller​, ​--disable-kube-proxy​, ​--disable-network-policy​和任何传递给​--disable​的组件
  • 与功能相关的标志:​--secrets-encryption

现有集群

如果你有一个使用默认嵌入式 SQLite 数据库的现有集群,你可以通过使用 ​--cluster-init​ 标志重新启动你的 K3s server 来将其转换为 etcd。完成此操作后,你将能够如上所述添加其他实例。

重要: K3s v1.22.2 及更新版本支持从 SQLite 迁移到 etcd。如果您将 ​--cluster-init​ 添加到现有 server,旧版本将创建一个新的空数据存储。

如果由于节点已经初始化或加入了一个集群,导致在磁盘上发现一个 etcd 数据存储,那么数据存储参数(​--cluster-init​、​--server​ 和 ​--datastore-endpoint​ 等)将被忽略。


以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号