|Index|SUSE Edge 文档|组件|MetalLB
Applies to SUSE Edge 3.6

15 MetalLB

请参阅 MetalLB 官方文档

MetalLB 是一种用于裸机 Kubernetes 集群的负载均衡器实现,使用标准路由协议。

在裸机环境中,设置网络负载均衡器比在云环境中要复杂得多。与云设置中简单的 API 调用不同,裸机需要专用网络设备或负载均衡器与虚拟 IP (VIP) 配置的组合,以管理高可用性 (HA) 或解决单节点负载均衡器中固有的潜在单点故障 (SPOF) 问题。这些配置不易自动化,给组件动态扩缩容的 Kubernetes 部署带来了挑战。

MetalLB 通过利用 Kubernetes 模型来创建 LoadBalancer 类型服务,从而解决了这些挑战,即使在裸机设置中也能像在云环境中一样运行。

有两种不同的方法,通过 L2 模式(使用 ARP 技巧)或通过 BGP。主要是 L2 不需要任何特殊的网络设备,但 BGP 通常更好。这取决于使用场景。

15.1 SUSE Edge 如何使用 MetalLB?

SUSE Edge 以三种关键方式使用 MetalLB:

  • 作为负载均衡器解决方案:MetalLB 用作裸机的负载均衡解决方案。

  • 对于 HA K3s/RKE2 设置:MetalLB 允许使用虚拟 IP 地址对 Kubernetes API 进行负载均衡。

  • 作为一种L3 BGP解决方案,MetalLB将服务IP的路由通告给附近的路由器。

Note
Note

为了能够暴露 API,使用Endpoint Copier Operator (Chapter 16, 端点复制器操作员)将K8s API端点从`kubernetes`服务同步到`kubernetes-vip` LoadBalancer服务。

15.2 最佳实践

L2模式下MetalLB的安装在Chapter 21, K3s 上的 MetalLB(使用层 2 模式)中描述,L3模式的安装在Chapter 22, K3s 上的 MetalLB(使用层 3 模式)中描述。

关于在`kube-api-server`前端安装 MetalLB 以实现高可用性拓扑的指南,可以在Chapter 24, Kubernetes API 服务器前的 MetalLB中找到。

15.3 已知问题

  • K3s自带其名为`Klipper`的负载均衡器解决方案。要使用MetalLB,必须禁用`Klipper`。这可以通过使用`--disable servicelb`选项启动K3s服务器来完成,如 K3s文档中所述。