k3s embedded etcd HA方案是否不需要负载均衡器

Is load balancer unnecessary for k3s embeded etcd HA solution

我在 k3s github 存储库中有一个相同的 discussion,但没有人回复。希望有人能在这里给出答案。

this这样的k3s的内嵌etcd HA解决方案的文章都有。关键行为之一是在代理和主节点之间添加负载均衡器解决方案(像本文中的 EIP 或来自云提供商的 LB):

k3s agent --> load balancer --> master

并且 architecture of k3s 还表明 固定注册地址 是必需的。

同时,经过一些研究,我发现 k3s(至少 v1.21.5+k3s2)有一个内部代理负载均衡器(配置在 /var/lib/rancher/k3s/agent/etc/k3s-agent-load-balancer.yaml),它将自动更新主 k8s api服务器列表在里面。所以不需要外部负载均衡器?

是的,仍然需要一个外部负载平衡器来实现具有多个主节点的高可用性设置。

无论何时启动工作节点或使用 API,都应连接到外部负载均衡器,以确保在一个主节点当前关闭时可以连接到 运行 主节点。

您上面提到的内部负载均衡器分配集群内的所有负载。

我在k3s讨论中得到了回复:

https://github.com/k3s-io/k3s/discussions/4488#discussioncomment-1719009

Our documentation lists a requirement for a "fixed registration endpoint" so that nodes do not rely on a single server being online in order to join the cluster. This endpoint could be a load-balancer or a DNS alias, it's up to you. This is only needed when nodes are registering to the cluster; once they have successfully joined, they use the client load-balancer to communicate directly with the servers without going through the registration endpoint.

我认为这足以回答这个问题。