网络系统包含以下组件:
管理网络:带外管理网络,包括以下两种类型的交换机:
- 管理交换机
- 管理聚合开关
数据平面网络:用于传输用户流量的网络,包括以下三种类型的交换机:
- 架顶式 (TOR) 交换机
- 汇总开关
- 边界叶交换机
如果交换机上的当前固件不是预期版本,网络引导加载程序会尝试将交换机升级到 Google Distributed Cloud (GDC) 隔离版本的预期交换机操作系统版本。
12.1. 准备工作
交换机可能随附出厂默认设置。在开始之前,请重置所有开关以移除任何现有配置。为此,请使用串行控制台进行连接,然后运行以下命令:
write erase
移除现有开关配置后,重新加载开关:
reload in 5
12.2. 网络安装
请按以下步骤完成网络安装:
- 开启所有交换机。
在引导机器上使用
sudoroot 访问权限启动网络引导加载程序:gdcloud system network install --config PATH_TO_CELLCFG --upgrade-switch-os将
PATH_TO_CELLCFG替换为cellcfg文件的路径。如果此命令失败,并显示以下错误消息:
root@bootstrapper:~/hams/gdc/output/cellcfg# gdcloud system network install --config /root/hams/gdc/output/cellcfg --upgrade-switch-os Error: failed to initialize KIND: could not determine harbor address (no match between local and docker hostnames): could not find a match再次运行
init命令以解决此错误:gdcloud system network init --config PATH_TO_CELLCFG
保持开关处于开启状态。交换机通过 PowerOn Auto Provisioning (POAP) 启动序列从引导机器远程自动安装自身。
监控引导加载程序日志,确保交换机按以下顺序启动:
- 管理开关
1。 - 其他管理交换机和管理聚合交换机。
- 数据网络开关。
- 管理开关
继续监控引导日志。完成上述步骤后,开关会连接。引导加载程序通过 API 在管理交换机和数据交换机上安装其他配置。
等待引导日志显示消息
Successfully bootstrapped all switches.
12.3. 引导详情
使用 POAP 启动序列来引导网络中的所有交换机,如下所示:
- 将引导机器连接到管理交换机。
- 将管理聚合交换机连接到管理交换机。
- 连接同一机架中的其余交换机。
- 将管理聚合交换机连接到另一个机架。
- 连接所有其他交换机。
引导机器使用 ./cellcfg 路径中的交换机 YAML 文件生成交换机配置。所有交换机都使用 PowerOn Auto Provisioning (POAP) 启动序列来接收其配置。在硬件 3.0 中,网络交换机接收包含其最终配置的 POAP 文件。交换机完成 POAP 后,会自动重新启动。
重启后,开关必须与 ./cellcfg 路径中开关的 YAML 文件保持一致。引导机器会向所有交换机发送请求,以确保交换机连接和配置成功。
12.4. 引导后路由配置
在网络引导过程之后,配置引导加载程序的路由,以便为即将到来的引导任务做好准备。
12.4.1. 查找数据平面网关
数据平面网关是数据平面网络的网关 IP 地址。设置网关 IP 地址,以便与数据层面网络中的其他服务进行通信。
如需查找数据平面网关 IP 地址,请按以下步骤操作:
- 在
cellcfg文件夹中,找到kub-ipam.yaml文件。 查找名为
control-plane-subnet的SubnetClaim资源:yq eval -r ' select(.kind == "SubnetClaim" and .metadata.name == "control-plane-subnet") | .spec.ipv4Spec.staticReservedIpRanges[] | select(.type == "GatewayReservation") | .ipRange.startIPAddress ' PATH_TO_KUB_IPAM_FILE将
PATH_TO_KUB_IPAM_FILE替换为cellcfg/kub-ipam.yaml文件的路径。在
spec.ipv4Spec部分中找到列为type: GatewayReservation的网关 IP 地址。例如,数据平面接口的网关 IP 地址为172.19.0.1:# Source: kub-ipam-assets/templates/subnet_claims.yaml apiVersion: system.private.gdc.goog/v1alpha1 kind: SubnetClaim metadata: name: control-plane-subnet namespace: root labels: subnetclaims.system.private.gdc.goog/usage: "server" annotations: lcm.private.gdc.goog/claim-by-force: "true" helm.sh/resource-policy: keep spec: category: ExternalOverlayNetwork overlayNetwork: External cidrClaimName: control-plane-cidr ipv4Spec: staticReservedIpRanges: - ipRange: size: 1 startIPAddress: 172.19.0.1 type: GatewayReservation
12.4.2. 在引导加载程序上为路由创建脚本
创建脚本以创建路线:
bash << 'EOF'
#!/bin/bash
SCRIPT_PATH="/usr/local/sbin/add-routes.sh"
SERVICE_PATH="/usr/lib/systemd/system/add-routes.service"
MGMT_GATEWAY=MGMT_GATEWAY
MGMT_CIDR=MGMT_CIDR
MGMT_INTERFACE=MGMT_INTERFACE
BOND_GATEWAY=DATA_GATEWAY
rm -rf "$SCRIPT_PATH" 2>/dev/null
touch "$SCRIPT_PATH"
rm -rf "$SERVICE_PATH" 2>/dev/null
touch "$SERVICE_PATH"
echo -e '#!/bin/bash\n' > "$SCRIPT_PATH"
echo "ip route del $MGMT_CIDR via $MGMT_GATEWAY dev $MGMT_INTERFACE proto static" >> "$SCRIPT_PATH"
echo "ip route add $MGMT_CIDR via $MGMT_GATEWAY dev $MGMT_INTERFACE proto static" >> "$SCRIPT_PATH"
echo "ip route del default via $BOND_GATEWAY dev bond0 proto static" >> "$SCRIPT_PATH"
echo "ip route add default via $BOND_GATEWAY dev bond0 proto static" >> "$SCRIPT_PATH"
chmod +x "$SCRIPT_PATH"
echo -e "[Unit]\nDescription=Add Routes Service\nAfter=network.target\n\n[Service]\nType=simple\nExecStart=/usr/local/sbin/add-routes.sh\n\n[Install]\nWantedBy=default.target" > "$SERVICE_PATH"
systemctl daemon-reload
systemctl enable add-routes.service
systemctl restart add-routes.service
echo -e "\n ### add-routes.sh script file path ###"
ls -l $SCRIPT_PATH
echo -e "\n ### add-routes.service file path ###"
ls -l $SERVICE_PATH
echo -e "\n ### add-routes.service status ###"
systemctl status add-routes.service
echo -e "\n ### Show if add-routes.service is enabled at boot ###"
systemctl is-enabled add-routes.service
echo -e "\n ### Show the just added route to ens15f0 ###"
ip route show | grep ens15f0
echo -e "\n ### Show the just added default route ###"
ip route show | grep default
EOF
替换以下内容:
MGMT_GATEWAY:查找管理 IP、CIDR 和网关地址部分中的网关地址。MGMT_CIDR:查找管理 IP、CIDR 和网关地址部分中的管理 CIDRMGMT_INTERFACE:管理接口名称示例为ens15f0。可以使用cellcfg/serv-core.yaml中的 MAC 地址来确定哪个接口用于管理网络。DATA_GATEWAY:查找数据平面网关部分中的网关 IP 地址。
此代码段会创建 systemd 服务和脚本,如下所示:
SCRIPT_PATH="/usr/local/sbin/add-routes.sh
SERVICE_PATH="/usr/lib/systemd/system/add-routes.service
systemd 服务需要在重启系统后保持路由不变。添加的路线包括:
- 通过
bond0接口连接到数据网络的默认路由。 - 通过管理接口到达管理网络的路由。
12.5. 建立多地区连接
如果 GDC 实例要加入现有的多可用区宇宙,请按照配置多可用区互连中的步骤,为每个可用区建立现有可用区与当前部署可用区之间的网络连接。
12.6. 问题排查
如需排查网络引导问题,请参阅网络引导问题排查。
12.7. 潜在问题
预加载版本低于 9.3.10 的网络交换机可能无法启动。
如需了解详情,请参阅已知问题。