Métriques personnalisées et externes pour l'autoscaling des charges de travail

Cette page décrit les métriques personnalisées et externes qui permettent à l'autoscaler horizontal des pods d'augmenter ou de diminuer automatiquement le nombre d'instances dupliquées d'une charge de travail donnée.

Contrairement à l'autoscaler vertical des pods, l'autoscaler horizontal des pods ne modifie pas les requêtes configurées de la charge de travail. L'autoscaler horizontal des pods n'augmente ou ne diminue que le nombre d'instances dupliquées.

Les métriques personnalisées et externes permettent d'adapter les charges de travail à d'autres exigences en dehors de celles qui leur sont propres. Prenons l'exemple d'une application destinée à extraire les tâches d'une file d'attente et à les exécuter. L'application peut avoir un objectif de niveau de service (SLO) défini sur le temps de traitement d'une tâche ou d'un certain nombre de tâches en attente. Si la file d'attente augmente, le SLO de la charge de travail peut permettre d'exécuter un nombre plus important d'instances dupliquées. Si la file d'attente est vide ou diminue plus rapidement que prévu, vous pouvez réaliser des économies en réduisant le nombre d'instances dupliquées, tout en restant dans le cadre du SLO défini pour la charge de travail.

Les métriques personnalisées et externes présentent certaines différences :

  • Une métrique personnalisée est signalée par votre application qui s'exécute dans Kubernetes. Pour en savoir plus, consultez la section Métriques personnalisées de cette rubrique.
  • Une métrique externe est signalée par une application ou un service ne s'exécutant pas sur votre cluster, mais dont les performances ont une incidence sur votre application Kubernetes. La métrique peut également être signalée à partir de Cloud Monitoring ou de Pub/Sub.

Les métriques personnalisées et externes fonctionnent également dans l'autre sens. Par exemple, un faible nombre de tâches dans une file d'attente peut indiquer que l'application est performante et qu'un autoscaling à la baisse peut être effectué.

Pour en savoir plus, consultez la section Métriques personnalisées ou Métriques externes.

Métriques personnalisées

Votre application peut signaler une métrique personnalisée à Cloud Monitoring. Vous pouvez configurer Kubernetes de façon à répondre à ces métriques et effectuer l'autoscaling de votre charge de travail. Par exemple, vous pouvez adapter l'application en fonction de métriques telles que les requêtes par seconde, les opérations d'écriture par seconde, les performances du réseau, la latence lors de la communication avec une autre application ou d'autres métriques pertinentes pour la charge de travail.

Une métrique personnalisée peut être sélectionnée pour les éléments suivants :

  • Un nœud, un pod ou un objet Kubernetes particulier, y compris un objet CustomResourceDefinition (CRD)
  • La valeur moyenne d'une métrique signalée par tous les pods dans un déploiement

Une métrique personnalisée peut être filtrée par libellé, en ajoutant un champ selector défini sur la clé et la valeur du libellé. Par exemple, vous pouvez définir le champ selector: "environment=prod" pour n'agréger que les valeurs de métriques sous le libellé environment=prod. Le sélecteur peut être une combinaison binaire de plusieurs expressions de libellés. Pour en savoir plus, consultez la page Libellés des métriques basées sur les journaux dans la documentation de Monitoring.

Avant de pouvoir utiliser des métriques personnalisées, vous devez activer Monitoring dans votre projet Google Cloud et installer l'adaptateur Stackdriver sur votre cluster. Une fois les métriques personnalisées exportées vers Monitoring, les événements d'autoscaling peuvent être déclenchés à l'aide de l'autoscaler horizontal des pods afin de modifier la forme de la charge de travail.

Les métriques personnalisées doivent être exportées depuis votre application dans un format spécifique. L'interface utilisateur de Monitoring inclut un outil de création automatique de métriques pour vous aider à créer automatiquement des métriques personnalisées. Si vous utilisez l'outil de création automatique pour créer des métriques personnalisées, Monitoring les détecte automatiquement.

Pour plus d'informations, reportez-vous au tutoriel Procéder à un autoscaling des déploiements avec des métriques personnalisées.

Métriques externes

Si vous devez adapter votre charge de travail en fonction des performances d'une application ou d'un service en dehors de Kubernetes, vous pouvez configurer une métrique externe. Par exemple, vous devrez peut-être augmenter la capacité de l'application afin d'ingérer les messages Pub/Sub si le nombre de messages non distribués a tendance à augmenter.

L'application externe doit exporter la métrique vers une instance Monitoring accessible au cluster. L'autoscaler horizontal des pods modifie automatiquement la forme de la charge de travail en fonction de l'évolution de chaque métrique au fil du temps.

Pour plus d'informations, reportez-vous au tutoriel Procéder à un autoscaling des déploiements avec des métriques externes.

Importer des métriques

Pour importer des métriques dans Monitoring, vous pouvez :

  • exporter les métriques depuis l'application à l'aide de l'API Cloud Monitoring ; ou
  • configurer l'application de façon à afficher les métriques au format Prometheus. Ensuite, exécutez l'adaptateur Prometheus à Stackdriver. Il s'agit d'un petit conteneur side-car Open Source qui récupère les métriques, les convertit au format Monitoring et les transmet à l'API Monitoring.

Pour plus d'informations, consultez la page Créer des métriques dans la documentation de Monitoring.

Étape suivante