MetalLB 入门:Kubernetes 裸机负载均衡器
文章目录

MetalLB 是 Kubernetes 裸机集群的负载均衡器,GitHub 星标超过 1.4 万。裸机集群没法用云厂商的 LoadBalancer,它帮你把这个功能补上,现在很多裸机 K8s 集群都用它。
我在私有云裸机集群用过 MetalLB,确实能用,解决了 LoadBalancer 问题。今天聊聊它好在哪。
MetalLB 解决了什么问题
你搭 Kubernetes 在公有云,云厂商给你提供 LoadBalancer 插件,每个 Service 弄个 LoadBalancer 自动分配 IP。但自己搭裸机集群、私有云集群,没云厂商给你弄这个,LoadBalancer 类型的 Service 一直 pending 没 IP,没法外网访问,挺麻烦。
MetalLB 就是解决这个问题。给它一段 IP 地址池,它自动给你的 LoadBalancer 类型 Service 分配 IP,然后通过 BGP 或者 ARP 宣告出去,外网就能访问了,跟在公有云上用一样舒服。
基础例子看一下
先添加 repo 然后用 helm 安装:
helm repo add metallb https://metallb.github.io/metallb
helm install metallb metallb/metallb -n metallb-system --create-namespace
装好之后,定义 IP 地址池,创建一个 IPAddressPool:
apiVersion: metallb.io/v1beta1
kind: IPAddressPool
metadata:
name: default
namespace: metallb-system
spec:
addresses:
- 192.168.1.240-192.168.1.250
然后创建一个 L2 广告,同一个网段:
apiVersion: metallb.io/v1beta1
kind: L2Advertisement
metadata:
name: default
namespace: metallb-system
完事。现在创建 LoadBalancer 类型的 Service,它自动从地址池拿个 IP给你配上,就能访问了,就是这么简单。
用 BGP 模式也差不多,配置一下 peers 就行:
apiVersion: metallb.io/v1beta2
kind: BGPPeer
metadata:
name: peer
namespace: metallb-system
spec:
myASN: 65000
peerASN: 65001
peerAddress: 192.168.1.1
核心好用的特性
补上裸机 LoadBalancer
裸机私有云集群没有云厂商 LoadBalancer,MetalLB 给你补上,跟公有云一样用 Service,体验一致,舒服。
两种模式
二层模式(ARP/NDP)和 BGP 模式都有。二层模式简单,不用改路由器配置,小集群直接用。BGP 模式适合大集群,性能更好,路由器直接路由,扩展性好。
自动 IP 分配
Service 创建删除,它自动分配释放 IP,不用手动配,跟云厂商一样全自动。
兼容标准
就是实现 Kubernetes 标准的 LoadBalancer 功能,不用改你的 Service YAML,改个类型就行,不用改代码,兼容性好。
哪些场景用 MetalLB
自己搭的裸机 Kubernetes 集群、私有云集群,肯定要用。没有 LoadBalancer 太不方便,暴露服务全靠 NodePort 或者 Ingress 太麻烦,用 MetalLB 体验跟公有云一样。
私有云搭建,要给服务分配内网 IP 负载均衡,它合适。
MetalLB 有哪些优缺点
优点很明显,解决了裸机集群 LoadBalancer 大问题,配置简单,全自动,不用怎么管。标准兼容,不改 YAML 就能用,稳定,用的人多,出问题也好排错。
缺点,v0.13 之后架构改了,比以前复杂一点,但也更灵活。BGP 模式需要路由器支持,你得会配路由器。二层模式不适合超大集群,但大部分场景够用了。
现在 MetalLB 发展得怎么样
出来快八年了,一直活跃维护,功能越来越完善。基本上裸机集群要 LoadBalancer 都用它,地位稳固,一直在更新。
现在学 MetalLB 值得吗
自己搭 Kubernetes 集群,不管是测试还是生产,肯定值得学。早晚用得到,装上配置 IP 池就完事,十分钟就能配好。学会了一辈子能用,反正你搭裸机集群绕不开它。
项目地址:https://github.com/metallb/metallb
是生产,肯定值得学。早晚用得到,装上配置 IP 池就完事,十分钟就能配好。学会了一辈子能用,反正你搭裸机集群绕不开它。
项目地址:https://github.com/metallb/metallb
更多推荐




所有评论(0)