You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kubernetes高可用集群中添加Master节点至负载均衡的疑问

关于Kubernetes多Master高可用集群负载均衡器的疑问解答

首先明确说:Kubernetes本身不会默认自带负载均衡器,所以官方教程里提到的"Add master1 and master2 to load balancer"步骤,确实需要你自己准备负载均衡的解决方案——不管是额外的VM,还是利用基础设施提供的负载均衡能力。

下面详细解释一下:

为什么必须要有负载均衡器?

多Master集群的核心目标是高可用,而K8s的API Server是所有组件(kubelet、kubectl、控制器管理器等)的核心交互入口。如果没有统一的负载均衡入口:

  • 你只能让客户端直接连接某个Master节点的API Server,一旦这个节点故障,整个集群的管控就会中断;
  • 无法实现请求在多个Master节点之间的分发,会导致单节点负载过高。

负载均衡器的作用就是提供一个稳定的虚拟IP(或域名),把所有API请求均匀转发到健康的Master节点上,保证集群管控层面的高可用。

常见的负载均衡实现方式

你可以根据自己的环境选择合适的方案:

  • 额外VM部署开源负载均衡软件:这是自建集群最常用的方式,比如用HAProxy或Nginx搭建一个专门的负载均衡节点,配置它监听6443端口(K8s API Server默认端口),并把所有Master节点的API Server地址添加为后端服务器。这种方式成本低,适合测试或中小型生产集群。
  • 云厂商托管负载均衡器:如果你在公有云环境(比如AWS、阿里云、GCP)搭建集群,直接用云服务商提供的托管负载均衡器即可,不需要自己维护VM,稳定性和扩展性更好。
  • Master节点内置负载均衡(不推荐生产):你也可以在每个Master节点上部署HAProxy,再用Keepalived实现VIP漂移,让VIP在健康的Master节点之间切换。但这种方式会让Master节点承担额外的负载,而且故障排查复杂度更高,生产环境不建议这么做。

关于官方教程的步骤说明

官方文档里的"Add master1 and master2 to load balancer",本质就是把这两个Master节点的API Server(<master-ip>:6443)添加到你已经搭建好的负载均衡器的后端池中。完成这一步后,所有客户端(包括后续要加入集群的Worker节点)都应该通过负载均衡器的地址来访问K8s API,而不是直接连单个Master节点。

举个简单的HAProxy配置片段示例:

frontend k8s-api
    bind *:6443
    mode tcp
    default_backend k8s-api-servers

backend k8s-api-servers
    mode tcp
    balance roundrobin
    server master1 <master1-ip>:6443 check
    server master2 <master2-ip>:6443 check
    server master3 <master3-ip>:6443 check

小提醒

  • 负载均衡器必须配置健康检查,确保只会把请求转发到状态正常的Master节点;
  • 在执行kubeadm join加入节点时,要把--control-plane-endpoint参数设置为负载均衡器的地址(比如lb-ip:6443),这样所有节点都会通过负载均衡器连接API Server。

内容的提问来源于stack exchange,提问作者Mr.DevEng

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 07:13:10