创建外部 IP 地址池
外部 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 插件
使用外部地址池依赖 MetalLB 插件。
-
进入 Administrator。
-
在左侧导航栏点击 Marketplace > Cluster Plugin。
-
搜索 MetalLB,点击 ⋮ 右侧的 MetalLB > Deploy。
-
等待部署状态显示 Deployment Successful 即完成部署。
IPAddressPool 自定义资源(CR)示例
BGP 模式:
- IP 地址池引用说明。
问:什么是 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 也不会广播任何地址。
通过 Web 控制台创建外部 IP 地址池
-
进入 Administrator。
-
在左侧导航栏点击 Network Management > External IP Address Pool。
-
点击 Create External IP Address Pool。
-
参考以下说明配置相关参数。
-
点击 Create。
通过 CLI 创建外部 IP 地址池
查看告警策略
-
进入 Administrator。
-
在左侧导航栏点击 Network Management > External IP Address Pool。
-
点击页面右上角的 View Alarm Policy,查看 MetalLB 的通用告警策略。