Tiempo estimado para completarlo: 3 horas
Propietario del componente operable: OLT/Node
Perfil de habilidades: ingeniero de implementaciones
La máquina de arranque es el primer sistema de información (SI) de servidor instalado en una celda aislada de Google Distributed Cloud (GDC) y se usa para arrancar los sistemas de información de Distributed Cloud restantes. La máquina se vuelve a crear como un nodo de clúster de trabajador después de las comprobaciones previas.
Usa el primer servidor estándar del tercer rack para el bootstrapper. Por ejemplo, para la verificación de laboratorio, usamos xx-ac-bm15, que es el servidor superior del tercer rack ac que no tiene base como parte de la etiqueta de recurso. Aunque el programa de arranque puede ser cualquier máquina del rack, ya que no hay requisitos específicos para el programa de arranque, se estandariza una máquina específica para este fin. Sin embargo, no debes usar ninguno de los servidores con base en su nombre en los tres primeros racks, ya que se usan para clústeres de administrador raíz y de operaciones.
9.1. Instalar el SO
Conéctate a la máquina de arranque mediante un monitor y un teclado.
Define la IP en el puerto de red dedicado de iLO. Usa una dirección del intervalo de IPs de gestión con 160 como último octeto.
Asigna a la estación de trabajo cualquier otra dirección de la misma subred y conéctala temporalmente al puerto Ethernet trasero con un cable Ethernet cruzado.
9.1.1. Instalación por estación de trabajo con un archivo ISO local
En el navegador de la estación de trabajo sin conexión, conéctate a la consola iLO del ordenador de arranque y ve al menú Remote Console & Media (Consola y medios remotos) del árbol de navegación. No utilices medios remotos a través de USB iLO.
Haz clic en Virtual Media (Medios virtuales) y especifica la URL de los medios virtuales en Connect CD/DVD-ROM (Conectar CD/DVD-ROM).
Opcional: Selecciona Reiniciar en el próximo reinicio. Si se selecciona Boot on Next reset (Arrancar en el próximo reinicio), el servidor se iniciará con esta imagen solo la próxima vez que se reinicie. La imagen se expulsa automáticamente en el segundo reinicio del servidor para que el servidor no arranque con esta imagen dos veces. Si esta casilla no está marcada, la imagen permanecerá conectada hasta que se expulse manualmente.
Para validar la acción, haz clic en Insertar archivo multimedia.
Para que la máquina de arranque se inicie desde la imagen
.iso, debes restablecer la máquina:- En la consola de iLO, haga clic en Alimentación y temperatura - Alimentación del servidor.
- Haz clic en Cambiar. Puedes abrir la consola virtual para monitorizar el reinicio de la máquina y el arranque del archivo
.iso.
Una vez que se haya completado el bootstrap, especifica el nombre de inicio de sesión y la contraseña para conectarte a la máquina de bootstrap (cuenta raíz). El bootstrapper se inicia con un archivo ISO creado por Google, por lo que Google especifica una contraseña raíz predeterminada.
Como operador, tienes acceso a la contraseña y puedes crear otro usuario si es necesario.
La ISO de arranque ya contiene todas las herramientas necesarias, como docker y kubectl, por lo que no es necesario que las instales por separado.
9.1.2. Instalación mediante ISO grabada en una unidad USB
9.1.2.1. Grabar ISO en una unidad USB
- El controlador del sistema usa una imagen rocky, que te permite usar el comando dd o la interfaz de usuario "Discos".
Con la interfaz de usuario Discos:
- Conecta una unidad flash.
- En el menú de navegación, haga clic en unidad flash y, a continuación, en el menú de hamburguesa de la barra de menú. Haz clic en Restaurar imagen de disco y selecciona el archivo de arranque ISO que has descargado.

Con dd:
Para determinar qué disco es la unidad USB, ejecuta el siguiente comando:
sudo fdisk -lUsa Tamaño del disco para determinar si el dispositivo es el USB. Recuerda el nombre del dispositivo para los siguientes pasos.
Monta el disco por el nombre del dispositivo, tal como se indica en el paso anterior:
sudo umount <device name>Formatea la unidad:
sudo mkfs.vfat <device name>Copia el archivo ISO en la unidad:
sudo dd bs=4M if=<path to ISO file> of=<device name> status=progress
9.1.2.2. Arrancar con una unidad USB de arranque
- Inserta una unidad USB en el puerto USB delantero (no en el que está marcado como iLO).
- Selecciona Pulsación momentánea en el botón de encendido de la interfaz de iLO. Espera a que el botón virtual cambie de color a amarillo, lo que indica que la máquina se ha apagado.
- Selecciona Administración y, a continuación, Orden de arranque.
- En la sección Estado de arranque único > Seleccionar arranque único, selecciona Unidad USB.
- Selecciona Pulsación momentánea en el botón de encendido de la interfaz de iLO y comprueba que el botón virtual se ponga de color verde. La instalación del SO es automática, al igual que el reinicio. Cuando la consola muestre el mensaje
bootstrapper login, la instalación del programa de arranque se habrá completado. - Retira la unidad USB.
9.1.3. Instalación del registro de auditoría
Para instalar y habilitar manualmente el registro de auditoría del bootstrapper, sigue estos pasos:
Copia el siguiente bloque en un archivo nuevo en
/etc/bash.bootstrapper_audit.sh.function log_previous_cmd() { rc=$? ; [[ "$rc" -eq 130 ]] && return line="rc=${rc};;pwd=$(pwd);;ppid=${PPID}" line="${line};;started=$(history 1|awk 'NR==1{$0=gensub(/^.{0,7}([^ ]*) /,"\\1;;cmd=","g",$0)}1')" logger --priority local6.info --id="$$" "${line}" } export PROMPT_COMMAND='log_previous_cmd' export HISTTIMEFORMAT='%G-%m-%dT%T 'Añade esta línea al final de
/etc/bash.bashrc[ -f /etc/bash.bootstrapper_audit.sh ] && . /etc/bash.bootstrapper_audit.shUna vez que se guarden estos cambios, todas las shells nuevas registrarán entradas de registro de auditoría en el registro del sistema.
(Opcional) Verificar que el registro de auditoría funciona
Para verificar que los registros de auditoría se están registrando correctamente, ejecuta el siguiente comando y comprueba que se emite un resultado similar:
USER@bootstrapper:~$ echo 'a command' USER@bootstrapper:~$ sudo journalctl -eo short-iso -p info SYSLOG_FACILITY=22 2024-10-12T00:30:24+0000 bootstrapper USER[96558]: rc=0;;pwd=/root;;ppid=96479;;started=2024-10-12T00:30:24;;cmd=date 2024-10-12T00:30:47+0000 bootstrapper USER[96558]: rc=0;;pwd=/root;;ppid=96479;;started=2024-10-12T00:30:47;;cmd=echo 'a command'Opcional: Inhabilitar el registro de auditoría
En el improbable caso de que se sospeche que el registro de auditoría puede afectar a otras operaciones del programa de arranque, la función se puede inhabilitar rápidamente en el shell actual con el siguiente comando:
USER@bootstrapper:~$ unset PROMPT_COMMANDUna vez que te hayas asegurado de que el registro de auditoría no afecta a nada, vuelve a habilitarlo en el shell actual con el siguiente comando:
source /etc/bash.bashrc
9.2. Configurar la interfaz de gestión y la ruta
En esta sección se configura la interfaz de gestión y la ruta necesarias para el proceso de arranque.
9.2.1. Buscar la dirección IP de gestión, la CIDR y la dirección de la pasarela
Busca la IP de gestión del bootstrapper en el archivo
cellcfg/serv-core.yaml:yq eval -r 'select(.metadata.annotations."system.private.gdc.goog/bootstrapper" == "true") | .spec.managementNetwork.ips[0]' PATH_TO_SERV_CORE_FILESustituye
PATH_TO_SERV_CORE_FILEpor la ruta al archivocellcfg/serv-core.yaml.El bootstrapper se identifica con la anotación
system.private.gdc.goog/bootstrapper: "true". La dirección IP de gestión despec.managementNetwork.ips[0]es172.22.80.76en el ejemplo:apiVersion: system.private.gdc.goog/v1alpha1 kind: Server metadata: annotations: lcm.private.gdc.goog/claim-by-force: "true" helm.sh/resource-policy: keep system.private.gdc.goog/bootstrapper: "true" creationTimestamp: null labels: system.private.gdc.goog/rack-name: mb-aa name: mb-aa-bm13 namespace: gpc-system spec: bmc: credentialsRef: name: bmc-credentials-mb-aa-bm13 namespace: gpc-system ip: 172.22.80.108 mac: 5c:ba:2c:42:a9:68 protocol: redfish redfish: systemPath: /redfish/v1/Systems/1 dataplaneNetwork: {} encryptDisk: true firmwareInstall: true secureErase: true luks: enable: false managementNetwork: ips: - 172.22.80.76 link: LOM1Busca el intervalo de direcciones CIDR necesario para definir la dirección IP de la interfaz de gestión. Esta opción está disponible en el cuestionario de CIQ.
CIQ de ejemplo:
oobManagementCIDRs: - ipFamily: IPv4 ipv4: 172.23.16.0/24 - ipFamily: IPv4 ipv4: 172.23.17.0/24 - ipFamily: IPv4 ipv4: 172.23.18.0/24 - ipFamily: IPv4 ipv4: 172.23.19.0/24En este ejemplo, el intervalo CIDR
172.23.16.0/22abarca todas las direcciones CIDR de gestión que se indican.Busca la dirección de la pasarela que usa el bootstrapper al comunicarse con la red de gestión. Si el bootstrapper se encuentra en el rack
ac, busca el nombre del recursoCIDRClaimcon el comando:grep -A 10 -B 10 "ac-mgmtsw01-server-os-cidr" cellcfg/pnet-core.yaml`.La salida tiene este aspecto:
apiVersion: system.private.gdc.goog/v1alpha1 kind: CIDRClaim metadata: annotations: lcm.private.gdc.goog/claim-by-force: "true" labels: cidrclaims.system.private.gdc.goog/cidr-category: internal cidrclaims.system.private.gdc.goog/cidr-org: root cidrclaims.system.private.gdc.goog/node-type: leaf network.private.gdc.goog/mgmtnw-device-category: server-os network.private.gdc.goog/mgmtsw: ag-ac-mgmtsw01 name: ag-ac-mgmtsw01-server-os-cidr namespace: root spec: ipv4Spec: staticCidrBlocks: - 172.28.120.128/26 parentCidrClaimName: server-os-mgmt-network-cidrCon el
172.28.120.128/26encontrado enipv4Spec.staticCidrBlocksdel recursoCIDRClaimllamadoag-ac-mgmtsw01-server-os-cidr, la dirección de la pasarela es la primera dirección IP de172.28.120.128/26, que es172.28.120.129.
9.2.2. Configurar la dirección IP de la interfaz de gestión
ip address add dev MGMT_INTERFACE MGMT_IP/MGMT_SUBNET_PREFIX
Haz los cambios siguientes:
MGMT_INTERFACE: un ejemplo de nombre de interfaz de gestión esens15f0. Usa la dirección MAC decellcfg/serv-core.yamlpara identificar qué interfaz se usa en la red de gestión.MGMT_IP: la dirección IP de gestión que se encuentra en la sección Buscar la IP de gestión y el CIDR.MGMT_SUBNET_PREFIX: el prefijo de subred CIDR de gestión (por ejemplo,22para172.23.16.0/22del ejemplo anterior). Para obtener más información, consulta Buscar la IP de gestión y la CIDR.
A continuación, ejecuta la secuencia de comandos en el programa de arranque. Esta secuencia de comandos asigna la dirección IP a la interfaz de gestión y crea una ruta predeterminada para el intervalo CIDR de gestión.
9.2.3. Activar la interfaz de gestión
En esta sección se proporcionan instrucciones para activar la interfaz de gestión. Identifica la interfaz de gestión buscando la dirección MAC de la interfaz de gestión en el bootstrapper en cellcfg/serv-core.yaml y compara esta dirección MAC con la salida de ip a en el bootstrapper.
En este ejemplo, el valor de la interfaz de gestión es ens15f0. Usa tu propio valor cuando sigas estas instrucciones. Añade la dirección IP con la dirección IP de gestión que se encuentra en el archivo cellcfg/serv-core.yaml:
apiVersion: system.private.gdc.goog/v1alpha1
kind: Server
metadata:
annotations:
lcm.private.gdc.goog/claim-by-force: "true"
helm.sh/resource-policy: keep
system.private.gdc.goog/bootstrapper: "true"
creationTimestamp: null
labels:
system.private.gdc.goog/rack-name: ma-ac
name: ma-ac-bm15
namespace: gpc-system
spec:
bmc:
credentialsRef:
name: bmc-credentials-ma-ac-bm15
namespace: gpc-system
ip: 172.29.8.208
mac: 5c:ba:2c:42:28:2e
protocol: redfish
redfish:
systemPath: /redfish/v1/Systems/1
dataplaneNetwork: {}
encryptDisk: true
firmwareInstall: true
secureErase: true
luks:
enable: false
managementNetwork:
ips:
- 172.29.24.147
link: LOM1
provider: external
serverHardware:
bmhNetworkRef:
name: ma-ac-bm15
dataplaneNICPorts:
- mac: 5c:ba:2c:61:83:90
name: s1p1
- mac: 5c:ba:2c:61:83:98
name: s1p2
machineClassName: o1-standard1-64-gdc-metal
managementNICPort:
mac: 98:f2:b3:28:0b:70
name: LOM1
portBond:
name: s1p1-s1p2
networkBondModeType: 802.3ad
nicPortNames:
- s1p1
- s1p2
status: {}
En este archivo YAML de ejemplo, la dirección IP de gestión es 172.29.24.147. Se usa una longitud de prefijo de /26, ya que el bloque CIDR que se encuentra en Buscar la IP de gestión, el CIDR y la dirección de la puerta de enlace es /26.
Añade la dirección IP de gestión a la interfaz de gestión:
sudo ip addr add 172.29.24.147/26 dev ens15f0,
A continuación, define la interfaz con este comando ip:
ip link set ens15f0 up
Para comprobar si la configuración de la interfaz se ha realizado correctamente, usa ip link show ens15f0:
ip link show ens15f0
El resultado es similar al siguiente, con el mensaje UP que indica que la operación se ha completado correctamente:
6: ens15f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 98:f2:b3:28:0b:70 brd ff:ff:ff:ff:ff:ff
inet 172.29.24.147/26 brd 172.29.24.191 scope global ens15f0
valid_lft forever preferred_lft forever
inet6 fe80::9af2:b3ff:fe28:b70/64 scope link
valid_lft forever preferred_lft forever
9.2.4. Configurar el enrutamiento
MGMT_GATEWAY=MGMT_GATEWAY
MGMT_CIDR=MGMT_CIDR
MGMT_INTERFACE=MGMT_INTERFACE
ip route add $MGMT_CIDR via $MGMT_GATEWAY dev $MGMT_INTERFACE proto static"
Haz los cambios siguientes:
MGMT_GATEWAY: la dirección IP de la pasarela que se encuentra en la sección Buscar la IP de gestión, el CIDR y la dirección de la pasarela.MGMT_CIDR: el CIDR de gestión es del CIQ. Consulta la sección Buscar la dirección IP, CIDR y de la pasarela de gestión.MGMT_INTERFACE: un ejemplo de nombre de interfaz de gestión esens15f0. Se puede usar la dirección MAC encellcfg/serv-core.yamlpara identificar qué interfaz se usa en la red de gestión.
A continuación, ejecuta la secuencia de comandos en el programa de arranque.
9.3. Configurar el reloj del programa de arranque
Por el momento, no hay servidores NTP. Tenemos que definir manualmente el reloj del bootstrapper con una hora razonablemente precisa (con una diferencia de 1 segundo respecto a la hora real) en UTC. Asegúrate de usar "AM" o "PM" a menos que tengas claro que estás usando el reloj de 24 horas. Si el reloj no está bien configurado, tendrá consecuencias irreparables en fases posteriores.
date --set "DATE_TIME_UTC"
Sustituye DATE_TIME_UTC por la fecha y la hora en UTC, como 2023-03-21 01:14:30 AM UTC.
9.4. Iniciar sesión en el servidor de arranque
Si has cerrado sesión en el servidor de arranque, puedes volver a iniciarla en la ubicación física de la máquina de arranque o mediante el controlador del sistema.
9.4.1. Inicio de sesión en una máquina física
Inicia sesión en el servidor de arranque desde el equipo físico:
Conecta un teclado, un ratón y un monitor a la máquina de arranque.
Inicia sesión en la máquina con el nombre de usuario y la contraseña predeterminados.
9.4.2. Inicio de sesión del controlador del sistema
Inicia sesión en el servidor de arranque mediante el controlador del sistema:
Ve al carro de emergencia con el controlador del sistema.
Ejecuta el siguiente comando:
ssh ubuntu@BOOTSTRAPPER_IP_ADDRESSSustituye BOOTSTRAPPER_IP_ADDRESS por la dirección IP del servidor de arranque.
9.5. Estructura de archivos
Todas las operaciones posteriores se llevan a cabo como usuario raíz. A continuación, se muestra una estructura de directorios recomendada, pero no obligatoria.
root
├── kubeconfigs/ - recommend creating this directory to keep track of the many kubeconfigs
└── .kube/config - location of bootstrap(KIND) cluster kubeconfig
└── full-release-y.y.y-gdch.yyy - Extraction of the gdch tar from step download-files
├── bootstrapper.iso
├── docs
├── examples
├── gdcloud
├── harbor
├── oci
└── operations_center
└── root-admin/root-admin-kubeconfig - where the root-admin kubeconfig will be put after root-admin creation
└── full-release-y.y.y-gdch.yyy-hotfix - if necessary, hotfixes will be extracted to another folder
├── README - explains how to apply the hotfix
├── oci - directory containing the hotfix
├── config - this is for the output of the "create configuration files" step
├── output/cellcfg - initial CRs applied to the bootstrap cluster
├── output/assets
├── devices.csv - HW file useful to have for debugging
├── cables.csv - HW file useful to have for debugging
├── ciq.yaml - HW file useful to have for debugging