12. Bootstrap de rede

Tempo estimado para a conclusão: 240 minutos

Proprietário do componente operacional: PNET

Perfil de habilidade: engenheiro de implantação

Nesta página, listamos as etapas para inicializar a rede e configurar os switches.

O sistema de rede inclui os seguintes componentes:

  • Rede de gerenciamento: a rede de gerenciamento fora de banda que inclui os dois tipos de switches a seguir:

    • Switches de gerenciamento
    • Alternância de agregação de gerenciamento
  • Rede do plano de dados: a rede que transporta o tráfego do usuário e inclui os três tipos de switches a seguir:

    • Switches de topo de rack (TOR)
    • Switches de agregação
    • Alternâncias de folha de borda

Se o firmware atual nos switches não for da versão esperada, o bootstrap de rede tentará trazer os switches para a versão esperada do SO do switch para a versão isolada do Google Distributed Cloud (GDC).

12.1. Antes de começar

Os switches podem ser enviados com as configurações padrão de fábrica. Antes de começar, redefina todas as chaves para remover qualquer configuração atual. Para fazer isso, conecte-se usando o console serial e execute o seguinte comando:

write erase

Depois de remover a configuração de alternância atual, recarregue a alternância:

reload in 5

12.2. Instalação de rede

Siga estas etapas para a instalação da rede:

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

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

    Substitua PATH_TO_CELLCFG pelo caminho para o arquivo cellcfg.

    1. Se esse comando falhar e mostrar 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 o comando init novamente para resolver esse erro:

      gdcloud system network init --config PATH_TO_CELLCFG
      
  3. Mantenha os interruptores ligados. Os switches passam pelas sequências de inicialização do PowerOn Auto Provisioning (POAP) para se instalarem remotamente de forma automática na máquina de bootstrap.

  4. Monitore o registro do programa de bootstrap para garantir que as chaves estejam ativas na seguinte ordem:

    1. Chave de gerenciamento 1.
    2. Outros switches de gerenciamento e agregação de gerenciamento.
    3. Chaves de rede de dados.
  5. Continue monitorando o registro de inicialização. Depois de concluir as etapas anteriores, os switches vão se conectar. O programa de bootstrap instala outras configurações nos switches de gerenciamento e de dados usando APIs.

  6. Aguarde até que o registro de inicialização mostre a mensagem Successfully bootstrapped all switches..

12.3. Detalhes da inicialização

Use a sequência de inicialização do POAP para inicializar todos os switches na rede da seguinte forma:

  1. Conecte a máquina de bootstrap ao switch de gerenciamento.
  2. Conecte o switch de agregação de gerenciamento ao switch de gerenciamento.
  3. Conecte o restante dos switches no mesmo rack.
  4. Conecte o switch de agregação de gerenciamento a outro rack.
  5. Conecte todos os outros switches.

A máquina de bootstrap gera a configuração de switch com os arquivos YAML para switches no caminho ./cellcfg. Todos os switches usam a sequência de inicialização do PowerOn Auto Provisioning (POAP) para receber as configurações. No hardware 3.0, os switches de rede recebem um arquivo POAP com as configurações finais. Depois que os switches concluem o POAP, eles são reiniciados automaticamente.

Após a reinicialização, as chaves precisam estar alinhadas com os arquivos YAML para chaves no caminho ./cellcfg. A máquina de bootstrap envia solicitações a todos os switches para garantir uma conectividade e configuração bem-sucedidas.

12.4. Configuração de rota pós-bootstrap

Depois do processo de inicialização da rede, configure as rotas do inicializador para prepará-lo para as próximas tarefas de inicialização.

12.4.1. Encontrar o gateway do plano de dados

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

Para encontrar o endereço IP do gateway do plano de dados, siga estas etapas:

  1. Na pasta cellcfg, navegue até o arquivo kub-ipam.yaml.
  2. Encontre o recurso SubnetClaim chamado 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 arquivo cellcfg/kub-ipam.yaml.

  3. Encontre o endereço IP do gateway na seção spec.ipv4Spec listada 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. Criar script para rotas no bootstrap

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:

Este snippet cria um serviço systemd e um script da seguinte maneira:

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 as rotas no lugar após a reinicialização do sistema. As rotas adicionadas incluem:

  • A rota padrão para a rede de dados pela interface bond0.
  • A rota para a rede de gerenciamento pela interface de gerenciamento.

12.5. Estabelecer conectividade entre várias zonas

Se a instância do GDC estiver entrando em um universo multizonal existente, siga as etapas em Configurar interconexão multizonal para cada zona e estabeleça a conectividade de rede entre as zonas atuais e a zona de implantação.

12.6. Solução de problemas

Para resolver problemas de inicialização da rede, consulte Solução de problemas de inicialização da rede.

12.7. Possível problema

Os switches de rede pré-carregados com uma versão anterior à 9.3.10 podem não inicializar.

Saiba mais em Problemas conhecidos.