12. Bootstrapping de la red

Tiempo estimado para completar la actividad: 240 minutos

Propietario del componente operable: PNET

Perfil de habilidad: ingeniero de implementación

En esta página, se enumeran los pasos para iniciar la red y configurar los conmutadores.

El sistema de red incluye los siguientes componentes:

  • Red de administración: Es la red de administración fuera de banda que incluye los siguientes dos tipos de conmutadores:

    • Interruptores de administración
    • Interruptores de agregación de administración
  • Red del plano de datos: Es la red que transporta el tráfico del usuario y que incluye los siguientes tres tipos de conmutadores:

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

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

12.1. Antes de comenzar

Es posible que los conmutadores se envíen con la configuración predeterminada de fábrica. Antes de comenzar, restablece todos los interruptores para quitar cualquier configuración existente. Para ello, conéctate a través de la consola serie y ejecuta el siguiente comando:

write erase

Después de quitar la configuración del conmutador existente, vuelve a cargar el conmutador:

reload in 5

12.2. Instalación de la red

Sigue los siguientes pasos para la instalación de la red:

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

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

    Reemplaza PATH_TO_CELLCFG por la ruta de acceso 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 resolver este error:

      gdcloud system network init --config PATH_TO_CELLCFG
      
  3. Mantén los interruptores encendidos. Los conmutadores pasan por las secuencias de inicio de PowerOn Auto Provisioning (POAP) para instalarse automáticamente de forma remota desde la máquina de arranque.

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

    1. Interruptor de administración 1.
    2. Otros interruptores de administración y de agregación de administración
    3. Conmutadores de red de datos
  5. Sigue supervisando el registro de arranque. Después de completar los pasos anteriores, los conmutadores se conectarán. El programa de arranque instala configuraciones adicionales en los conmutadores de administración y los conmutadores 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 del arranque

Usa la secuencia de inicio de POAP para iniciar todos los conmutadores de la red de la siguiente manera:

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

La máquina de arranque genera la configuración del conmutador con los archivos YAML de los conmutadores en la ruta de acceso ./cellcfg. Todos los conmutadores usan la secuencia de arranque de PowerOn Auto Provisioning (POAP) para recibir sus configuraciones. En el hardware 3.0, los conmutadores de red reciben un archivo POAP con sus configuraciones finales. Después de que los conmutadores completan la prueba de POAP, se reinician automáticamente.

Después del reinicio, los interruptores deben alinearse con los archivos YAML de los interruptores en la ruta de acceso ./cellcfg. La máquina de arranque envía solicitudes a todos los conmutadores para garantizar una conectividad y configuración correctas.

12.4. Configuración de ruta posterior al arranque

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

12.4.1. Cómo encontrar la puerta de enlace del plano de datos

La puerta de enlace del plano de datos es la dirección IP de la puerta de enlace para la red del plano de datos. Configura la dirección IP de la puerta de enlace para comunicarte con otros servicios en la red del plano de datos.

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

  1. En la carpeta cellcfg, navega 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
    

    Reemplaza PATH_TO_KUB_IPAM_FILE por la ruta de acceso al archivo cellcfg/kub-ipam.yaml.

  3. Busca la dirección IP de la puerta de enlace en la sección spec.ipv4Spec que aparece como type: GatewayReservation. Por ejemplo, la dirección IP de la puerta de enlace para 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. Crea una secuencia de comandos para las rutas en el programa de arranque

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

Reemplaza lo siguiente:

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 agregan incluyen las siguientes:

  • Es la ruta predeterminada a la red de datos a través de la interfaz bond0.
  • Es la ruta a la red de administración a través de la interfaz de administración.

12.5. Establece conectividad multizona

Si la instancia de GDC se une a un universo multizonal existente, sigue los pasos que se indican en Configura la interconexión multizonal para cada zona y establece la conectividad de red entre las zonas existentes y la zona de implementación actual.

12.6. Soluciona problemas

Para solucionar problemas del arranque de red, consulta Solución de problemas del arranque de red.

12.7. Posible problema

Es posible que los conmutadores de red precargados con una versión inferior a la 9.3.10 no puedan arrancar.

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