原理预计 35 分钟
MetalLB:裸金属集群的 LoadBalancer
云上一行 type: LoadBalancer 就有 VIP,裸金属得自己实现。两种宣告方式,选错了要么不通、要么只有高可用没有负载均衡。
学完这节你能做到
- 解释 L2 模式下 VIP 是怎么被宣告与抢占的,以及为什么它只是高可用
- 说清 BGP 模式的对等配置与 ECMP 分担,并据此在两种模式之间选择
- 排查 VIP 不通时知道该看哪个 CRD、哪份日志、抓什么包
建议先学跳过这几节会看不懂本节的部分推导
正文待编写以下是本节已定稿的小节大纲
- 1Service 那节留下的问题:VIP 怎么让物理网络知道它的存在
- 2ARP 与 gARP:无请求应答式宣告,以及切换时怎么让全网更新缓存
- 3L2 模式:单节点承载全部流量,speaker 选主与故障接管
- 4BGP 基础:AS 号、对等会话、路由宣告
- 5BGP 模式:多节点宣告同一个 /32,靠 ECMP 真正分担
- 6两种模式对照:带宽上限、切换速度、对网络组的要求
- 7与 CNI 的配合:Cilium BGP 把 Pod CIDR 一起宣告出去
- 8地址池规划:从机房要一段可路由地址,且不能和节点网重叠
- 9排障四条路:servicel2statuses、speaker 日志、arping 反查、抓 ARP 包
- 10两个高频坑:externalTrafficPolicy 与 exclude-from-external-load-balancers 标签
延伸资料
- ·k8s-in-action
network/metallb/README.md - ·k8s-in-action
network/metallb/default-pool.yaml - ·k8s-in-action
network/cilium/README.md - ·The Kubernetes Networking Guide ↗