本页面介绍了当新可用区加入多可用区部署时,您必须在多可用区部署的现有可用区中执行的必要配置。此配置可让您与新可用区建立连接。
1. 准备工作
您必须具备以下条件,才能在 Google Distributed Cloud (GDC) 网闸隔离环境中配置多可用区互联:
- 生成的 kubeconfig 文件和环境变量。如需了解详情,请参阅 IAM-R0004 运行手册。
- 具有对根管理员集群的临时访问权限的基础架构运维者 (IO)。如需了解详情,请参阅 IAM-R0005 运行手册。
2. 配置多可用区互连
在多可用区部署的每个可用区中配置
MultiZoneNetworkConfig资源:找到要交互的正确集群。如果根管理员集群正在运行,请使用根管理员集群的
kubeconfig。否则,请使用kubeconfig作为引导 Kind 集群。如需了解详情,请参阅 IAM-R0004 运行手册。在此处填充 kubeconfig 路径:KUBECONFIG=KUBECONFIG_PATH创建一个名为
multizone_network_config.yaml的 YAML 文件。将以下内容添加到该文件中:
apiVersion: system.private.gdc.goog/v1alpha1 kind: MultiZoneNetworkConfig metadata: name: multizone-network-config namespace: gpc-system spec: carrierType: CARRIER_TYPE zones: - zoneID: ZONE_1_ID asn: ZONE_1_ASN externalSubnets: - METERING_SUBNET_1 - zoneID: ZONE_2_ID asn: ZONE_2_ASN externalSubnets: - METERING_SUBNET_2 ports: - port: PORT_1 - port: PORT_2 portSetting: mtu: MTU替换以下内容:
CARRIER_TYPE:多可用区骨干网运营商类型。必须为L2或L3。ZONE_1_ID:GDC 区域中第一个可用区的 ID。ZONE_1_ASN:GDC 区域中第一个可用区的 BGP 自治系统编号 (ASN)。METERING_SUBNET_1:相应可用区中的按流量计费的子网。此字段必须填充关联区域的根管理员集群中zone-infra-cidrCIDRClaim资源的子网。此字段仅用于计量,不会影响对子网通告的控制。您必须使此字段与实际通告的子网保持同步。如果未指定此字段,则不会针对相应地区计量任何流量。ZONE_2_ID:GDC 区域中第二个可用区的 ID。ZONE_2_ASN:GDC 区域中第二个可用区的数据网络的 BGP ASN。METERING_SUBNET_2:相应可用区中的按流量计费的子网。此字段必须填充关联区域的根管理员集群中zone-infra-cidrCIDRClaim资源的子网。此字段仅用于计量,不会影响对子网通告的控制。您必须使此字段与实际通告的子网保持同步。如果未指定此字段,则不会针对相应地区计量任何流量。PORT_1:参与多区域互联的第一个端口。如需了解详情,请参阅配置端口。PORT_2:参与多可用区互联的第二个端口。如需了解详情,请参阅配置端口。MTU:应用于所有端口的 MTU 值。如果未指定,则默认值为 9216。
如需查看常见部署示例,请参阅多可用区配置示例。
将
multizone_network_config.yaml文件应用于集群:kubectl apply -f multizone_network_config.yaml --kubeconfig=KUBECONFIG_PATH验证
MultiZonetNetworkConfig资源的创建是否成功:kubectl get multizonenetworkconfig -n gpc-system --kubeconfig=KUBECONFIG_PATH以下示例显示了包含互连链接的输出:
NAME AGE READY multizone-network-config 26h True可选:检查互联 BGP 配置和状态的
MultiZoneNetworkPeeringConfig资源。实际的 BGP 配置由网络协调器设置,并存储在
MultiZoneNetworkPeeringConfig资源中。每个MultiZoneNetworkPeeringConfig资源都表示从一个可用区到另一个可用区的所有 BGP 配置。例如:- 名为
zone-1-zone-2-peering-config的MultiZoneNetworkPeeringConfig资源可能如下所示:
apiVersion: system.private.gdc.goog/v1alpha1 kind: MultiZoneNetworkPeeringConfig metadata: name: zone-1-zone-2-peering-config namespace: gpc-system spec: ... status: borderLeafSwitches: - blswID: 1 blswName: aa-aa-blsw01 evpnBGPSessions: - bgpSessionConfig: addressFamily: EVPN bfdConfig: bfdMode: MultiHopBFD localASN: 65501 localIP: 192.168.201.65/32 md5SecretRef: name: zone-1-blsw-1-zone-2-blsw-1-evpn-bgp-password namespace: gpc-system peerASN: 65502 peerIP: 192.168.202.65 sourceInterface: loopback2 bgpSessionStatus: prefixCounters: received: 4 sent: 23 sessionStatus: Up uptime: P6DT20H26M59S ipv4BGPSessions: - bgpSessionConfig: addressFamily: IPv4 bfdConfig: bfdMode: PlainBFD localASN: 65501 localIP: 192.168.208.0/31 md5SecretRef: name: zone-1-blsw-1-zone-2-blsw-1-ipv4-bgp-password namespace: gpc-system peerASN: 65502 peerIP: 192.168.208.1 bgpSessionStatus: prefixCounters: received: 11 sent: 11 sessionStatus: Up uptime: P6DT20H27M1S port: port: 6此示例的状态包含从区域 1 到区域 2 的所有 BGP 会话配置和 BGP 会话状态。
- 对于 L3 运营商模式,表示从一个可用区到 L3 运营商的所有 IPv4 BGP 会话的
MultiZoneNetworkPeeringConfig资源(名为zone-1-ipv4-peering-config)可能如下所示:
apiVersion: system.private.gdc.goog/v1alpha1 kind: MultiZoneNetworkPeeringConfig metadata: name: zone-1-ipv4-peering-config namespace: gpc-system spec: ... status: borderLeafSwitches: - blswID: 1 blswName: aa-aa-blsw01 ipv4BGPSessions: - bgpSessionConfig: addressFamily: IPv4 bfdConfig: bfdMode: PlainBFD localASN: 65501 localIP: 192.168.208.0/31 md5SecretRef: name: zone-1-blsw-1-port-6-ipv4-bgp-password namespace: gpc-system peerASN: 65502 peerIP: 192.168.208.1 bgpSessionStatus: prefixCounters: received: 11 sent: 11 sessionStatus: Up uptime: P6DT20H27M1S port: port: 6- 名为
2.1. 配置端口
ports 配置取决于运营商类型。设置 ports 时,请遵循以下规则:
如果运营商类型为
L2,您必须在Spec.Ports中指定n个端口,其中n等于可用区数量乘以 2。第一个端口必须连接到第一个邻近区域(按区域 ID 排序)的第一个边界叶交换机(按交换机名称排序)。第二个端口必须连接到第一个邻近区域的第二个边界叶交换机。第三个端口连接到第二个邻近区域的第一个边界叶交换机。后续连接遵循此模式。如需了解相关说明,请参阅 L2 载波部署。如果运营商类型为
L3,则必须在Spec.Ports中指定两个端口。当前可用区中的两个边界叶交换机必须使用第一个端口单独连接到第一个提供商边缘设备,并且必须使用第二个端口单独连接到第二个提供商边缘设备。如需了解详情,请参阅 L3 运营商部署。
2.2. 多可用区配置示例
本部分包含常见部署示例。
2.2.1. L2 运营商部署
此部署具有以下配置:
- 三个可用区,ASN 分别为 65501、65502、65503
- L2 载波
此部署的逻辑连接如下图所示:

以下是 MultiZoneNetworkConfig YAML 文件示例:
apiVersion: system.private.gdc.goog/v1alpha1
kind: MultiZoneNetworkConfig
metadata:
name: multizone-network-config
namespace: gpc-system
spec:
carrierType: L2
zones:
- zoneID: 1
asn: 65501
- zoneID: 2
asn: 65502
- zoneID: 3
asn: 65503
ports:
- port: 10
- port: 11
- port: 12
- port: 13
2.2.2. L3 运营商部署
此部署具有以下配置:
- 三个可用区,ASN 分别为 65501、65502、65503
- L3 运营商
此部署的逻辑连接如下图所示:

以下是 MultiZoneNetworkConfig YAML 文件示例:
apiVersion: system.private.gdc.goog/v1alpha1
kind: MultiZoneNetworkConfig
metadata:
name: multizone-network-config
namespace: gpc-system
spec:
carrierType: L3
zones:
- zoneID: 1
asn: 65501
carrierASN: 60010
- zoneID: 2
asn: 65502
carrierASN: 60010
- zoneID: 3
asn: 65503
carrierASN: 60010
ports:
- port: 10
- port: 11
2.3. 可选:配置多区域 BFD 身份验证
在所有多区域 IPv4 和 EVPN 会话中配置了双向转发检测 (BFD)。默认情况下,系统会配置单跃点纯 BFD。按照本部分中的说明部署具有身份验证的多跃点 BFD:
为多区域 EVPN BGP 会话启用双向转发检测 (BFD) 身份验证。如需建立并激活 BFD 会话,请确保两个可用区中的配对 BGP 会话配置了相同的 BFD 身份验证密钥 ID 和密钥字符串:
定义密钥类型。我们建议在引导加载程序机器上执行此命令。出于安全考虑,请至少使用 SHA-1 作为密钥。如果需要,请为配置使用更安全的密钥:
export KEY_TYPE=SHA1设置密钥 ID 和密钥字符串。密钥 ID 在各可用区配对的互连会话中必须是唯一的。确定未使用的密钥 ID 并将其分配给变量:
export KEY_ID=1使用
chronyc keygen生成 SHA-1 身份验证密钥:CHRONY_OUTPUT=$(chronyc keygen ${KEY_ID:?} ${KEY_TYPE:?})输出示例:
echo $CHRONY_OUTPUT 1 SHA1 HEX:887F1B88085BD0BDE4458EA7C2C4393C50A498EF提取身份验证密钥并进行验证:
export KEY_STR=$(echo ${CHRONY_OUTPUT:?} | awk '{ split($3,key,":"); print key[2]}')echo $KEY_STR 887F1B88085BD0BDE4458EA7C2C4393C50A498EF将 BFD 身份验证信息修补到所选的互连会话:
kubectl --kubeconfig=KUBECONFIG_PATH patch secret zone-LOCAL_ZONE_ID-blsw-LOCAL_BLSW_ID-zone-REMOTE_ZONE_ID-blsw-REMOTE_BLSWID-bfd-auth-key -n gpc-system -p='{ "stringData": { "bfdKeyID": "'"${KEY_ID}"'", "bfdKeyValue": "'"${KEY_STR}"'" } }'验证 BFD 会话是否正在运行:
switch# show bfd neighbors vrf default验证
State字段是否显示值Up,以及Type字段是否为SH或MH:OurAddr NeighAddr LD/RD RH/RS Holdown(mult) State Int Vrf Type BSID 192.168.208.31 192.168.208.30 1090519041/1090519042 Up 5237(3) Up Eth1/11 default SH N/A 192.168.208.91 192.168.208.90 1090519042/1090519042 Up 5624(3) Up Eth1/12 default SH N/A 192.168.202.66 192.168.201.65 1090519071/1090519060 Up 629(3) Up Lo2 default MH N/A 192.168.202.66 192.168.201.66 1090519072/1090519061 Up 545(3) Up Lo2 default MH N/A
2.4. 可选:配置多区域 BGP 密码
边界网关协议 (BGP) 密码有两种类型:IPv4 BGP 会话密码和 EVPN BGP 会话密码。
默认情况下,所有 BGP 密码均为空。请按照本部分中的说明更新密码。
2.4.1. 更新 IPv4 BGP 密码
如果使用 L2 运营商,请更新应用于当前区域中的一个边界叶交换机与另一个区域中的另一个边界叶交换机之间的 IPv4 BGP 会话的 IPv4 BGP 密码:
kubectl patch secret zone-LOCAL_ZONE_ID-blsw-LOCAL_BLSW_ID-zone-REMOTE_ZONE_ID-blsw-REMOTE_BLSWID-ipv4-bgp-password -p='{"stringData":{"password":"PASSWORD"}}'
替换以下内容:
LOCAL_ZONE_ID:当前时区的数字 ID。LOCAL_BLSW_ID:当前可用区边界 Leaf 交换机的数字 ID。此值必须为1或2REMOTE_ZONE_ID:远程可用区的数字 ID。REMOTE_BLSW_ID:远程可用区边界叶交换机的数字 ID。此值必须为1或2PASSWORD:应用于本地边界叶交换机和远程边界叶交换机之间 IPv4 BGP 会话的 BGP 密码。
如果使用 L3 运营商,请更新应用于当前区域中一个边界叶交换机与 L3 运营商中的提供商边缘设备之间的 IPv4 BGP 会话的 IPv4 BGP 密码:
kubectl patch secret zone-LOCAL_ZONE_ID-blsw-LOCAL_BLSW_ID-port-PORT_ID-ipv4-bgp-password -p='{"stringData":{"password":"PASSWORD"}}' -n gpc-system --kubeconfig=KUBECONFIG_PATH
替换以下内容:
LOCAL_ZONE_ID:当前时区的数字 ID。LOCAL_BLSW_ID:当前可用区边界 Leaf 交换机的数字 ID。此值必须为1或2。PORT_ID:连接到提供商边缘设备的以太网端口的索引。PASSWORD:应用于本地边界 Leaf 交换机与提供商边缘设备之间 IPv4 BGP 会话的 BGP 密码。
2.4.2. 更新 EVPN BGP 密码
如需更新当前可用区中的一个边界 Leaf 交换机与另一个可用区中的另一个边界 Leaf 交换机之间的 EVPN BGP 会话所应用的 EVPN BGP 密码,请运行以下命令:
kubectl patch secret zone-LOCAL_ZONE_ID-blsw-LOCAL_BLSW_ID-zone-REMOTE_ZONE_ID-blsw-REMOTE_BLSWID-evpn-bgp-password -p='{"stringData":{"password":"PASSWORD"}}' -n gpc-system --kubeconfig=KUBECONFIG_PATH
替换以下内容:
LOCAL_ZONE_ID:当前时区的数字 ID。LOCAL_BLSW_ID:当前可用区边界 Leaf 交换机的数字 ID。此值必须为1或2。REMOTE_ZONE_ID:远程可用区的数字 ID。REMOTE_BLSW_ID:远程可用区边界叶交换机的数字 ID。此值必须为1或2。PASSWORD:应用于本地边界叶交换机和远程边界叶交换机之间的 EVPN BGP 会话的 BGP 密码。
3. 高级配置选项
本部分介绍了多区域网络 API 提供的高级配置选项。
3.1. 配置运营商 BGP 配置替换
默认情况下,边界叶交换机使用默认 IP 地址分配与运营商 PE 设备建立 BGP 对等互连连接。通过检查 MultiZoneNetworkPeeringConfig 资源 zone-<ZONE_ID>-ipv4-peering-config,可以找到正在使用的特定 BGP 对等互连 IP 地址。例如:
apiVersion: system.private.gdc.goog/v1alpha1
kind: MultiZoneNetworkPeeringConfig
metadata:
name: zone-1-ipv4-peering-config
namespace: gpc-system
spec: ...
status:
borderLeafSwitches:
- blswID: 1
blswName: aa-aa-blsw01
ipv4BGPSessions:
- bgpSessionConfig:
addressFamily: IPv4
bfdConfig:
bfdMode: PlainBFD
localASN: 65501
localIP: 192.168.208.0/31
md5SecretRef:
name: zone-1-blsw-1-port-6-ipv4-bgp-password
namespace: gpc-system
peerASN: 65502
peerIP: 192.168.208.1
...
如需使用自定义 IP 地址方案,请按照以下步骤替换默认运营商 BGP 配置:
- 运行
kubectl edit MultiZoneNetworkPeeringConfig zone-<ZONE_ID>-ipv4-peering-config -n gpc-system,在spec.Peerings下添加carrierBGPConfigOverride部分。示例:
apiVersion: system.private.gdc.goog/v1alpha1
kind: MultiZoneNetworkPeeringConfig
metadata:
name: zone-1-ipv4-peering-config
namespace: gpc-system
...
spec:
peeringConfigType: L3-IPv4
peerings:
- carrierBGPConfigOverride:
peeringIP:
localIP: 192.168.78.5/31
peerIP: 192.168.78.4
peerA:
blswID: 1
port:
port: 11
zoneID: 1
...
在此示例中,指定 carrierBGPConfigOverride.peeringIP 会将对等互连子网替换为 192.168.78.4/31。
3.2. 配置端口替换
Google 建议所有区域中的所有边界 Leaf 交换机都使用同一组端口。此端口配置适用于需要对端口进行精细控制的场景。
本地地区是指您要部署的地区。
远程地区是指同一多地区世界中的其他地区。
默认情况下,您必须使用同一区域的两个边界 Leaf 交换机上的相同端口来连接到另一个区域或运营商。不过,您可以启用端口替换选项,以指定用于此区域间连接的其他端口。
如需配置端口替换功能,请按以下步骤操作:
启用
portOverride功能:kubectl patch MultiZoneNetworkConfig multizone-network-config -n gpc-system --type='merge' -p '{"spec":{"enablePortOverride":true}}' --kubeconfig=KUBECONFIG_PATH确定本地区域边界叶交换机和远程区域边界叶交换机,修改本地边界叶交换机端口:
kubectl edit MultiZoneNetworkPeeringConfig zone-ZONE_1_ID-zone-ZONE_2_ID -n gpc-system --kubeconfig=KUBECONFIG_PATH替换以下内容:
ZONE_1_ID:本地可用区 ID 和远程可用区 ID 中较小的可用区 ID。例如,如果本地可用区 ID 为1,远程可用区 ID 为2,则在此处提供值1。ZONE_2_ID:本地可用区 ID 和远程可用区 ID 中较大的可用区 ID。
MultiZoneNetworkPeeringConfig资源可能如下所示:apiVersion: system.private.gdc.goog/v1alpha1 kind: MultiZoneNetworkPeeringConfig metadata: name: zone-2-zone-3-peering-config namespace: gpc-system spec: peeringConfigType: L2 peerings: - peerA: blswID: 1 port: port: 12 zoneID: 2 peerB: blswID: 1 port: port: 12 zoneID: 3 secrets: - secretRef: name: zone-2-blsw-1-zone-3-blsw-1-ipv4-bgp-password namespace: gpc-system type: ipv4-bgp-password - secretRef: name: zone-2-blsw-1-zone-3-blsw-1-evpn-bgp-password namespace: gpc-system type: evpn-bgp-password - secretRef: name: zone-2-blsw-1-zone-3-blsw-1-bfd-auth-key namespace: gpc-system type: bfd-auth-key - peerA: blswID: 1 port: port: 12 zoneID: 2 peerB: blswID: 2 port: port: 12 zoneID: 3 secrets: - secretRef: name: zone-2-blsw-2-zone-3-blsw-2-ipv4-bgp-password namespace: gpc-system type: ipv4-bgp-password - secretRef: name: zone-2-blsw-2-zone-3-blsw-2-evpn-bgp-password namespace: gpc-system type: evpn-bgp-password - secretRef: name: zone-2-blsw-2-zone-3-blsw-2-bfd-auth-key namespace: gpc-system type: bfd-auth-key您必须更新构成可用区对等互连的其中一个边界叶交换机的端口值。在
Spec.peerings字段中,查找跨区域对等互连。在此示例中,可用区 2 和可用区 3 之间存在以下对等互连连接:peerA: blswID: 1 port: port: 12 zoneID: 2 peerB: blswID: 2 port: port: 12 zoneID: 3输出显示两个边界 Leaf 交换机,分别由
blswID: 1和blswID: 2标识。对于由blswID: 1标识的第一个边界叶交换机,请将端口更新为20的新值:peerA: blswID: 1 port: port: 20 zoneID: 2 peerB: blswID: 2 port: port: 12 zoneID: 3在此示例中,我们将第一个边界叶交换机的端口值更新为
port: 20。