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:
- Ligue todos os interruptores.
Inicie o programa de bootstrap de rede com acesso root
sudona máquina de bootstrap:gdcloud system network install --config PATH_TO_CELLCFG --upgrade-switch-osSubstitua
PATH_TO_CELLCFGpelo caminho para o arquivocellcfg.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 matchExecute o comando
initnovamente para resolver esse erro:gdcloud system network init --config PATH_TO_CELLCFG
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.
Monitore o registro do programa de bootstrap para garantir que as chaves estejam ativas na seguinte ordem:
- Chave de gerenciamento
1. - Outros switches de gerenciamento e agregação de gerenciamento.
- Chaves de rede de dados.
- Chave de gerenciamento
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.
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:
- Conecte a máquina de bootstrap ao switch de gerenciamento.
- Conecte o switch de agregação de gerenciamento ao switch de gerenciamento.
- Conecte o restante dos switches no mesmo rack.
- Conecte o switch de agregação de gerenciamento a outro rack.
- 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:
- Na pasta
cellcfg, navegue até o arquivokub-ipam.yaml. Encontre o recurso
SubnetClaimchamadocontrol-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_FILESubstitua
PATH_TO_KUB_IPAM_FILEpelo caminho para o arquivocellcfg/kub-ipam.yaml.Encontre o endereço IP do gateway na seção
spec.ipv4Speclistada comotype: 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:
MGMT_GATEWAY: o endereço do gateway da seção Encontrar IP de gerenciamento, CIDR e endereço do gateway.MGMT_CIDR: o CIDR de gerenciamento da seção Encontrar IP, CIDR e endereço de gateway de gerenciamentoMGMT_INTERFACE: um exemplo de nome de interface de gerenciamento éens15f0. É possível usar o endereço MAC emcellcfg/serv-core.yamlpara identificar qual interface é usada na rede de gerenciamento.DATA_GATEWAY: o endereço IP do gateway da seção Encontrar o gateway do plano de dados.
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.