4.3. 配置 MetalLB BGP peer
作为集群管理员,您可以添加、修改和删除边框网关协议(BGP)对等点。MetalLB Operator 使用 BGP peer 自定义资源来标识 MetalLB speaker
pod 联系的对等者启动 BGP 会话。对等点接收 MetalLB 分配给服务的负载均衡器 IP 地址的路由公告。
4.3.1. 关于 BGP peer 自定义资源 复制链接链接已复制到粘贴板!
下表中描述了 BGP peer 自定义资源的字段。
字段 | 类型 | 描述 |
---|---|---|
|
| 指定 BGP peer 自定义资源的名称。 |
|
| 指定 BGP peer 自定义资源的命名空间。 |
|
|
为 BGP 会话的本地末尾指定 Autonomous System Number (ASN)。在您添加的所有 BGP peer 自定义资源中,指定相同的值。范围是从 |
|
|
指定 BGP 会话的远程端的 ASN。范围是从 |
|
|
检测用于会话远程端的 ASN,而不明确设置它。为具有相同 ASN 的对等点指定 |
|
|
指定建立 BGP 会话的对等点的 IP 地址。如果使用此字段,则无法在 |
|
|
指定建立会话时使用的接口名称。使用此字段配置未编号的 BGP 对等。您必须在两个 BGP 对等点之间建立点对点、第 2 层连接。您可以将未编号的 BGP 对等用于 IPv4、IPv6 或双栈,但您必须启用 IPv6 RAs (Router Advertisements)。每个接口都限制为一个 BGP 连接。如果使用此字段,则无法在 |
|
| 可选:指定建立 BGP 会话时要使用的 IP 地址。该值必须是 IPv4 地址。 |
|
|
可选:指定用来建立 BGP 会话的对等端口。范围为 |
|
|
可选:指定到 BGP 对等点的保留时间。最小值为 3 秒( |
|
|
可选:指定向 BGP 对等发送保留消息之间的最大间隔。如果指定此字段,还必须为 |
|
| 可选:指定要公告到 BGP peer 的路由器 ID。如果指定了此字段,则必须在添加的每个 BGP peer 自定义资源中指定相同的值。 |
|
| 可选:指定 MD5 密码,以发送到执行 TCP MD5 经过身份验证的 BGP 会话的路由器的对等点。 |
|
|
可选:指定 BGP Peer 的身份验证 secret 的名称。secret 必须存在于 |
|
| 可选:指定 BFD 配置集的名称。 |
|
| 可选:使用匹配表达式和匹配标签指定选择器,以控制哪些节点可以连接到 BGP 对等点。 |
|
|
可选:指定 BGP peer 是否有多个网络跃点。如果 BGP peer 没有直接连接到同一网络,则 speaker 无法建立 BGP 会话,除非此字段设置为 |
|
| 指定 BGP 在连接尝试到邻居之间等待的时间。 |
passwordSecret
字段与 password
字段相互排斥,包含对包含密码的 secret 的引用。设置这两个字段会导致解析失败。
4.3.2. 配置 BGP peer 复制链接链接已复制到粘贴板!
作为集群管理员,您可以添加 BGP peer 自定义资源来与网络路由器交换路由信息,并为服务公告 IP 地址。
先决条件
-
安装 OpenShift CLI(
oc
)。 -
以具有
cluster-admin
特权的用户身份登录。 - 使用 BGP 公告配置 MetalLB。
流程
创建一个文件,如
bgppeer.yaml
,其内容类似以下示例:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 应用 BGP peer 的配置:
oc apply -f bgppeer.yaml
$ oc apply -f bgppeer.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.3.3. 为给定地址池配置一组特定的 BGP 对等组 复制链接链接已复制到粘贴板!
此流程演示了如何:
-
配置一组地址池(
pool1
和pool2
)。 -
配置一组 BGP 对等点(
pe1
和peer2
)。 -
配置 BGP 广告,将
pool1
分配给peer1
,将pool2
分配给peer2
。
先决条件
-
安装 OpenShift CLI(
oc
)。 -
以具有
cluster-admin
特权的用户身份登录。
流程
创建地址池
pool1
。创建一个文件,如
ipaddresspool1.yaml
,其内容类似以下示例:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为 IP 地址池
pool1
应用配置:oc apply -f ipaddresspool1.yaml
$ oc apply -f ipaddresspool1.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
创建地址池
pool2
。创建一个文件,如
ipaddresspool2.yaml
,其内容类似以下示例:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为 IP 地址池
pool2
应用配置:oc apply -f ipaddresspool2.yaml
$ oc apply -f ipaddresspool2.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
创建 BGP
peer1
。创建一个文件,如
bgppeer1.yaml
,内容类似以下示例:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 应用 BGP peer 的配置:
oc apply -f bgppeer1.yaml
$ oc apply -f bgppeer1.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
创建 BGP
peer2
。创建一个文件,如
bgppeer2.yaml
,其内容类似以下示例:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 应用 BGP peer2 的配置:
oc apply -f bgppeer2.yaml
$ oc apply -f bgppeer2.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
创建 BGP 广告 1。
创建一个文件,如
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
创建 BGP 广告 2。
创建一个文件,如
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
4.3.4. 通过网络 VRF 公开服务 复制链接链接已复制到粘贴板!
您可以通过在网络接口上将 VRF 与 BGP 对等点关联,通过虚拟路由和转发(VRF)实例公开服务。
通过 BGP 对等点上的 VRF 公开服务只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
通过使用网络接口上的 VRF 通过 BGP 对等点公开服务,您可以将流量隔离到服务,配置独立路由决策,并在网络接口上启用多租户支持。
通过一个属于网络 VRF 的接口建立 BGP 会话,MetalLB 可以通过该接口公告服务,并让外部流量通过这个接口访问该服务。但是,network VRF 路由表与 OVN-Kubernetes 使用的默认 VRF 路由表不同。因此,流量无法访问 OVN-Kubernetes 网络基础架构。
要启用定向到服务的流量访问 OVN-Kubernetes 网络基础架构,您必须配置路由规则来为网络流量定义下一跃点。如需更多信息,请参阅附加资源部分中的"使用 MetalLB 管理对称路由"中的 NodeNetworkConfigurationPolicy
资源。
这些是通过带有 BGP peer 的网络 VRF 公开服务的高级步骤:
- 定义 BGP peer 并添加网络 VRF 实例。
- 为 MetalLB 指定 IP 地址池。
- 为 MetalLB 配置 BGP 路由广告,以使用指定的 IP 地址池以及与 VRF 实例关联的 BGP 对等点公告路由。
- 部署服务来测试配置。
先决条件
-
已安装 OpenShift CLI(
oc
)。 -
以具有
cluster-admin
权限的用户身份登录。 -
您定义了一个
NodeNetworkConfigurationPolicy
,将虚拟路由和转发(VRF)实例与网络接口关联。有关完成此先决条件的更多信息,请参阅附加资源部分。 - 在集群中安装了 MetalLB。
流程
创建
BGPPeer
自定义资源 (CR):创建一个文件,如
frrviavrf.yaml
,其内容类似以下示例:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定要与 BGP peer 关联的网络 VRF 实例。MetalLB 可以公告服务并根据 VRF 中的路由信息做出路由决策。
注意您必须在
NodeNetworkConfigurationPolicy
CR 中配置此网络 VRF 实例。如需更多信息,请参阅附加资源。运行以下命令,应用 BGP peer 的配置:
oc apply -f frrviavrf.yaml
$ oc apply -f frrviavrf.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
创建一个
IPAddressPool
CR:创建一个文件,如
first-pool.yaml
,其内容类似以下示例:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,为 IP 地址池应用配置:
oc apply -f first-pool.yaml
$ oc apply -f first-pool.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
创建
BGPAdvertisement
CR:创建一个文件,如
first-adv.yaml
,其内容类似以下示例:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 在本例中,MetalLB 将来自
first-pool
IP 地址池的 IP 地址范围公告给frrviavrf
BGP peer。
运行以下命令,应用 BGP 公告的配置:
oc apply -f first-adv.yaml
$ oc apply -f first-adv.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
创建一个
Namespace
,Deployment
, 和Service
CR:创建一个文件,如
deploy-service.yaml
,其内容类似以下示例:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,为命名空间、部署和服务应用配置:
oc apply -f deploy-service.yaml
$ oc apply -f deploy-service.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
运行以下命令来识别 MetalLB speaker pod:
oc get -n metallb-system pods -l component=speaker
$ oc get -n metallb-system pods -l component=speaker
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME READY STATUS RESTARTS AGE speaker-c6c5f 6/6 Running 0 69m
NAME READY STATUS RESTARTS AGE speaker-c6c5f 6/6 Running 0 69m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,在 speaker pod 中验证 BGP 会话的状态是否为
Established
,替换变量以匹配您的配置:oc exec -n metallb-system <speaker_pod> -c frr -- vtysh -c "show bgp vrf <vrf_name> neigh"
$ oc exec -n metallb-system <speaker_pod> -c frr -- vtysh -c "show bgp vrf <vrf_name> neigh"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
BGP neighbor is 192.168.30.1, remote AS 200, local AS 100, external link BGP version 4, remote router ID 192.168.30.1, local router ID 192.168.30.71 BGP state = Established, up for 04:20:09 ...
BGP neighbor is 192.168.30.1, remote AS 200, local AS 100, external link BGP version 4, remote router ID 192.168.30.1, local router ID 192.168.30.71 BGP state = Established, up for 04:20:09 ...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令验证该服务是否已正确公告:
oc exec -n metallb-system <speaker_pod> -c frr -- vtysh -c "show bgp vrf <vrf_name> ipv4"
$ oc exec -n metallb-system <speaker_pod> -c frr -- vtysh -c "show bgp vrf <vrf_name> ipv4"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.3.5. BGP 对等配置示例 复制链接链接已复制到粘贴板!
4.3.5.1. 示例:限制节点连接到 BGP peer 复制链接链接已复制到粘贴板!
您可以指定节点选择器字段来控制哪些节点可以连接到 BGP 对等点。
4.3.5.2. 示例:为 BGP peer 指定 BFD 配置集 复制链接链接已复制到粘贴板!
您可以指定一个 BFD 配置集,以与 BGP 对等点关联。BFD 复杂的 BGP 通过单独提供与 BGP 间通信故障的更快速检测。
删除双向转发检测 (BFD) 配置集并删除添加到边框网关协议 (BGP) 对等资源中的 bfdProfile
不会禁用 BFD。相反,BGP 对等点开始使用默认的 BFD 配置集。要从 BGP peer 资源禁用 BFD,请删除 BGP 对等配置,并在没有 BFD 配置集的情况下重新创建它。如需更多信息,请参阅 BZ#2050824。
4.3.5.3. 示例:为双栈网络指定 BGP 对等点 复制链接链接已复制到粘贴板!
要支持双栈网络,请为 IPv4 添加一个 BGP peer 自定义资源,并为 IPv6 添加一个 BGP peer 自定义资源。
4.3.5.4. 示例:为未编号的 BGP 对等指定 BGP 对等点 复制链接链接已复制到粘贴板!
spec.interface
字段只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
要配置未编号的 BGP peering,请使用以下示例配置在 spec.interface
字段中指定接口:
要使用 interface
字段,您必须在两个 BGP 对等点之间建立点对点、第 2 层连接。您可以将未编号的 BGP 对等用于 IPv4、IPv6 或双栈,但您必须启用 IPv6 RAs (Router Advertisements)。每个接口都限制为一个 BGP 连接。
如果使用此字段,则无法在 spec.bgp.routers.neighbors.address
字段中指定一个值。