本文档介绍如何实现支持边界网关协议 (BGP) 的平面模式网络模型。在实现支持 BGP 的网络模型时,BGP 会动态确保不同 L2 网域中的 pod 可以相互通信。
如需详细了解平面模式网络模型,请参阅平面模式与孤岛模式网络模型。
如何实现使用 BGP 的平面模式网络
如需在支持 BGP 的平面模式网络上实现集群,请对集群的 cluster.yaml
文件进行以下更改:
- 在集群资源中将
spec.clusterNetwork.advancedNetworking
字段设置为true
。 - 在集群资源中将
spec.clusterNetwork.flatIPv4
字段设置为true
。 - 当
spec.clusterNetwork.flatIPv4
设置为true
时,字段spec.clusterNetwork.pods.cidrBlocks
会被忽略,因此可予以省略。但是,您需要在 yaml 文件中定义ClusterCIDRConfigs
部分(按节点、按节点池和/或按集群)。如需了解详情,请参阅下面的cluster.yaml
文件示例。 - 将
NetworkGatewayGroup
资源附加到cluster.yaml
文件,并指定要用于 BGP 对等互连的浮动 IP。确保名称为default
,且命名空间为集群命名空间。 - 将
FlatIPMode
和BGPPeer
资源附加到cluster.yaml
文件。FlatIPMode
资源的名称必须为default
,且所有资源都必须位于集群命名空间中。
对于预览版,仅支持 IPv4 BGP 对等互连和会话。不过,如果您的环境支持多协议 BGP (MP-BGP),则可以通过这些 IPv4 会话通告 IPv4 和 IPv6 路由。不支持 IPv6 BGP 对等连接配置。
以下 cluster.yaml
文件摘录显示了如何实现支持 BGP 的平面模式网络。请注意,此摘录中显示的 IP 地址只是示例,您需要将其替换为专属 IP 地址:
apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
name: bm
namespace: cluster-bm
spec:
...
clusterNetwork:
advancedNetworking: true
flatIPv4: true
... (other cluster config omitted)
apiVersion: networking.gke.io/v1
kind: NetworkGatewayGroup
metadata:
name: default
namespace: cluster-bm
spec:
floatingIPs:
- 10.0.1.100
- 10.0.2.100
....
apiVersion: baremetal.cluster.gke.io/v1alpha1
kind: FlatIPMode
metadata:
name: default
namespace: cluster-bm
spec:
enableBGPIPv4: true
enableBGPIPv6: false
peerSelector:
flatip-peer: "true"
....
apiVersion: networking.gke.io/v1
kind: BGPPeer
metadata:
name: bgppeer1
namespace: cluster-bm
labels:
flatip-peer: "true"
spec:
localASN: 65001
peerASN: 65000
peerIP: 10.0.1.254
sessions: 2
....
apiVersion: networking.gke.io/v1
kind: BGPPeer
metadata:
name: bgppeer2
namespace: cluster-bm
labels:
flatip-peer: "true"
spec:
localASN: 65001
peerASN: 65000
peerIP: 10.0.2.254
sessions: 2
....
apiVersion: baremetal.cluster.gke.io/v1alpha1
kind: ClusterCIDRConfig
metadata:
name: cluster-wide-1
namespace: cluster-bm
spec:
ipv4:
cidr: "192.168.0.0/16"
perNodeMaskSize: 24