ネットワーク システムには、次のコンポーネントが含まれています。
管理ネットワーク: 次の 2 種類のスイッチを含むアウトオブバンド管理ネットワーク。
- 管理スイッチ
- 管理集約スイッチ
データプレーン ネットワーク: ユーザー トラフィックを伝送するネットワーク。次の 3 種類のスイッチが含まれます。
- トップオブラック(TOR)スイッチ
- アグリゲーション スイッチ
- ボーダー リーフスイッチ
スイッチの現在のファームウェアが想定されるバージョンでない場合、ネットワーク ブートストラップは、Google Distributed Cloud(GDC)エアギャップ バージョンの想定されるスイッチ OS バージョンにスイッチを移行しようとします。
12.1. 始める前に
スイッチは出荷時のデフォルト設定で出荷される場合があります。始める前に、すべてのスイッチをリセットして、既存の構成を削除します。これを行うには、シリアル コンソールを使用して接続し、次のコマンドを実行します。
write erase
既存のスイッチ構成を削除したら、スイッチを再読み込みします。
reload in 5
12.2. ネットワークのインストール
ネットワークのインストールは、次の手順で行います。
- すべてのスイッチをオンにします。
ブートストラップ マシンで
sudoroot アクセスを使用してネットワーク ブートストラップ プログラムを開始します。gdcloud system network install --config PATH_TO_CELLCFG --upgrade-switch-osPATH_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_FILEPATH_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 より前のバージョンがプリロードされているネットワーク スイッチは、ブートストラップに失敗する可能性があります。
詳細については、既知の問題をご覧ください。