创建外部 IP 地址池
外部 IP 地址池是 MetalLB 用于为 LoadBalancer 类型的内部路由获取外部访问 IP 的 IP 集合。
从 ACP 4.5 开始,Alauda Container Platform Load Balancer for MetalLB 更名为 Alauda Container Platform Load Balancer。从 Customer Portal 下载插件时,请搜索 Alauda Container Platform Load Balancer。重命名前发布的插件包上传后,在平台中仍显示为 Alauda Container Platform Load Balancer for MetalLB。
先决条件
如果需要使用 BGP 类型的外部 IP 地址池,请联系管理员启用相关功能。
约束和限制
外部地址的 IP 资源必须满足以下条件:
-
外部地址池必须与可用节点实现二层(L2)互联。
-
IP 必须可供平台使用,且不能包含物理网络中已使用的 IP,例如网关 IP。
-
外部地址池不能与集群使用的网络重叠,包括 Cluster CIDR、Service CIDR、子网等。
-
在双栈环境中,请确保同一外部地址池中同时包含 IPv4 和 IPv6 地址,且两者的数量均大于 0。否则,双栈 LoadBalancer 类型的内部路由将无法获取外部访问地址。
-
在 IPv6 环境中,节点的 DNS 必须支持 IPv6,否则无法成功部署 MetalLB 插件。
部署 MetalLB 插件
使用外部地址池依赖于 MetalLB 插件。
-
进入管理员。
-
在左侧导航栏中,点击Marketplace > 集群插件。
-
搜索 MetalLB,点击 ⋮ 右侧的 MetalLB > 部署。
-
等待部署状态显示为部署成功,完成部署。
IPAddressPool 自定义资源 (CR) 示例
BGP 模式:
- IP 池引用。
问:什么是 L2Advertisement?
答:
L2Advertisement是 MetalLB 提供的自定义资源 (CRD),用于控制在 Layer 2 模式下通过 ARP (IPv4) 或 NDP (IPv6) 广播哪些 IP 地址池地址。
问:L2Advertisement 的用途是什么?
答:
-
指定将 IPAddressPool 中的哪些 IP 地址通过 L2 广播(ARP/NDP 通告);
-
控制广播行为,以防止 IP 冲突或跨网段广播;
-
在多网卡、多网络环境中限制广播范围。
简而言之,它会告知 MetalLB:哪些 IP 可以广播,以及广播给谁(例如,哪些节点)。
在 Layer2 模式下,如果未定义 L2Advertisement,MetalLB 将不会通告任何地址。
问:MetalLB 中的 BGPAdvertisement 是什么?
答:
BGPAdvertisement 是 Kubernetes 自定义资源定义 (CRD),用于 MetalLB。MetalLB 是适用于裸机 Kubernetes 集群的负载均衡器实现。它用于控制通过 BGP(边界网关协议)向外部网络通告 IP 地址范围(在 IPAddressPool 中定义)的方式。
问:BGPAdvertisement 为什么重要?
答:
在 MetalLB 的 BGP 模式下,controller 使用 BGP 与外部路由器建立对等连接,并通告分配给 Kubernetes Service 对象的 IP。BGPAdvertisement 资源允许你:
-
控制要通告哪些地址池
-
自定义路由通告设置,例如:
-
路由聚合
-
BGP 社区
-
本地优先级(BGP 优先级)
-
如果未定义 BGPAdvertisement,即使已配置 BGP 对等体,MetalLB 也不会通告任何地址。
使用 web 控制台创建外部 IP 地址池
-
进入管理员。
-
在左侧导航栏中,点击网络管理 > 外部 IP 地址池。
-
点击创建外部 IP 地址池。
-
参考以下说明配置相应参数。
-
点击创建。
使用 CLI 创建外部 IP 地址池
查看告警策略
-
进入管理员。
-
在左侧导航栏中,点击网络管理 > 外部 IP 地址池。
-
点击页面右上角的查看告警策略,查看 MetalLB 的通用告警策略。