33.5. 关于 IP 地址池的广告
您可以配置 MetalLB,以便使用第 2 层协议、BGP 协议或两者来广告 IP 地址。通过第 2 层,MetalLB 提供了容错的外部 IP 地址。使用 BGP,MetalLB 为外部 IP 地址和负载均衡提供容错功能。
MetalLB 支持将 L2 和 BGP 用于同一组 IP 地址。
MetalLB 提供了将地址池分配给特定 BGP 对等对象到网络上节点子集的灵活性。这可以实现更复杂的配置,例如促进节点隔离或网络分段。
33.5.1. 关于 BGPAdvertisement 自定义资源 复制链接链接已复制到粘贴板!
BGPAdvertise
对象的字段在下表中定义:
字段 | 类型 | 描述 |
---|---|---|
|
| 指定 BGP 广告的名称。 |
|
| 指定 BGP 广告的命名空间。指定 MetalLB Operator 使用的同一命名空间。 |
|
|
可选:指定 32 位 CIDR 掩码中包含的位数。为了聚合发言人向 BGP 对等者公告的路由,掩码将应用于多个服务 IP 地址的路由,speaker 会公告聚合的路由。例如,聚合长度为 |
|
|
可选:指定 128 位 CIDR 掩码中包含的位数。例如,在聚合长度为 |
|
| 可选:指定一个或多个 BGP 社区。每个社区都被指定为两个 16 位值,用冒号字符分隔。知名的社区必须指定为 16 位值:
|
|
| 可选:指定这个广播的本地首选项。此 BGP 属性适用于 Autonomous System 中的 BGP 会话。 |
|
|
可选:用于使用这个广告进行广告的 |
|
|
可选:使用这个广告进行广告的 |
|
|
可选: |
|
|
可选:使用列表为每个 |
33.5.2. 使用 BGP 公告和基本用例配置 MetalLB 复制链接链接已复制到粘贴板!
按如下所示配置 MetalLB,使对等 BGP 路由器为每个 MetalLB 分配为服务的负载均衡器 IP 地址接收一个 203.0.113.200/32
路由和一个 fc00:f853:ccd:e799::1/128
路由。因为没有指定 localPref
和 community
字段,所以路由会公告,并将 localPref
设置为 0,且没有 BGP 社区。
33.5.2.1. 示例:使用 BGP 传输基本地址池配置 复制链接链接已复制到粘贴板!
按如下所示配置 MetalLB,以便使用 BGP 协议公告 IPAddressPool
。
先决条件
-
安装 OpenShift CLI(
oc
)。 -
以具有
cluster-admin
特权的用户身份登录。
流程
创建 IP 地址池。
创建一个文件,如
ipaddresspool.yaml
,其内容类似以下示例:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 应用 IP 地址池的配置:
oc apply -f ipaddresspool.yaml
$ oc apply -f ipaddresspool.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
创建 BGP 公告。
创建一个文件,如
bgpadvertisement.yaml
,内容类似以下示例:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 应用配置:
oc apply -f bgpadvertisement.yaml
$ oc apply -f bgpadvertisement.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
33.5.3. 使用 BGP 广告和高级用例配置 MetalLB 复制链接链接已复制到粘贴板!
按如下所示配置 MetalLB,使得 MetalLB 分配给负载均衡器的 IP 地址范围是 203.0.113.200
到 203.0.113.203
,以及 fc00:f853:ccd:e799::0
到 fc00:f853:ccd:e799::f
。
为了说明两个 BGP 公告,在 MetalLB 分配 IP 地址 203.0.113.200
时,请考虑实例。以该 IP 地址为例,发言人向 BGP 对等点公告两个路由:
-
203.0.113.200/32
,localPref
设置为100
,社区设置为NO_ADVERTISE
社区的数字值。此规范指示它们可以使用此路由的对等路由器,但它们不应将有关此路由的信息传播到 BGP 对等点。 -
203.0.113.200/30
将 MetalLB 分配的负载均衡器 IP 地址聚合到一个路由中。MetalLB 公告到 BGP 对等点的聚合路由,并将 community 属性设置为8000:800
。BGP 同行将203.0.113.200/30
个路由传播到其他 BGP 同级服务器。当流量通过发言人路由到节点时,使用203.0.113.200/32
路由将流量转发到集群以及与该服务关联的 pod。
当添加更多服务和 MetalLB 从池中分配更多负载均衡器 IP 地址时,对等路由器收到一个本地路由,203.0.113.20x/32
,以及 203.0.113.200/30
聚合路由。您添加的每个服务都会生成 /30
路由,但 MetalLB 会将路由重复数据删除到一个 BGP 公告,然后再与对等路由器通信。
33.5.3.1. 示例:使用 BGP 传输高级地址池配置 复制链接链接已复制到粘贴板!
按如下所示配置 MetalLB,以便使用 BGP 协议公告 IPAddressPool
。
先决条件
-
安装 OpenShift CLI(
oc
)。 -
以具有
cluster-admin
特权的用户身份登录。
流程
创建 IP 地址池。
创建一个文件,如
ipaddresspool.yaml
,其内容类似以下示例:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 应用 IP 地址池的配置:
oc apply -f ipaddresspool.yaml
$ oc apply -f ipaddresspool.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
创建 BGP 公告。
创建一个文件,如
bgpadvertisement1.yaml
,内容类似以下示例:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 应用配置:
oc apply -f bgpadvertisement1.yaml
$ oc apply -f bgpadvertisement1.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建一个文件,如
bgpadvertisement2.yaml
,内容类似以下示例:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 应用配置:
oc apply -f bgpadvertisement2.yaml
$ oc apply -f bgpadvertisement2.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
33.5.4. 从节点的子集公告 IP 地址池 复制链接链接已复制到粘贴板!
要从 IP 地址池公告 IP 地址,请只使用特定的节点集合,使用 BGPAdvertisement 自定义资源中的 .spec.nodeSelector
规格。此规格将 IP 地址池与集群中的一组节点关联。如果您在集群中的不同子网上有节点,而您想要从特定子网的地址池中公告 IP 地址,例如仅面向公共的子网。
先决条件
-
安装 OpenShift CLI(
oc
)。 -
以具有
cluster-admin
特权的用户身份登录。
流程
使用自定义资源创建 IP 地址池:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 通过在 BGPAdvertisement 自定义资源中定义
.spec.nodeSelector
值,控制pool1
广告的 IP 地址来自集群中的哪些节点:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
在本例中,pool1
广告的 IP 地址仅来自 NodeA
和 NodeB
。
33.5.5. 关于 L2Advertisement 自定义资源 复制链接链接已复制到粘贴板!
l2Advertise
对象的字段在下表中定义:
字段 | 类型 | 描述 |
---|---|---|
|
| 指定 L2 广告的名称。 |
|
| 指定 L2 广告的命名空间。指定 MetalLB Operator 使用的同一命名空间。 |
|
|
可选:用于使用这个广告进行广告的 |
|
|
可选:使用这个广告进行广告的 |
|
|
可选: 重要 限制节点,因为下一跃点只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。 有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。 |
|
|
可选:用于声明负载均衡器 IP 的 |
33.5.6. 使用 L2 广告配置 MetalLB 复制链接链接已复制到粘贴板!
按如下所示配置 MetalLB,以便使用 L2 协议广告 IPAddressPool
。
先决条件
-
安装 OpenShift CLI(
oc
)。 -
以具有
cluster-admin
特权的用户身份登录。
流程
创建 IP 地址池。
创建一个文件,如
ipaddresspool.yaml
,其内容类似以下示例:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 应用 IP 地址池的配置:
oc apply -f ipaddresspool.yaml
$ oc apply -f ipaddresspool.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
创建 L2 广告。
创建一个文件,如
l2advertisement.yaml
,内容类似以下示例:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 应用配置:
oc apply -f l2advertisement.yaml
$ oc apply -f l2advertisement.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
33.5.7. 使用 L2 广告和标签配置 MetalLB 复制链接链接已复制到粘贴板!
BGPAdvertisement
和 L2Advertisement
中的 ipAddress
Pools 字段用于根据分配给 IPAddressPool
的标签将 IPAddressPool
与广告相关联。
本例演示了如何配置 MetalLB,以便通过配置 ipAddressPoolSelectors
字段来广告使用 L2 协议的 IPAddressPools
。
先决条件
-
安装 OpenShift CLI(
oc
)。 -
以具有
cluster-admin
特权的用户身份登录。
流程
创建 IP 地址池。
创建一个文件,如
ipaddresspool.yaml
,其内容类似以下示例:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 应用 IP 地址池的配置:
oc apply -f ipaddresspool.yaml
$ oc apply -f ipaddresspool.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
使用
ipAddressPoolSelectors
创建 L2 广告广告 IP。创建一个文件,如
l2advertisement.yaml
,内容类似以下示例:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 应用配置:
oc apply -f l2advertisement.yaml
$ oc apply -f l2advertisement.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
33.5.8. 为所选接口配置带有 L2 广告的 MetalLB 复制链接链接已复制到粘贴板!
默认情况下,分配给该服务的 IP 地址池的 IP 地址将从所有网络接口公告。L2Advertisement
自定义资源定义中的 interfaces
字段用于限制公告 IP 地址池的网络接口。
本例演示了如何配置 MetalLB,以便仅从所有节点的 interfaces
字段中列出的网络接口公告 IP 地址池。
先决条件
-
已安装 OpenShift CLI(
oc
)。 -
您以具有
cluster-admin
权限的用户身份登录。
流程
创建 IP 地址池。
创建一个文件,如
ipaddresspool.yaml
,并输入类似以下示例的配置详情:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为 IP 地址池应用配置,如下例所示:
oc apply -f ipaddresspool.yaml
$ oc apply -f ipaddresspool.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
使用
接口
选择器创建 L2 广告广告 IP。创建一个 YAML 文件,如
l2advertisement.yaml
,并输入类似以下示例的配置详情:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为公告应用配置,如下例所示:
oc apply -f l2advertisement.yaml
$ oc apply -f l2advertisement.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
接口选择器不会影响 MetalLB 如何使用 L2 选择给定 IP 的节点。如果节点没有所选接口,则所选节点不会宣布该服务。