K8s MetaLB 详解

在 Kubernetes 集群中,Service 是核心资源之一,其中 LoadBalancer 类型服务是业务对外暴露的核心方式。但原生 K8s 仅为公有云集群(AWS、阿里云、腾讯云等)提供 LoadBalancer 实现,裸金属、本地机房、私有部署的 K8s 集群默认不支持 LoadBalancer 类型 Service,只能依赖 NodePort、Ingress 实现流量暴露,存在端口散乱、运维复杂、无统一入口、负载均衡能力薄弱等问题。 MetalLB 正是这样一款专为私有/裸金属K8s集群设计的开源负载均衡组件,完全开源免费、轻量无侵入,完美补齐了私有 K8s 集群无原生 LoadBalancer 的短板,是本地机房 K8s 生产集群的标配组件。 1. 项目介绍 1.1 项目定位与核心作用 MetalLB 是 Kubernetes官方认可的负载均衡解决方案,专为非云环境(裸金属服务器、虚拟机、本地私有集群)设计。其核心作用是:为集群内 LoadBalancer 类型的 Service 自动分配外部静态 IP,实现四层流量负载均衡,替代原生 NodePort 的低效暴露方式,让私有集群拥有与公有云一致的 Service 负载均衡能力。 核心价值: 统一业务暴露方式:与公有云 K8s 开发规范对齐,无需适配 NodePort 特殊逻辑。 稳定四层负载均衡:支持 TCP/UDP 协议,适配后端服务、数据库、中间件等各类业务。 简化运维:固定服务外部 IP,无需节点端口映射,流量入口统一可控。 轻量高性能:无复杂依赖,资源占用极低,不侵入 K8s 核心组件。 1.2 架构原理 MetalLB 采用控制器 + 转发节点的分布式架构,整体由两大核心组件组成,全部运行在集群内部,以 Pod 形式部署。 1.2.1 Controller(控制器组件) 全局唯一的调度组件,默认单副本部署,核心职责: 监听集群内所有 LoadBalancer 类型的 Service 资源变更。 维护 IP 地址池,为新的 LoadBalancer Service 自动分配可用外部 IP。 回收废弃 Service 的 IP 资源,避免 IP 泄露与占用。 校验 IP 分配合法性,保证全局唯一性。 1.2.2 Speaker(转发组件) 集群节点级组件,默认每个集群节点部署一个Pod(DaemonSet部署),核心职责: ...