外部 IP 地址池是 MetalLB 用于获取 LoadBalancer 类型内部路由的外部访问 IP 的 IP 集合。
如果需要使用 BGP 类型的外部 IP 地址池,请联系管理员开启相关功能。
外部地址的 IP 资源必须满足以下条件:
外部地址池必须与可用节点实现二层(L2)互联。
IP 必须可被平台使用,且不能包含物理网络已使用的 IP,如网关 IP。
不能与集群使用的网络重叠,包括 Cluster CIDR、Service CIDR、子网等。
在双栈环境中,确保同一外部地址池中同时存在 IPv4 和 IPv6 地址,且数量均大于 0,否则双栈 LoadBalancer 类型内部路由无法获取外部访问地址。
在 IPv6 环境中,节点的 DNS 必须支持 IPv6,否则 MetalLB 插件无法成功部署。
使用外部地址池依赖 MetalLB 插件。
进入 Administrator。
在左侧导航栏点击 Marketplace > Cluster Plugin。
搜索 MetalLB,点击 ⋮ 右侧的 MetalLB > Deploy。
等待部署状态显示 Deployment Successful 即完成部署。
BGP 模式:
问:什么是 L2Advertisement
?
答:
L2Advertisement
是 MetalLB 提供的自定义资源(CRD),用于控制在二层模式下通过 ARP(IPv4)或 NDP(IPv6)广播哪些 IP 地址池中的地址。问:L2Advertisement
的作用是什么?
答:
指定 IPAddressPool 中哪些 IP 地址需要进行二层广播(ARP/NDP 广播);
控制广播行为,防止 IP 冲突或跨网段广播;
限制多网卡、多网络环境中的广播范围。
简而言之,它告诉 MetalLB:哪些 IP 可以广播,广播给谁(例如哪些节点)。
在二层模式下,如果未定义 L2Advertisement
,MetalLB 不会广播任何地址。
问:MetalLB 中的 BGPAdvertisement
是什么?
答:
BGPAdvertisement
是 Kubernetes 的自定义资源定义(CRD),用于 MetalLB 中,控制如何通过 BGP(边界网关协议)向外部网络广播 IP 地址范围(定义在 IPAddressPool
中)。
问:为什么 BGPAdvertisement
很重要?
答:
在 MetalLB 的 BGP 模式中,控制器通过 BGP 与外部路由器建立对等连接,并广播分配给 Kubernetes Service
对象的 IP。BGPAdvertisement
资源允许你:
控制广播哪些地址池
自定义路由广播设置,如:
路由聚合
BGP 社区属性
本地优先级(BGP 优先级)
如果未定义 BGPAdvertisement
,即使配置了 BGP 对等体,MetalLB 也不会广播任何地址。
进入 Administrator。
在左侧导航栏点击 Network Management > External IP Address Pool。
点击 Create External IP Address Pool。
参考以下说明配置相关参数。
参数 | 说明 |
---|---|
Type |
|
IP Resources | 支持 CIDR 和 IP 范围格式输入。点击 Add 支持多条输入,示例如下: CIDR: 192.168.1.1/24 。IP 范围: 192.168.2.1 ~ 192.168.2.255 。 |
Available Nodes | L2 模式下,可用节点是承载所有 VIP 流量的节点;BGP 模式下,可用节点是承载 VIP、与对等体建立 BGP 连接并对外宣布路由的节点。
|
BGP Peers | 选择 BGP 对等体;具体配置请参考 BGP Peers。 |
点击 Create。
进入 Administrator。
在左侧导航栏点击 Network Management > External IP Address Pool。
点击页面右上角的 View Alarm Policy,查看 MetalLB 的通用告警策略。