documentation.suse.com / SUSE Edge 文档 / 组件 / MetalLB

19 MetalLB

请参见 MetalLB 官方文档

MetalLB 是使用标准路由协议的裸机 Kubernetes 群集的负载平衡器实现。

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

MetalLB 可以解决这些挑战,因为它利用 Kubernetes 模型创建 LoadBalancer 类型的服务,就如同这些服务是在云环境中运行一样,即使在裸机设置中,也能做到这一点。

为此可以采用两种不同的方法:通过 L2 模式(使用 ARP 技巧)或通过 BGP。大体而言,L2 不需要任何特殊网络设备,但 BGP 通常效果更好。使用哪种方法取决于使用场景。

19.1 SUSE Edge 如何使用 MetalLB?

SUSE Edge 主要通过两种方式使用 MetalLB:

  • 作为负载平衡器解决方案:MetalLB 充当裸机的负载平衡器解决方案。

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

注意
注意

为了能够公开 API,会使用 Endpoint Copier Operator(第 20 章 “Endpoint Copier Operator)将 K8s API 端点从 kubernetes 服务同步到 kubernetes-vip LoadBalancer 服务。

19.2 最佳实践

第 25 章 “K3s 上的 MetalLB(使用第 2 层模式)中详细介绍了 L2 模式的 MetalLB 安装。

有关在 kube-api-server 前端安装 MetalLB 以实现高可用性拓扑的指南,可参见第 26 章 “Kubernetes API 服务器前面的 MetalLB

19.3 已知问题

  • K3s 附带负载平衡器解决方案 Klipper。要使用 MetalLB,必须禁用 Klipper。为此,可以按照 K3s 文档中所述,使用 --disable servicelb 选项启动 K3s 服务器。

Documentation survey