「MetalLB」- 裸机集群的负载均衡器实现

该笔记将记录:在 Kubernetes Cluster 中,部署及使用 MetalLB 组件的方法,以及常见问题的解决办法。理论:掌握 MetalLB 的使用方法;实践:通过 MetalLB 组件,实现 Service 资源分配地址及服务暴露。

认识

MetalLB,集群 LoadBalancer 组件,能够从 Address Pool 中为 spec.type: LoadBalancer 的 Service 资源分配地址。解决自建 Kubernetes 集群无法使用负载均衡的难题。

官网:https://metallb.io/
文档:https://metallb.io/installation/
仓库:https://github.com/metallb/metallb

改进

其成熟度

MetalLB is currently in beta. MetalLB v0.13.5

我们是在 Staging / Developing,以及内部环境中使用,暂时还未遇到严重问题;
根据官方描述,部分用户已经在生产环境中使用;

测试覆盖率:代码库具有合理的测试覆盖率,以及覆盖大部分回归的大量端到端测试。尽管如此,边缘情况可能存在错误,因此如果发现意外行为,考虑提交问题;

配置格式:其可能发生变更,但是官方会进行描述,并提供相关的工具进行说明;

目前(04/28/2022,MetalLB v0.12.1)为止,看起来 MetalLB 并不那么依赖于 Kubernetes API 版本,其主要工作是在 Worker 完成地址绑定及通告、管理流量转发规则;

文档:文档存在,还有需要改善的地方,尚未经过许多不熟悉该项目的读者的实战测试;

开发者:MetalLB 的版权归谷歌所有,直到 2019 年 3 月。然而,它从来都不是谷歌的官方项目。该项目没有任何形式的企业赞助。我们是在 Nginx Ingress Controller 的官方文档中了解到 MetaLB 项目,所以开始尝试使用;

# 05/02/2025 目前 v0.14.9 版本。

社区贡献

metallb/metallb: A network load-balancer implementation for Kubernetes using standard routing protocols