30.6. 配置 MetalLB BGP peer
作为集群管理员,您可以添加、修改和删除边框网关协议(BGP)对等点。MetalLB Operator 使用 BGP peer 自定义资源来标识 MetalLB speaker
pod 联系的对等者启动 BGP 会话。对等点接收 MetalLB 分配给服务的负载均衡器 IP 地址的路由公告。
30.6.1. 关于 BGP peer 自定义资源
下表中描述了 BGP peer 自定义资源的字段。
字段 | 类型 | 描述 |
---|---|---|
|
| 指定 BGP peer 自定义资源的名称。 |
|
| 指定 BGP peer 自定义资源的命名空间。 |
|
|
为 BGP 会话的本地末尾指定 Autonomous System 号。在您添加的所有 BGP peer 自定义资源中指定相同的值。范围为 |
|
|
为 BGP 会话的远程端指定 Autonomous System 号。范围为 |
|
| 指定建立 BGP 会话的对等点的 IP 地址。 |
|
| 可选:指定建立 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 会话,除非此字段设置为 |
passwordSecret
字段与 password
字段相互排斥,包含对包含密码的 secret 的引用。设置这两个字段会导致解析失败。
30.6.2. 配置 BGP peer
作为集群管理员,您可以添加 BGP peer 自定义资源来与网络路由器交换路由信息,并为服务公告 IP 地址。
先决条件
-
安装 OpenShift CLI(
oc
)。 -
以具有
cluster-admin
特权的用户身份登录。 - 使用 BGP 公告配置 MetalLB。
流程
创建一个文件,如
bgppeer.yaml
,其内容类似以下示例:apiVersion: metallb.io/v1beta2 kind: BGPPeer metadata: namespace: metallb-system name: doc-example-peer spec: peerAddress: 10.0.0.1 peerASN: 64501 myASN: 64500 routerID: 10.10.10.10
应用 BGP peer 的配置:
$ oc apply -f bgppeer.yaml
30.6.3. 为给定地址池配置一组特定的 BGP 对等组
此流程演示了如何:
-
配置一组地址池(
pool1
和pool2
)。 -
配置一组 BGP 对等点(
pe1
和peer2
)。 -
配置 BGP 广告,将
pool1
分配给peer1
,将pool2
分配给peer2
。
先决条件
-
安装 OpenShift CLI(
oc
)。 -
以具有
cluster-admin
特权的用户身份登录。
流程
创建地址池
pool1
。创建一个文件,如
ipaddresspool1.yaml
,其内容类似以下示例:apiVersion: metallb.io/v1beta1 kind: IPAddressPool metadata: namespace: metallb-system name: pool1 spec: addresses: - 4.4.4.100-4.4.4.200 - 2001:100:4::200-2001:100:4::400
为 IP 地址池
pool1
应用配置:$ oc apply -f ipaddresspool1.yaml
创建地址池
pool2
。创建一个文件,如
ipaddresspool2.yaml
,其内容类似以下示例:apiVersion: metallb.io/v1beta1 kind: IPAddressPool metadata: namespace: metallb-system name: pool2 spec: addresses: - 5.5.5.100-5.5.5.200 - 2001:100:5::200-2001:100:5::400
为 IP 地址池
pool2
应用配置:$ oc apply -f ipaddresspool2.yaml
创建 BGP
peer1
。创建一个文件,如
bgppeer1.yaml
,内容类似以下示例:apiVersion: metallb.io/v1beta2 kind: BGPPeer metadata: namespace: metallb-system name: peer1 spec: peerAddress: 10.0.0.1 peerASN: 64501 myASN: 64500 routerID: 10.10.10.10
应用 BGP peer 的配置:
$ oc apply -f bgppeer1.yaml
创建 BGP
peer2
。创建一个文件,如
bgppeer2.yaml
,其内容类似以下示例:apiVersion: metallb.io/v1beta2 kind: BGPPeer metadata: namespace: metallb-system name: peer2 spec: peerAddress: 10.0.0.2 peerASN: 64501 myASN: 64500 routerID: 10.10.10.10
应用 BGP peer2 的配置:
$ oc apply -f bgppeer2.yaml
创建 BGP 广告 1。
创建一个文件,如
bgpadvertisement1.yaml
,内容类似以下示例:apiVersion: metallb.io/v1beta1 kind: BGPAdvertisement metadata: name: bgpadvertisement-1 namespace: metallb-system spec: ipAddressPools: - pool1 peers: - peer1 communities: - 65535:65282 aggregationLength: 32 aggregationLengthV6: 128 localPref: 100
应用配置:
$ oc apply -f bgpadvertisement1.yaml
创建 BGP 广告 2。
创建一个文件,如
bgpadvertisement2.yaml
,内容类似以下示例:apiVersion: metallb.io/v1beta1 kind: BGPAdvertisement metadata: name: bgpadvertisement-2 namespace: metallb-system spec: ipAddressPools: - pool2 peers: - peer2 communities: - 65535:65282 aggregationLength: 32 aggregationLengthV6: 128 localPref: 100
应用配置:
$ oc apply -f bgpadvertisement2.yaml
30.6.4. BGP 对等配置示例
30.6.4.1. 示例:限制节点连接到 BGP peer
您可以指定节点选择器字段来控制哪些节点可以连接到 BGP 对等点。
apiVersion: metallb.io/v1beta2 kind: BGPPeer metadata: name: doc-example-nodesel namespace: metallb-system spec: peerAddress: 10.0.20.1 peerASN: 64501 myASN: 64500 nodeSelectors: - matchExpressions: - key: kubernetes.io/hostname operator: In values: [compute-1.example.com, compute-2.example.com]
30.6.4.2. 示例:为 BGP peer 指定 BFD 配置集
您可以指定一个 BFD 配置集,以与 BGP 对等点关联。BFD 复杂的 BGP 通过单独提供与 BGP 间通信故障的更快速检测。
apiVersion: metallb.io/v1beta2 kind: BGPPeer metadata: name: doc-example-peer-bfd namespace: metallb-system spec: peerAddress: 10.0.20.1 peerASN: 64501 myASN: 64500 holdTime: "10s" bfdProfile: doc-example-bfd-profile-full
删除双向转发检测 (BFD) 配置集并删除添加到边框网关协议 (BGP) 对等资源中的 bfdProfile
不会禁用 BFD。相反,BGP 对等点开始使用默认的 BFD 配置集。要从 BGP peer 资源禁用 BFD,请删除 BGP 对等配置,并在没有 BFD 配置集的情况下重新创建它。如需更多信息,请参阅 BZ#2050824。
30.6.4.3. 示例:为双栈网络指定 BGP 对等点
要支持双栈网络,请为 IPv4 添加一个 BGP peer 自定义资源,并为 IPv6 添加一个 BGP peer 自定义资源。
apiVersion: metallb.io/v1beta2 kind: BGPPeer metadata: name: doc-example-dual-stack-ipv4 namespace: metallb-system spec: peerAddress: 10.0.20.1 peerASN: 64500 myASN: 64500 --- apiVersion: metallb.io/v1beta2 kind: BGPPeer metadata: name: doc-example-dual-stack-ipv6 namespace: metallb-system spec: peerAddress: 2620:52:0:88::104 peerASN: 64500 myASN: 64500