12. Bootstrap de red

Tiempo estimado para completarlo: 240 minutos

Propietario del componente operativo: PNET

Perfil de habilidades: ingeniero de implementaciones

En esta página se indican los pasos para inicializar la red y configurar los interruptores.

El sistema de red incluye los siguientes componentes:

  • Red de gestión: red de gestión fuera de banda que incluye los dos tipos de interruptores siguientes:

    • Interruptores de gestión
    • Interruptores de agregación de gestión
  • Red del plano de datos: la red que transporta el tráfico de los usuarios e incluye los tres tipos de switches siguientes:

    • Conmutadores de la parte superior del rack (TOR)
    • Interruptores de agregación
    • Interruptores de hoja de borde

Si el firmware actual de los interruptores no es de la versión esperada, el bootstrap de la red intenta llevar los interruptores a la versión esperada del SO de los interruptores para la versión aislada de Google Distributed Cloud (GDC).

12.1. Antes de empezar

Los interruptores pueden enviarse con los ajustes predeterminados de fábrica. Antes de empezar, restablece todos los interruptores para eliminar cualquier configuración. Para ello, conéctate mediante la consola serie y ejecuta el siguiente comando:

write erase

Después de eliminar la configuración del interruptor, vuelve a cargar el interruptor:

reload in 5

12.2. Instalación de la red

Sigue estos pasos para instalar la red:

  1. Enciende todos los interruptores.
  2. Inicia el programa de arranque de la red con acceso sudo root en la máquina de arranque:

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

    Sustituye PATH_TO_CELLCFG por la ruta al archivo cellcfg.

    1. Si este comando falla y muestra el siguiente mensaje de error:

      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. Vuelve a ejecutar el comando init para solucionar este error:

      gdcloud system network init --config PATH_TO_CELLCFG
      
  3. Mantén los interruptores activados. Los switches pasan por las secuencias de arranque de aprovisionamiento automático al encenderse (POAP) para instalarse automáticamente de forma remota desde la máquina de arranque.

  4. Monitoriza el registro del programa de arranque para asegurarte de que los interruptores están activados en el siguiente orden:

    1. Interruptor de gestión 1.
    2. Otros interruptores de gestión e interruptores de agregación de gestión.
    3. Conmutadores de red de datos.
  5. Sigue monitorizando el registro de arranque. Después de completar los pasos anteriores, los interruptores se conectarán. El programa de arranque instala configuraciones adicionales en los conmutadores de gestión y de datos a través de APIs.

  6. Espera hasta que el registro de arranque muestre el mensaje Successfully bootstrapped all switches.

12.3. Detalles de Bootstrap

Usa la secuencia de arranque de POAP para iniciar todos los interruptores de la red de la siguiente manera:

  1. Conecta la máquina de arranque al switch de gestión.
  2. Conecta el conmutador de agregación de gestión al conmutador de gestión.
  3. Conecta el resto de los conmutadores en el mismo rack.
  4. Conecta el conmutador de agregación de gestión a otro rack.
  5. Conecta todos los demás interruptores.

La máquina de arranque genera la configuración del switch con los archivos YAML de los switches en la ruta ./cellcfg. Todos los switches usan la secuencia de arranque de aprovisionamiento automático PowerOn (POAP) para recibir sus configuraciones. En el hardware 3.0, los conmutadores de red reciben un archivo POAP con sus configuraciones finales. Cuando los interruptores completen la prueba de POAP, se reiniciarán automáticamente.

Después del reinicio, los interruptores deben coincidir con los archivos YAML de los interruptores de la ruta ./cellcfg. La máquina de arranque envía solicitudes a todos los conmutadores para asegurarse de que la conectividad y la configuración de los conmutadores se realizan correctamente.

12.4. Configuración de rutas posteriores al arranque

Después del proceso de arranque de la red, configura las rutas del bootstrapper para prepararlo para las próximas tareas de arranque.

12.4.1. Buscar la pasarela del plano de datos

La pasarela de plano de datos es la dirección IP de la pasarela de la red del plano de datos. Configura la dirección IP de la pasarela para que se comunique con otros servicios de la red del plano de datos.

Para encontrar la dirección IP de la pasarela del plano de datos, sigue estos pasos:

  1. En la carpeta cellcfg, ve al archivo kub-ipam.yaml.
  2. Busca el recurso SubnetClaim llamado 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
    

    Sustituye PATH_TO_KUB_IPAM_FILE por la ruta al archivo cellcfg/kub-ipam.yaml.

  3. Busca la dirección IP de la pasarela en la sección spec.ipv4Spec, que aparece como type: GatewayReservation. Por ejemplo, la dirección IP de la pasarela de la interfaz del plano de datos es 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. Crear un script para las rutas en el Bootstrapper

Crea una secuencia de comandos para crear las rutas:

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

Haz los cambios siguientes:

Este fragmento crea un servicio systemd y una secuencia de comandos de la siguiente manera:

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

El servicio systemd es necesario para mantener las rutas después de reiniciar el sistema. Las rutas que se añaden son las siguientes:

  • La ruta predeterminada a la red de datos a través de la interfaz bond0.
  • Ruta a la red de gestión a través de la interfaz de gestión.

12.5. Establecer la conectividad multizona

Si la instancia de GDC se va a unir a un universo multizona, sigue los pasos que se indican en Configurar la interconexión multizona para cada zona con el fin de establecer la conectividad de red entre las zonas actuales y la zona que se está implementando.

12.6. Solución de problemas

Para solucionar problemas con el bootstrap de red, consulta Solución de problemas con el bootstrap de red.

12.7. Posible problema

Es posible que los switches de red que tengan precargada una versión inferior a la 9.3.10 no puedan iniciarse.

Para obtener más información, consulta Problemas conocidos.