Funcionalidad del agente de invitado


En este documento, se proporciona una descripción general de la funcionalidad principal del agente invitado, un componente fundamental del entorno invitado. El entorno invitado contiene secuencias de comandos, daemons y objetos binarios que las instancias necesitan para ejecutarse en Compute Engine. Para obtener más información, consulta Entorno invitado.

Cómo funciona el agente invitado

A partir de la versión 20250901.00, el agente invitado usa una arquitectura basada en complementos. Este diseño mejora la confiabilidad y la flexibilidad, ya que separa las funciones del agente en componentes distintos.

La arquitectura del agente invitado consta de algunos componentes clave:

  • Administrador de agentes invitados: Es el proceso central de tu instancia que inicia, detiene y supervisa todos los complementos.
  • Complemento principal: Este complemento controla los servicios esenciales que tu instancia necesita para ejecutarse en Google Cloud. Su funcionalidad no se puede inhabilitar.
  • Complementos opcionales: Son complementos que integran tu instancia con otros Google Cloud servicios, como Cloud Monitoring. Puedes controlar cuáles de estos complementos se ejecutan en tu instancia.
  • Plano de control del agente: Es un servicio administrado de Google Cloud que se ejecuta en la infraestructura de backend de Google y administra el ciclo de vida de los complementos opcionales, incluida su instalación y actualizaciones.

Para obtener más información sobre la arquitectura del agente invitado, consulta Acerca del agente invitado.

Funcionalidad principal

El complemento principal es responsable de los servicios fundamentales que tu instancia necesita para funcionar en Compute Engine. En la siguiente sección, se detallan las funciones que proporciona el complemento principal. Puedes personalizar muchas de estas funciones con el archivo de configuración del agente invitado.

Configuración y optimizaciones iniciales de la instancia

El agente invitado realiza varias tareas de configuración para preparar la instancia para que se ejecute en Compute Engine. Como se muestra en la siguiente tabla, algunas tareas se ejecutan solo en el primer inicio, mientras que otras se ejecutan en cada inicio.

Tarea Frecuencia
Genera claves de host de SSH En el primer inicio
Crea la configuración de boto para usar Cloud Storage En el primer inicio
Optimiza para SSD local En cada inicio
Habilita la función de varias colas en todos los dispositivos virtionet En cada inicio

Puedes controlar estas tareas de configuración si configuras las opciones de InstanceSetup del archivo de configuración del agente invitado. Por ejemplo, puedes inhabilitar la optimización de SSD local configurando optimize_local_ssd = false.

Recopilación de telemetría del sistema

El agente invitado registra información básica de telemetría del sistema en el momento del inicio y, luego, una vez cada 24 horas. La información registrada incluye lo siguiente:

  • Versión y arquitectura del agente invitado
  • Nombre y versión del sistema operativo
  • Versión y lanzamiento del kernel del sistema operativo

Para inhabilitar la recopilación de datos de telemetría, establece la clave de metadatos disable-guest-telemetry en true. Para configurar metadatos, consulta Configura y quita metadatos personalizados.

Sincronización de reloj (solo en Linux)

Para garantizar la precisión del registro del tiempo, el agente invitado usa el componente clock_skew_daemon para corregir periódicamente el reloj de tu instancia y que coincida con el servidor físico en el que se ejecuta. Este proceso evita un problema llamado desviación del reloj y genera un mensaje system time has changed en los registros de tu instancia, lo que confirma que la hora se sincronizó correctamente.

Normalmente, el agente sincroniza el reloj después de un evento de inicio o detención, o después de una migración.

Puedes inhabilitar el componente clock_skew_daemon configurando clock_skew_daemon = false en el archivo de configuración del agente invitado.

Ejecución de secuencias de comandos de metadatos

Puedes usar secuencias de comandos de inicio y secuencias de comandos de apagado para realizar tareas automatizadas cada vez que se inicie o detenga tu instancia.

El agente invitado ayuda a ejecutar estas secuencias de comandos de la siguiente manera:

  • Ejecuta secuencias de comandos en un shell.
  • Si especificas varias secuencias de comandos (por ejemplo, si usas startup-script y startup-script-url), el agente ejecutará ambas.
  • Cuando se proporcionan varias secuencias de comandos para el mismo evento, el agente ejecuta primero la secuencia de comandos de la URL.
  • Después de que finaliza una secuencia de comandos, el agente registra su estado de salida.

Puedes configurar la ejecución de secuencias de comandos de metadatos modificando las opciones de MetadataScripts en el archivo de configuración del agente invitado.

Administración de cuentas de usuario y claves SSH

El agente invitado usa un accounts_daemon para administrar las cuentas de usuario locales y las claves SSH, que controlan el acceso a la instancia. El comportamiento específico varía entre los sistemas operativos Linux y Windows.

Puedes modificar las opciones de administración de cuentas configurando las opciones de Accounts en el archivo de configuración del agente invitado.

Linux

El Acceso al SO se usa para administrar el acceso SSH a tus instancias con la IAM sin tener que crear y administrar llaves SSH individuales. Para obtener más información sobre el Acceso al SO, consulta Acceso al SO. En las instancias de Linux, si el Acceso al SO no está habilitado, el agente crea y administra cuentas de usuario locales y sus claves SSH con la configuración de metadatos.

Cuando agregas o quitas claves SSH de los metadatos de la instancia o el proyecto, el agente invitado crea o borra una cuenta de usuario local. El agente invitado también realiza las siguientes acciones para administrar estas cuentas de usuario locales:

  • Mantiene el archivo authorized_keys para cada cuenta de usuario que administra de la siguiente manera:
    • Cuando agregas claves SSH a los metadatos, el agente crea un archivo authorized_keys para la cuenta de usuario.
    • Cuando quitas todas las claves SSH de un usuario de los metadatos, el agente borra el archivo authorized_keys de la cuenta de ese usuario.
  • Administra los privilegios de administrador con el grupo de Linux google-sudoers. Todos los miembros de este grupo reciben permisos de sudo en la instancia.
  • Agrega todas las cuentas de usuario que aprovisiona al grupo google-sudoers.
  • Agrega cuentas de usuario a cualquier grupo de Linux adicional que especifiques en la opción groups del archivo de configuración del agente invitado.

Windows

En las instancias de Windows, el agente crea automáticamente cuentas de usuario locales para cualquier cuenta de usuario SSH especificada en las claves SSH de metadatos a nivel de la instancia o del proyecto. El agente invitado también se encarga de crear cuentas de usuario y establecer o restablecer contraseñas. Estas cuentas de usuario locales son necesarias para conectarse a instancias de Windows con SSH.

Para evitar el aprovisionamiento no deseado de usuarios de AD, inhabilita el administrador de cuentas en la instancia del controlador de AD. Para obtener más información sobre cómo configurar AD en Compute Engine, consulta Implementa controladores de dominio.

Configuración del Acceso al SO (solo para Linux)

El Acceso al SO se usa para administrar el acceso SSH a tus instancias con la IAM sin tener que crear y administrar llaves SSH individuales. Para obtener más información sobre el Acceso al SO, consulta la documentación del Acceso al SO.

Cuando habilitas el Acceso al SO, el agente invitado es responsable de configurar la instancia para que use el Acceso al SO.

El agente invitado configura el Acceso al SO completando las siguientes tareas:

  • Agrega un bloque de configuración de Google al archivo de configuración SSHD y reinicia SSHD.
  • Agrega entradas de Acceso al SO al archivo nsswitch.conf.
  • Agrega entradas de Acceso al SO al archivo de configuración PAM para SSHD.

Si inhabilitas el Acceso al SO, se quitarán los cambios de configuración. Las opciones de la sección Accounts del archivo de configuración SSHD no se aplican a los usuarios del Acceso al SO.

Administración de redes

El agente invitado configura automáticamente las interfaces de red de tu instancia durante el arranque. Lee la configuración de red del servidor de metadatos para garantizar que tu instancia se conecte a la red correctamente y pueda acceder a otros servicios de Google Cloud.

Puedes controlar el comportamiento de administración de red del agente configurando las opciones de NetworkInterfaces en el archivo de configuración del agente invitado. Por ejemplo, puedes establecer la opción manage_primary_nic = true para que el agente administre la tarjeta de interfaz de red (NIC) principal, además de las NIC secundarias.

En cada inicio, el agente invitado realiza las siguientes tareas clave:

  • Habilita interfaces de red: El agente detecta el administrador de red activo en tu SO y lo usa para habilitar todas las NIC de red secundarias.
  • Configura rutas de IP: El agente configura las rutas de IP necesarias (solo IPv4) para funciones como el reenvío de IP y los rangos de IP de alias de la siguiente manera:
    • Establece rutas en la interfaz principal de Ethernet.
    • Configura las rutas de Google de forma predeterminada, con el ID del protocolo de enrutamiento 66. Este ID es un espacio de nombres para las direcciones IP configuradas del agente invitado. Este ID se puede cambiar con la opción ethernet_proto_id en el archivo de configuración del agente invitado.
  • Crea una ruta al servidor de metadatos: El agente garantiza que tu NIC principal siempre pueda comunicarse con el servidor de metadatos para obtener información de la instancia.
  • Configuración de VLAN: Si tu instancia está configurada para conectarse a una red de área local virtual (VLAN), el agente invitado controla automáticamente la configuración. Lee la configuración de VLAN del servidor de metadatos y configura la interfaz de red dentro de la instancia para que use la etiqueta de VLAN correcta. Esto garantiza que la instancia se comunique en la red lógica prevista. Es importante destacar que, si la VLAN está conectada a la NIC principal, el agente invitado la configura incluso si manage_primary_nic está inhabilitado.

Selección del administrador de redes

En Linux, el agente invitado detecta automáticamente qué administrador de red está disponible en el sistema y lo usa para configurar las interfaces de red. El agente verifica los administradores admitidos en orden de prioridad, desde netplan hasta dhclient.

En la siguiente tabla, se enumeran los administradores de red compatibles, organizados según el sistema operativo con el que se asocian con mayor frecuencia de forma predeterminada. La configuración específica de tu instancia puede diferir, pero esta tabla refleja el administrador de red predeterminado para los sistemas operativos enumerados.

Administrador de redes Sistema operativo Ubicación de la configuración Ruta de ejemplo Notas
netplan
  • Debian 12 o una versión posterior
  • Ubuntu 20.04 o una versión posterior
/run/netplan/ /run/netplan/20-google-guest-agent-eth0.yaml El agente también puede usar una ubicación de entrega en /etc/systemd/network/.
wicked
  • SLES
/etc/sysconfig/network/ /etc/sysconfig/network/ifcfg-eth0 Los archivos ifcfg existentes no se reemplazan, sino que se omiten.
NetworkManager
  • CentOS
  • RHEL
  • Rocky Linux
/etc/NetworkManager/system-connections/ /etc/NetworkManager/system-connections/google-guest-agent-eth0.nmconnection
systemd-networkd
  • Debian
/usr/lib/systemd/network/ /usr/lib/systemd/network/20-eth0-google-guest-agent.network
dhclient
  • Debian 11 o una versión anterior
  • Ubuntu 18.04 o una versión anterior
/run/ /run/dhclient.google-guest-agent.eth0.ipv4.pid Si no se detecta ningún otro administrador de red, el agente invitado usará dhclient de forma predeterminada.

Administración segura de credenciales del servidor de metadatos (MDS)

Las VM protegidas ahora admiten la comunicación segura con el servidor de metadatos a través del extremo HTTPS https://metadata.google.internal/computeMetadata/v1. Esta mejora proporciona un canal más seguro para el acceso a los metadatos.

Para habilitar esta comunicación segura, el agente de invitado recupera y almacena las credenciales necesarias en el disco de la instancia. Estas credenciales se guardan en una ubicación estándar, lo que las hace accesibles para cualquier aplicación cliente que se ejecute en la instancia. Para revisar estas ubicaciones, consulta Dónde se almacenan los certificados.

La configuración de los certificados de MDS HTTPS está inhabilitada de forma predeterminada. Para que tus VMs protegidas configuren automáticamente los certificados MDS de HTTPS, establece la clave de metadatos disable-https-mds-setup en false en tu instancia o proyecto. Para configurar metadatos, consulta Configura y quita metadatos personalizados.

La administración de credenciales por parte del agente invitado incluye lo siguiente:

  • Actualización inicial: Tanto el certificado raíz como las credenciales del cliente se actualizan cada vez que se inicia el proceso del agente invitado.
  • Actualización automática: Para mayor seguridad, el agente invitado actualiza automáticamente las credenciales del cliente cada 48 horas.
  • Período de superposición: El agente genera y guarda credenciales nuevas mientras las anteriores siguen siendo válidas. El período de superposición garantiza que los clientes tengan tiempo suficiente para hacer la transición a las nuevas credenciales antes de que venzan las anteriores. Este período de superposición también permite que el agente vuelva a intentar adquirir credenciales en caso de falla, lo que garantiza que haya credenciales válidas antes de que las existentes dejen de ser válidas.
  • Composición: El agente invitado garantiza que las credenciales del cliente consten de una clave privada de EC (curva elíptica) concatenada con el certificado del cliente.
  • Unicidad: El agente invitado garantiza que las credenciales sean únicas para una instancia y no se puedan usar en otro lugar.

Para obtener más información sobre el extremo del servidor de metadatos HTTPS, consulta Acerca del extremo del servidor de metadatos HTTPS.

De forma predeterminada, el agente invitado escribe los certificados directamente en el disco. Sin embargo, puedes configurar el agente para que integre certificados en los almacenes de certificados integrados del sistema operativo. Para habilitar esta integración, establece la clave de metadatos enable-https-mds-native-cert-store en true. Para configurar metadatos, consulta Configura y quita metadatos personalizados.

El comportamiento del agente para agregar certificados a los almacenes de confianza del SO varía según el SO de la siguiente manera:

Linux

El agente invitado realiza los siguientes pasos:

  1. Agrega el certificado raíz de MDS al almacén de confianza del sistema. La ruta de acceso específica depende de la distribución del SO. Para revisar estas ubicaciones, consulta Almacenamiento de certificados raíz en el almacén de confianza del SO.
  2. Ejecuta el comando adecuado para el SO, como update-ca-certificates o update-ca-trust, para actualizar el almacén de confianza local.

Windows

El agente agrega credenciales de cliente a Cert:\LocalMachine\My y el certificado raíz a Cert:\LocalMachine\Root.

Compatibilidad con clústeres de conmutación por error de Windows (solo para Windows)

El agente invitado supervisa el nodo activo en el clúster de conmutación por error de Windows Server y se coordina con el balanceador de cargas interno Google Cloud para reenviar todo el tráfico del clúster al nodo esperado.

Puedes controlar este comportamiento con los siguientes campos en los metadatos de la instancia o en el archivo instance_configs.cfg:

  • enable-wsfc: Cuando se establece en true, el agente ignora toda la información de reenvío de IP y comienza a responder al puerto de verificación de estado. La configuración predeterminada es false.
  • wsfc-agent-port: Especifica el puerto en el que el agente responde a las verificaciones de estado. El parámetro de configuración predeterminado es 59998.
  • wsfc-addrs: Es una lista de direcciones IP separadas por comas. Este parámetro de configuración avanzado te permite tener IPs de reenvío normales y IPs de clúster en la misma instancia. Cuando configuras este parámetro, el agente solo omite la configuración automática para las IPs de esta lista. De forma predeterminada, este valor no se establece.

¿Qué sigue?