12. Arranque de rede

Tempo estimado até à conclusão: 240 minutos

Proprietário do componente operacional: PNET

Perfil de competências: engenheiro de implementação

Esta página lista os passos para iniciar a rede e configurar os comutadores.

O sistema de rede inclui os seguintes componentes:

  • Rede de gestão: a rede de gestão fora da banda que inclui os dois tipos de comutadores seguintes:

    • Interruptores de gestão
    • Interruptores de agregação de gestão
  • Rede do plano de dados: a rede que transporta o tráfego do utilizador e inclui os seguintes três tipos de comutadores:

    • Interruptores top-of-rack (TOR)
    • Interruptores de agregação
    • Interruptores de folha de limite

Se o firmware atual nos comutadores não for da versão esperada, o arranque da rede tenta colocar os comutadores na versão esperada do SO do comutador para a versão isolada do Google Distributed Cloud (GDC).

12.1. Antes de começar

Os comutadores podem ser enviados com as predefinições de fábrica. Antes de começar, reponha todos os comutadores para remover qualquer configuração existente. Para tal, estabeleça ligação através da consola série e execute o seguinte comando:

write erase

Depois de remover a configuração do comutador existente, recarregue o comutador:

reload in 5

12.2. Instalação de rede

Siga os passos seguintes para a instalação de rede:

  1. Ligue todos os interruptores.
  2. Inicie o programa de arranque da rede com acesso de superutilizador na máquina de arranque:sudo

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

    Substitua PATH_TO_CELLCFG pelo caminho para o ficheiro cellcfg.

    1. Se este comando falhar e apresentar a seguinte mensagem de erro:

      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. Execute novamente o comando init para resolver este erro:

      gdcloud system network init --config PATH_TO_CELLCFG
      
  3. Mantenha os interruptores ligados. Os comutadores passam pelas sequências de arranque de aprovisionamento automático de ligação (POAP) para se instalarem automaticamente de forma remota a partir da máquina de arranque.

  4. Monitorize o registo do programa de arranque para garantir que os comutadores estão ativos pela seguinte ordem:

    1. Interruptor de gestão 1.
    2. Outros comutadores de gestão e comutadores de agregação de gestão.
    3. Comutadores de rede de dados.
  5. Continue a monitorizar o registo de arranque. Depois de concluir os passos anteriores, os comutadores são associados. O programa de arranque instala configurações adicionais nos comutadores de gestão e nos comutadores de dados através de APIs.

  6. Aguarde até que o registo de arranque apresente a mensagem Successfully bootstrapped all switches.

12.3. Detalhes da inicialização

Use a sequência de arranque do POAP para iniciar todos os comutadores na rede da seguinte forma:

  1. Ligue a máquina de arranque ao comutador de gestão.
  2. Ligue o comutador de agregação de gestão ao comutador de gestão.
  3. Ligue o resto dos comutadores no mesmo rack.
  4. Ligue o comutador de agregação de gestão a outro rack.
  5. Ligue todos os outros comutadores.

A máquina de arranque gera a configuração do comutador com os ficheiros YAML para comutadores no caminho ./cellcfg. Todos os comutadores usam a sequência de arranque de aprovisionamento automático de ativação (POAP) para receber as respetivas configurações. No hardware 3.0, os comutadores de rede recebem um ficheiro POAP com as respetivas configurações finais. Depois de os comutadores concluírem o POAP, são reiniciados automaticamente.

Após o reinício, os comutadores têm de estar alinhados com os ficheiros YAML dos comutadores no caminho ./cellcfg. A máquina de arranque envia pedidos a todos os comutadores para garantir uma conetividade e uma configuração bem-sucedidas do comutador.

12.4. Configuração da rota após o arranque

Após o processo de arranque da rede, configure as rotas do programa de arranque para o preparar para as tarefas de arranque futuras.

12.4.1. Encontre o gateway do plano de dados

O gateway do plano de dados é o endereço IP do gateway para a rede do plano de dados. Configure o endereço IP do gateway para comunicar com outros serviços na rede do plano de dados.

Para encontrar o endereço IP do gateway do plano de dados, siga estes passos:

  1. Na pasta cellcfg, navegue para o ficheiro kub-ipam.yaml.
  2. Encontre o recurso SubnetClaim com o nome 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
    

    Substitua PATH_TO_KUB_IPAM_FILE pelo caminho para o ficheiro cellcfg/kub-ipam.yaml.

  3. Encontre o endereço IP do gateway na secção spec.ipv4Spec indicado como type: GatewayReservation. Por exemplo, o endereço IP do gateway para a interface do plano de dados é 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. Crie um script para rotas no programa de arranque

Crie um script para criar as rotas:

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

Substitua o seguinte:

Este fragmento cria um serviço systemd e um script da seguinte forma:

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

O serviço systemd é necessário para manter os percursos no lugar após reiniciar o sistema. As rotas adicionadas incluem:

  • O caminho predefinido para a rede de dados através da interface bond0.
  • O caminho para a rede de gestão através da interface de gestão.

12,5. Estabeleça a conetividade em várias zonas

Se a instância do GDC estiver a juntar-se a um universo multizona existente, siga os passos em Configure a interligação multizona para cada zona de modo a estabelecer a conetividade de rede entre as zonas existentes e a zona de implementação atual.

12.6. Resolução de problemas

Para resolver problemas de arranque da rede, consulte o artigo Resolução de problemas de arranque da rede.

12.7. Potencial problema

Os comutadores de rede pré-carregados com uma versão inferior a 9.3.10 podem não conseguir arrancar.

Para mais informações, consulte Problemas conhecidos.