網路系統包含下列元件:
管理網路:頻外管理網路,包含下列兩種交換器:
- 管理交換器
- 管理匯總交換器
資料平面網路:傳輸使用者流量的網路,包含下列三種交換器:
- 上層機架 (TOR) 交換機
- 匯總切換開關
- 邊框葉片開關
如果交換器目前的韌體不是預期版本,網路啟動程序會嘗試將交換器帶到 Google Distributed Cloud (GDC) 氣隙版本的預期交換器 OS 版本。
12.1. 事前準備
交換器出貨時可能採用原廠預設設定。開始前,請重設所有交換器,移除現有設定。如要執行這項操作,請使用序列埠控制台連線,然後執行下列指令:
write erase
移除現有交換器設定後,請重新載入交換器:
reload in 5
12.2. 安裝網路
請按照下列步驟安裝網路:
- 開啟所有開關。
在啟動機器上,以
sudo根存取權啟動網路啟動程序: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。 - 其他管理交換器和管理匯總交換器。
- 資料網路交換器。
- 管理切換鈕
繼續監控啟動程序記錄。完成上述步驟後,交換器就會連線。Bootstrap 程式會透過 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區段中找出閘道 IP 位址,該位址會列為type: GatewayReservation。舉例來說,資料平面介面的閘道 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. 在 Bootstrapper 上建立路徑的指令碼
建立指令碼來建立路徑:
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
更改下列內容:
- :尋找管理 IP、CIDR 和閘道位址一節中的閘道位址。
MGMT_GATEWAY 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 的網路交換器可能無法啟動。
詳情請參閱「已知問題」。