12. Netzwerk-Bootstrap

Geschätzte Dauer: 240 Minuten

Eigentümer der betriebsbereiten Komponente: PNET

Kompetenzprofil: Bereitstellungsingenieur

Auf dieser Seite werden die Schritte zum Bootstrapping des Netzwerks und zum Konfigurieren der Switches aufgeführt.

Das Netzwerksystem umfasst die folgenden Komponenten:

  • Verwaltungsnetzwerk: Das Out-of-Band-Verwaltungsnetzwerk, das die folgenden zwei Arten von Switches umfasst:

    • Verwaltungsschalter
    • Management-Aggregations-Switches
  • Datenebenennetzwerk: Das Netzwerk, über das der Nutzerverkehr geleitet wird. Es umfasst die folgenden drei Arten von Switches:

    • Top-of-Rack-Switches (ToR)
    • Aggregations-Switches
    • Border-Leaf-Switches

Wenn die aktuelle Firmware auf den Switches nicht der erwarteten Version entspricht, versucht der Netzwerk-Bootstrap, die Switches auf die erwartete Switch-Betriebssystemversion für die Air-Gap-Version von Google Distributed Cloud (GDC) zu bringen.

12.1 Hinweise

Die Switches werden möglicherweise mit Werkseinstellungen ausgeliefert. Bevor Sie beginnen, setzen Sie alle Schalter zurück, um vorhandene Konfigurationen zu entfernen. Stellen Sie dazu eine Verbindung über die serielle Konsole her und führen Sie den folgenden Befehl aus:

write erase

Nachdem Sie die vorhandene Switch-Konfiguration entfernt haben, laden Sie den Switch neu:

reload in 5

12.2 Netzwerkinstallation

Führen Sie die folgenden Schritte für die Netzwerkinstallation aus:

  1. Schalten Sie alle Schalter ein.
  2. Starten Sie das Netzwerk-Bootstrap-Programm mit sudo-Root-Zugriff auf dem Bootstrap-Computer:

    gdcloud system network install --config PATH_TO_CELLCFG --upgrade-switch-os
    

    Ersetzen Sie PATH_TO_CELLCFG durch den Pfad zur Datei cellcfg.

    1. Wenn dieser Befehl fehlschlägt und die folgende Fehlermeldung angezeigt wird:

      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
      
    2. Führen Sie den Befehl init noch einmal aus, um diesen Fehler zu beheben:

      gdcloud system network init --config PATH_TO_CELLCFG
      
  3. Lassen Sie die Schalter eingeschaltet. Die Switches durchlaufen die POAP-Bootsequenzen (PowerOn Auto Provisioning), um sich automatisch vom Bootstrap-Computer aus zu installieren.

  4. Überwachen Sie das Bootstrap-Programmlog, um sicherzustellen, dass die Switches in der folgenden Reihenfolge hochgefahren werden:

    1. Management-Switch 1
    2. Andere Management-Switches und Management-Aggregations-Switches.
    3. Schalter für Datennetzwerke.
  5. Behalten Sie das Bootstrap-Log im Blick. Nachdem Sie die vorherigen Schritte ausgeführt haben, werden die Schalter verbunden. Das Bootstrap-Programm installiert zusätzliche Konfigurationen auf den Management- und Datenswitches über APIs.

  6. Warten Sie, bis im Bootstrap-Log die Meldung Successfully bootstrapped all switches. angezeigt wird.

12.3. Bootstrap-Details

Verwenden Sie die POAP-Bootsequenz, um alle Switches im Netzwerk zu booten:

  1. Verbinden Sie den Bootstrap-Computer mit dem Managementswitch.
  2. Verbinden Sie den Management-Aggregations-Switch mit dem Management-Switch.
  3. Schließen Sie die restlichen Switches im selben Rack an.
  4. Verbinden Sie den Management-Aggregations-Switch mit einem anderen Rack.
  5. Schließen Sie alle anderen Switches an.

Auf dem Bootstrap-Computer wird die Switch-Konfiguration mit den YAML-Dateien für Switches im Pfad ./cellcfg generiert. Alle Switches verwenden die POAP-Bootsequenz (PowerOn Auto Provisioning), um ihre Konfigurationen zu empfangen. In Hardware 3.0 erhalten Netzwerk-Switches eine POAP-Datei mit ihren endgültigen Konfigurationen. Nachdem die Switches den POAP abgeschlossen haben, werden sie automatisch neu gestartet.

Nach dem Neustart müssen die Schalter mit den YAML-Dateien für Schalter im Pfad ./cellcfg übereinstimmen. Der Bootstrap-Computer sendet Anfragen an alle Switches, um eine erfolgreiche Switch-Verbindung und -Konfiguration sicherzustellen.

12.4. Routenkonfiguration nach dem Bootstrap

Konfigurieren Sie nach dem Netzwerk-Bootstrapping die Routen des Bootstrappers, um ihn auf die bevorstehenden Bootstrapping-Aufgaben vorzubereiten.

12.4.1. Datenebene-Gateway finden

Das Datenebenen-Gateway ist die Gateway-IP-Adresse für das Datenebenen-Netzwerk. Richten Sie die Gateway-IP-Adresse für die Kommunikation mit anderen Diensten im Datenebenennetzwerk ein.

So finden Sie die IP-Adresse des Datenebene-Gateways:

  1. Rufen Sie im Ordner cellcfg die Datei kub-ipam.yaml auf.
  2. Suchen Sie die SubnetClaim-Ressource mit dem Namen control-plane-subnet:

    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
    

    Ersetzen Sie PATH_TO_KUB_IPAM_FILE durch den Pfad zur Datei cellcfg/kub-ipam.yaml.

  3. Suchen Sie im Abschnitt spec.ipv4Spec nach der Gateway-IP-Adresse, die als type: GatewayReservation aufgeführt ist. Die Gateway-IP-Adresse für die Datenebene-Schnittstelle ist beispielsweise 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. Skript für Routen auf dem Bootstrapper erstellen

Erstellen Sie ein Skript zum Erstellen der Routen:

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

Ersetzen Sie Folgendes:

Mit diesem Snippet werden ein systemd-Dienst und ein Skript erstellt:

SCRIPT_PATH="/usr/local/sbin/add-routes.sh
SERVICE_PATH="/usr/lib/systemd/system/add-routes.service

Der Dienst systemd ist erforderlich, damit die Routen nach dem Neustart des Systems erhalten bleiben. Die hinzugefügten Routen umfassen:

  • Die Standardroute zum Datennetzwerk über die bond0-Schnittstelle.
  • Die Route zum Verwaltungsnetzwerk über die Verwaltungsschnittstelle.

12.5. Verbindung zu mehreren Zonen herstellen

Wenn die GDC-Instanz einem vorhandenen multizonalen Universum beitritt, folgen Sie der Anleitung unter Multizonenverbindung konfigurieren für jede Zone, um die Netzwerkverbindung zwischen den vorhandenen Zonen und der aktuellen Bereitstellungszone herzustellen.

12.6. Fehlerbehebung

Informationen zur Fehlerbehebung beim Netzwerk-Bootstrap finden Sie unter Fehlerbehebung beim Netzwerk-Bootstrap.

12.7. Mögliches Problem

Netzwerk-Switches, auf denen eine Version vor 9.3.10 vorinstalliert ist, können möglicherweise nicht gebootstrapped werden.

Weitere Informationen finden Sie unter Bekannte Probleme.