多节点

嵌入式 etcd

使用 K3s 的嵌入式 etcd 数据库创建一个包含 3 个服务器节点的集群。首个创建的服务器会使用 --cluster-init 标志,并且 k3d 会在创建(并连接)其他服务器节点前,等待该服务器启动并运行。

k3d cluster create multiserver --servers 3

集群重启可能失败的情况

当你重启集群时,每个节点的 IP(也就是底层容器的 IP)可能会改变。在这种情况下,某个节点可能无法加入现有的集群,从而启动失败。为解决这个问题,你可以使用试验性的 IPAM(IP 地址管理)功能为每个容器分配一个静态 IP。若要启用该功能,可在创建集群时使用 --subnet auto 或 --subnet 172.45.0.0/16(或者你所需的任何子网)标志。使用 --subnet auto 时,k3d 会创建一个虚拟的 Docker 网络以获取可用的子网。

向正在运行的集群添加服务器节点

理论上(并且在大多数实际情况中也是如此),执行以下命令就能轻松完成:

k3d node create newserver --cluster multiserver --role server
这里有个陷阱!
如果你的集群最初仅使用单个服务器节点创建,那么上述操作将会失败。
这是因为初始的服务器节点在启动时没有使用 --cluster-init 标志,因此没有使用 etcd 后端。