<p>I have a same <a href="https://github.com/k3s-io/k3s/discussions/4488" rel="nofollow noreferrer">discussion</a> in k3s github repository, but no one reply. Hope someone can give an answer here.</p>
<p>There are articles talking about the embedded etcd HA solution of k3s like <a href="https://blog.alexellis.io/bare-metal-kubernetes-with-k3s/" rel="nofollow noreferrer">this</a>. One of the key behavior is adding a load balancer solution (EIP like this article or LB from the clound provider) between the agents and masters:</p>
<pre><code>k3s agent --&gt; load balancer --&gt; master
</code></pre>
<p>And the <a href="https://rancher.com/docs/k3s/latest/en/architecture/#fixed-registration-address-for-agent-nodes" rel="nofollow noreferrer">architecture of k3s</a> also show that a <strong>Fixed Registration Address</strong> is necessary.</p>
<p>While, after some research I found that k3s (at least v1.21.5+k3s2) have a internal agent load balancer (config at <code>/var/lib/rancher/k3s/agent/etc/k3s-agent-load-balancer.yaml</code>) which will auto update the master k8s api server list in it. So the out side load balancer is unnecessary?</p>

aisensiy
<p>I got a response from the k3s discussion:</p>
<p><a href="https://github.com/k3s-io/k3s/discussions/4488#discussioncomment-1719009" rel="nofollow noreferrer">https://github.com/k3s-io/k3s/discussions/4488#discussioncomment-1719009</a></p>
<blockquote>
<p>Our documentation lists a requirement for a &quot;fixed registration endpoint&quot; 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.</p>
</blockquote>
<p>I think this is good enough to answer this question.</p>
