12. Bootstrap di rete

Tempo stimato per completare il corso: 240 minuti

Proprietario del componente operativo: PNET

Profilo delle competenze: ingegnere del deployment

Questa pagina elenca i passaggi per eseguire il bootstrap della rete e configurare gli switch.

Il sistema di rete include i seguenti componenti:

  • Rete di gestione: la rete di gestione out-of-band che include i seguenti due tipi di switch:

    • Switch di gestione
    • Opzioni di aggregazione della gestione
  • Rete del piano dati: la rete che trasporta il traffico utente e include i seguenti tre tipi di switch:

    • Switch top-of-rack (TOR)
    • Interruttori di aggregazione
    • Interruttori a foglia del bordo

Se il firmware attuale sugli switch non è della versione prevista, il bootstrap di rete tenta di portare gli switch alla versione del sistema operativo prevista per la versione air-gapped di Google Distributed Cloud (GDC).

12.1. Prima di iniziare

Gli switch potrebbero essere spediti con le impostazioni predefinite di fabbrica. Prima di iniziare, ripristina tutti gli interruttori per rimuovere qualsiasi configurazione esistente. Per farlo, connettiti utilizzando la console seriale ed esegui il seguente comando:

write erase

Dopo aver rimosso la configurazione dello switch esistente, ricarica lo switch:

reload in 5

12.2. Installazione di rete

Segui i passaggi riportati di seguito per l'installazione della rete:

  1. Accendi tutti gli interruttori.
  2. Avvia il programma di bootstrap di rete con accesso root sudo sulla macchina di bootstrap:

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

    Sostituisci PATH_TO_CELLCFG con il percorso del file cellcfg.

    1. Se questo comando non va a buon fine e viene visualizzato il seguente messaggio di errore:

      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. Esegui di nuovo il comando init per risolvere l'errore:

      gdcloud system network init --config PATH_TO_CELLCFG
      
  3. Mantieni gli interruttori accesi. Gli switch eseguono le sequenze di avvio del provisioning automatico all'accensione (POAP) per installarsi automaticamente da remoto dalla macchina bootstrap.

  4. Monitora il log del programma di bootstrap per assicurarti che gli switch siano attivi nel seguente ordine:

    1. Interruttore di gestione 1.
    2. Altri switch di gestione e switch di aggregazione della gestione.
    3. Switch di rete dati.
  5. Continua a monitorare il log di bootstrap. Dopo aver completato i passaggi precedenti, gli interruttori si connettono. Il programma di bootstrap installa configurazioni aggiuntive sugli switch di gestione e sugli switch di dati tramite le API.

  6. Attendi finché nel log di bootstrap non viene visualizzato il messaggio Successfully bootstrapped all switches.

12.3. Dettagli del bootstrap

Utilizza la sequenza di avvio POAP per eseguire il bootstrap di tutti gli switch della rete come segue:

  1. Collega la macchina di bootstrap allo switch di gestione.
  2. Collega lo switch di aggregazione della gestione allo switch di gestione.
  3. Collega il resto degli switch nello stesso rack.
  4. Collega lo switch di aggregazione della gestione a un altro rack.
  5. Collega tutti gli altri interruttori.

La macchina di bootstrap genera la configurazione dello switch con i file YAML per gli switch nel percorso ./cellcfg. Tutti gli switch utilizzano la sequenza di avvio del provisioning automatico PowerOn (POAP) per ricevere le configurazioni. Nell'hardware 3.0, gli switch di rete ricevono un file POAP con le loro configurazioni finali. Al termine del POAP, gli switch si riavviano automaticamente.

Dopo il riavvio, gli switch devono essere allineati ai file YAML per gli switch nel percorso ./cellcfg. La macchina di bootstrap invia richieste a tutti gli switch per garantire una connettività e una configurazione degli switch corrette.

12.4. Configurazione delle route post-bootstrap

Dopo la procedura di bootstrapping della rete, configura le route del bootstrapper per prepararlo alle prossime attività di bootstrapping.

12.4.1. Trovare il gateway del piano dati

Il gateway del piano dati è l'indirizzo IP del gateway per la rete del piano dati. Configura l'indirizzo IP del gateway per comunicare con altri servizi nella rete del piano dati.

Per trovare l'indirizzo IP del gateway del piano dati:

  1. Nella cartella cellcfg, vai al file kub-ipam.yaml.
  2. Trova la risorsa SubnetClaim denominata 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
    

    Sostituisci PATH_TO_KUB_IPAM_FILE con il percorso del file cellcfg/kub-ipam.yaml.

  3. Trova l'indirizzo IP del gateway nella sezione spec.ipv4Spec elencato come type: GatewayReservation. Ad esempio, l'indirizzo IP del gateway per l'interfaccia del piano dati è 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. Crea lo script per le route sul bootstrapper

Crea uno script per creare le route:

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

Sostituisci quanto segue:

Questo snippet crea un servizio systemd e uno script nel seguente modo:

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

Il servizio systemd è necessario per mantenere le route dopo il riavvio del sistema. Le tratte aggiunte includono:

  • La route predefinita alla rete di dati tramite l'interfaccia bond0.
  • Il percorso alla rete di gestione tramite l'interfaccia di gestione.

12.5. Stabilisci la connettività multizona

Se l'istanza GDC si unisce a un universo multizona esistente, segui i passaggi descritti in Configura l'interconnessione multizona per ogni zona per stabilire la connettività di rete tra le zone esistenti e la zona di deployment corrente.

12.6. Risoluzione dei problemi

Per risolvere i problemi relativi al bootstrap di rete, consulta la pagina Risoluzione dei problemi relativi al bootstrap di rete.

12.7. Potenziale problema

Gli switch di rete precaricati con una versione precedente alla 9.3.10 potrebbero non riuscire a eseguire il bootstrap.

Per ulteriori informazioni, vedi Problemi noti.