À propos de l'agent invité

Ce document fournit une présentation de l'architecture de l'agent invité. L'agent invité est un composant essentiel de l'environnement invité. L'environnement invité contient les scripts, les daemons et les binaires dont les instances ont besoin pour s'exécuter sur Compute Engine. Pour en savoir plus, consultez Environnement invité.

L'agent invité configure les services et définit les configurations minimales pour des fonctionnalités telles que l'exécution de scripts d'instantané, le basculement Windows, la connexion au système d'exploitation et l'authentification SSH basée sur les métadonnées. Pour en savoir plus sur les fonctions principales de l'agent invité, consultez Fonctionnalité de l'agent invité.

Architecture de l'agent invité

À partir de la version 20250901.00, l'architecture de l'agent invité passe d'une conception monolithique à un système moderne basé sur des plug-ins. Cette évolution améliore la flexibilité, la fiabilité et l'extensibilité.

  • Architecture monolithique : les agents invités antérieurs à la version 20250901.00 comportent un processus unique et unifié centré sur la description des instances par le serveur de métadonnées. Le serveur de métadonnées est un serveur HTTP par instance qui s'exécute en parallèle de chaque instance Compute Engine. Pour en savoir plus sur le serveur de métadonnées, consultez Métadonnées de VM.

    L'agent invité interroge le serveur de métadonnées de manière prolongée et prend des mesures en fonction des changements d'état. Avec cette architecture, l'état de l'agent est partagé entre toutes les tâches, telles que la configuration SSH et réseau. Cette approche monolithique ne disposait pas d'isolation d'interface ni de composant. Les modifications ou les introductions de fonctionnalités dans une zone de l'agent affectent l'ensemble du système simultanément. Ce modèle rend l'ajout de fonctionnalités et la couverture des tests difficiles.

  • Architecture basée sur des plug-ins : à partir de la version 20250901.00, l' agent invité est divisé en plug-ins distincts et indépendants gérés par un gestionnaire central. Chaque plug-in peut interagir avec le serveur de métadonnées et, selon les instructions d'un gestionnaire central, apporter les modifications nécessaires. Cette approche modulaire garantit qu'un plantage dans un plug-in n'affecte pas l'agent principal ni les autres plug-ins.

Architecture basée sur des plug-ins

Cette architecture est basée sur un gestionnaire central qui contrôle différents plug-ins, en séparant les fonctionnalités de base des plug-ins facultatifs spécifiques à un service, appelés extensions.

Composants clés

Le schéma suivant montre les composants clés de l'agent invité et leurs interactions.

Un gestionnaire d'agents invités centralisé contrôle un plug-in principal et des extensions.
    Le gestionnaire d'agents invités communique avec VM Extension Manager sur le backend de Google pour gérer les extensions.
Figure 1. Architecture de l'agent invité
  • Plug-in principal : ce plug-in encapsule la fonctionnalité de l'agent invité d'origine. Il effectue les tâches essentielles dont votre instance a besoin pour s'exécuter sur Google Cloud. Voici quelques exemples de tâches :

    • Configuration réseau : configure l'interface réseau principale pour activer la communication.
    • Accès SSH : gère les clés SSH de l'utilisateur pour autoriser les connexions sécurisées à votre instance.
    • Accès aux métadonnées : fournit un chemin d'accès à l'instance pour accéder aux métadonnées d'instance et de projet.

    Vous ne pouvez pas désactiver le plug-in principal.

    Pour en savoir plus sur les fonctions principales de l'agent invité, consultez Fonctionnalité de l'agent invité.

  • Extensions (plug-ins facultatifs) : vous pouvez provisionner ces extensions pour les intégrer à d'autres Google Cloud services afin d'effectuer des tâches telles que les suivantes :

    Pour en savoir plus sur l'installation et la gestion de ces extensions, consultez VM Extension Manager.

  • VM Extension Manager : ce service géré s'exécute sur l'infrastructure backend de Google. Google Cloud VM Extension Manager gère le cycle de vie des extensions, y compris leur installation, leurs mises à jour et leur configuration, en communiquant avec le gestionnaire d'agents invités sur l'instance.

  • Gestionnaire d'agents invités : ce processus central démarre, arrête et surveille l'état de tous les plug-ins. Le gestionnaire d'agents invités facilite la communication entre le plug-in principal et VM Extension Manager. La gestion du cycle de vie des extensions comprend les éléments suivants :

    • Installation et mises à jour : le gestionnaire d'agents invités installe, démarre, arrête et configure les extensions en fonction des instructions de VM Extension Manager.
    • Surveillance de l'état : le gestionnaire d'agents invités surveille l'état des extensions, y compris leur utilisation du processeur et de la mémoire, et renvoie ces informations à VM Extension Manager.
    • Gestion des règles : utilisez les API Compute Engine pour créer des règles qui contrôlent l'installation et la gestion des versions des extensions.

Avantages

L'architecture basée sur des plug-ins offre plusieurs avantages par rapport à la conception monolithique. Ces avantages comprennent les éléments suivants :

  • Isolation des plug-ins : chaque plug-in s'exécute dans un processus distinct. Par conséquent, un plantage dans l'un d'eux n'affecte pas l'agent principal ni les autres plug-ins.
  • Protection des ressources : l'agent invité utilise des fonctionnalités au niveau du système d'exploitation pour appliquer des limites de ressources aux plug-ins, empêchant ainsi un plug-in unique de consommer trop de processeur ou de mémoire.
  • Récupération automatique en cas de plantage : le système récupère automatiquement un plantage de plug-in en arrêtant et en relançant le plug-in.
  • Activation sélective : vous pouvez désactiver les extensions qui ne sont pas nécessaires, ce qui vous permet de sécuriser ou d'optimiser votre instance.
  • Réduction de la surcharge pour les extensions : le gestionnaire d'agents invités gère automatiquement l'installation et les mises à jour des extensions, ce qui réduit l'effort manuel nécessaire pour les maintenir à jour.

Emplacement des binaires de l'agent invité

Les tableaux suivants répertorient les chemins d'accès aux différents binaires de l'agent invité sur les instances Linux et Windows, en fonction de l'architecture.

Binaires d'agent basés sur des plug-ins

Ce tableau répertorie les chemins d'accès aux binaires de l'agent invité basés sur des plug-ins sur les instances Linux et Windows :

Composant Chemin d'accès sous Linux Chemin d'accès sous Windows
Gestionnaire d'agents invités /usr/bin/google_guest_agent_manager C:\ProgramData\Google\Compute Engine\agent\GCEWindowsAgentManager.exe
Binaire du plug-in principal /usr/lib/google/guest_agent/core_plugin C:\Program Files\Google\Compute Engine\agent\CorePlugin.exe
Exécuteur du script de métadonnées /usr/bin/gce_metadata_script_runner C:\Program Files\Google\Compute Engine\agent\GCEMetadataScriptRunner.exe

Binaires d'agent monolithiques

Le tableau suivant répertorie les chemins d'accès aux binaires de l'agent invité monolithiques sur les instances Linux et Windows :

Composant Chemin d'accès sous Linux Chemin d'accès sous Windows
Agent invité /usr/bin/google_guest_agent C:\Program Files\Google\Compute Engine\agent\GCEWindowsAgent.exe
Exécuteur du script de métadonnées /usr/bin/google_metadata_script_runner C:\Program Files\Google\Compute Engine\metadata_scripts\GCEMetadataScripts.exe
Clés autorisées Non applicable C:\Program Files\Google\Compute Engine\agent\GCEAuthorizedKeys.exe

Services de daemon de l'agent invité

Les tableaux suivants répertorient les services de daemon de l'agent invité installés sur les instances Linux et Windows. Ces services s'exécutent en tant qu'unités systemd sous Linux et en tant que services Windows sous Windows.

Composant Nom du service sous Linux Nom du service sous Windows État
Gestionnaire d'agents invités google-guest-agent-manager.service GCEAgentManager Activé dans tous les modes, y compris la rétrocompatibilité.
Agent invité google-guest-agent.service GCEAgent Désactivé par défaut.
Activé uniquement en mode de rétrocompatibilité.
Gestionnaire de compatibilité de l'agent invité google-guest-compat-manager.service GCEWindowsCompatManager Activé dans tous les modes, y compris la rétrocompatibilité.
Actualisation du certificat de charge de travail gce-workload-cert-refresh.timer N/A Désactivé par défaut.
Activé uniquement en mode de rétrocompatibilité.
Scripts de démarrage google-startup-scripts.service GCEStartup
Scripts d'arrêt google-shutdown-scripts.service Shutdown
  • Linux : activé dans tous les modes.
  • Windows : Shutdown n'est pas un service de daemon. Il est configuré en tant qu'exécution de script de stratégie de groupe . Pour en savoir plus sur l'implémentation, consultez le le script d'installation.

Rétrocompatibilité

Pour assurer une transition fluide de l'ancien agent invité monolithique vers le système basé sur des plug-ins, le package d'agent invité inclut plusieurs composants conçus pour la rétrocompatibilité. Ces composants ne font pas partie de l'architecture basée sur des plug-ins et ne s'activent que si vous choisissez manuellement de revenir à l'agent monolithique en définissant l'attribut de métadonnées enable-guest-agent-core-plugin sur false.

Les composants qui prennent en charge cette compatibilité sont les suivants :

  • Gestionnaire de compatibilité de l'agent invité : ce package gère le basculement entre l'agent basé sur des plug-ins et l'agent monolithique.
  • Gestionnaire de compatibilité de l'exécuteur de script de métadonnées : ce package garantit que l'exécuteur de script approprié est utilisé, selon que l'agent monolithique ou basé sur des plug-ins est actif.
  • Gestionnaire de compatibilité des clés autorisées (Windows uniquement) : ce package gère les clés SSH, en veillant à ce que les clés appropriées soient utilisées pour l'ancien ou le nouvel agent.
Composant Chemin d'accès sous Linux Chemin d'accès sous Windows
Gestionnaire de compatibilité de l'agent invité /usr/bin/google_guest_compat_manager C:\Program Files\Google\Compute Engine\agent\GCEWindowsCompatManager.exe
Gestionnaire de compatibilité de l'exécuteur de script de métadonnées /usr/bin/metadata_script_runner_compat C:\Program Files\Google\Compute Engine\metadata_scripts\GCECompatMetadataScripts.exe
Gestionnaire de compatibilité des clés autorisées Non applicable C:\Program Files\Google\Compute Engine\agent\GCEWindowsAuthorizedKeysCompat.exe

Étape suivante