Configurer des commandes de scaling personnalisées pour les services

Par défaut, Cloud Run est optimisé pour offrir des performances élevées avec un objectif d'utilisation de 60% pour le processeur et la simultanéité, et adapte automatiquement le nombre d'instances pour gérer toutes les requêtes entrantes. Toutefois, dans certains cas d'utilisation, vous pouvez configurer les facteurs de scaling à utiliser, comme le processeur uniquement, et définir des objectifs d'utilisation personnalisés.

Cloud Run fournit des contrôles de scaling pour vous donner plus de contrôle sur le comportement de scaling de votre service. Vous pouvez ainsi prendre des décisions éclairées concernant le scaling de votre charge de travail en fonction de vos besoins. Vous pouvez activer le comportement de scaling amélioré en conservant les objectifs d'utilisation par défaut ou en configurant les objectifs d'utilisation personnalisés suivants :

  • Objectif d'utilisation pour le scaling basé sur le processeur
  • Objectif d'utilisation pour le scaling basé sur la simultanéité

Les contrôles de scaling vous permettent d'optimiser les coûts et d'améliorer la prévisibilité de vos services. Pour en savoir plus sur le comportement d'autoscaling par défaut des services Cloud Run, consultez la page À propos de l'autoscaling des instances dans les services Cloud Run.

Limites relatives aux configurations

Les limites suivantes s'appliquent aux cibles de scaling personnalisées :

Facteur de scaling % par défaut % configurable minimal % configurable maximal
CPU target utilization 60% 10% 95%
Concurrency target utilization 60% 10% 95%

Activer le comportement de scaling amélioré

L'autoscaler de Cloud Run répond de manière précise aux cibles que vous configurez, même pour les services avec un faible nombre d'instances. Envisagez d'activer cette fonctionnalité pour améliorer la prévisibilité du scaling, même si vous prévoyez de conserver les objectifs d'utilisation par défaut de 60% pour le processeur et la simultanéité.

Pour activer cette fonctionnalité, vous pouvez utiliser la gcloud CLI ou YAML lorsque vous déployez une nouvelle révision.

Tout changement de configuration entraîne la création d'une révision. Les révisions ultérieures obtiennent aussi automatiquement le même paramètre de configuration, à moins que vous ne le mettiez explicitement à jour.

gcloud

Définissez les valeurs cibles d'utilisation du processeur et cibles d'utilisation de la simultanéité d'une révision donnée en exécutant la commande gcloud beta run services update suivante :

gcloud beta run services update SERVICE --scaling-cpu-target=0.6 \
--scaling-concurrency-target=0.6

Remplacez SERVICE par le nom du service.

YAML

  1. Si vous créez un service, ignorez cette étape. Si vous mettez à jour un service existant, téléchargez sa configuration YAML :

    gcloud run services describe SERVICE --format export > service.yaml
  2. Ajoutez les attributs run.googleapis.com/scaling-cpu-target et run.googleapis.com/scaling-concurrency-target.

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      annotations:
        run.googleapis.com/launch-stage: BETA
      name: SERVICE
    spec:
      template:
        metadata:
          annotations:
            run.googleapis.com/scaling-cpu-target: '0.6'
            run.googleapis.com/scaling-concurrency-target: '0.6'

    Remplacez SERVICE par le nom du service.

  3. Créez ou mettez à jour le service à l'aide de la commande suivante :

    gcloud run services replace service.yaml

    La commande gcloud run services replace utilise par défaut le fichier service.yaml s'il est présent.

Configurer des cibles personnalisées

Définissez des objectifs d'utilisation personnalisés pour optimiser les coûts ou améliorer les performances de vos charges de travail en configurant des objectifs d'utilisation spécifiques du processeur et de la simultanéité dans les limites de configuration.

Tout changement de configuration entraîne la création d'une révision. Les révisions ultérieures obtiennent aussi automatiquement le même paramètre de configuration, à moins que vous ne le mettiez explicitement à jour.

Vous pouvez configurer des contrôles de scaling à l'aide de la gcloud CLI ou de YAML lorsque vous déployez une nouvelle révision.

gcloud

Mettez à jour les valeurs cibles d'utilisation du processeur et cibles de la simultanéité d'une révision donnée en exécutant la commande gcloud beta run services update.

  • Pour mettre à jour l'objectif d'utilisation du processeur, exécutez la commande suivante :

    gcloud beta run services update SERVICE --scaling-cpu-target=CPU_TARGET

    Remplacez les éléments suivants :

    • SERVICE : nom du service.

    • CPU_TARGET : objectif d'utilisation du processeur. Spécifiez une valeur comprise entre 0,1 et 0,95. Vous ne pouvez configurer que deux chiffres au maximum après la virgule.

  • Pour mettre à jour l'objectif d'utilisation de la simultanéité, exécutez la commande suivante :

    gcloud beta run services update SERVICE --scaling-concurrency-target=CONCURRENCY_TARGET

    Remplacez les éléments suivants :

    • SERVICE : nom du service.

    • CONCURRENCY_TARGET : objectif d'utilisation de la simultanéité. Spécifiez une valeur comprise entre 0,1 et 0,95. Vous ne pouvez configurer que deux chiffres au maximum après la virgule.

  • Pour mettre à jour l'objectif d'utilisation du processeur et de la simultanéité, exécutez la commande suivante :

    gcloud beta run services update SERVICE --scaling-cpu-target=CPU_TARGET \
    --scaling-concurrency-target=CONCURRENCY_TARGET

    Remplacez les éléments suivants :

    • SERVICE : nom du service.
    • CPU_TARGET : objectif d'utilisation du processeur. Spécifiez une valeur comprise entre 0,1 et 0,95. Vous ne pouvez configurer que deux chiffres au maximum après la virgule.
    • CONCURRENCY_TARGET : objectif d'utilisation de la simultanéité. Spécifiez une valeur comprise entre 0,1 et 0,95. Vous ne pouvez configurer que deux chiffres au maximum après la virgule.

YAML

  1. Si vous créez un service, ignorez cette étape. Si vous mettez à jour un service existant, téléchargez sa configuration YAML :

    gcloud run services describe SERVICE --format export > service.yaml
  2. Pour mettre à jour l'objectif d'utilisation du processeur et de la simultanéité, ajoutez les attributs run.googleapis.com/scaling-cpu-target et run.googleapis.com/scaling-concurrency-target :

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      annotations:
        run.googleapis.com/launch-stage: BETA
      name: SERVICE
    spec:
      template:
        metadata:
          annotations:
            run.googleapis.com/scaling-cpu-target: 'CPU_TARGET'
            run.googleapis.com/scaling-concurrency-target: 'CONCURRENCY_TARGET'

    Remplacez les éléments suivants :

    • SERVICE : nom du service.
    • CPU_TARGET : objectif d'utilisation du processeur. Spécifiez une valeur comprise entre 0,1 et 0,95. Vous ne pouvez configurer que deux chiffres au maximum après la virgule.
    • CONCURRENCY_TARGET : objectif d'utilisation de la simultanéité. Spécifiez une valeur comprise entre 0,1 et 0,95. Vous ne pouvez configurer que deux chiffres au maximum après la virgule.
  3. Créez ou mettez à jour le service à l'aide de la commande suivante :

    gcloud run services replace service.yaml

    La commande gcloud run services replace utilise par défaut le fichier service.yaml s'il est présent.

Désactiver les contrôles de scaling

Vous pouvez désactiver les objectifs d'utilisation du processeur ou de la simultanéité, mais pas les deux. Un facteur de scaling doit toujours être actif. Pour désactiver les contrôles de scaling, rétablissez les valeurs d'utilisation par défaut au lieu de les désactiver. Lorsque vous désactivez un facteur de scaling, Cloud Run ignore cette métrique lors de la prise de décisions de scaling.

Vous pouvez désactiver les contrôles de scaling à l'aide de la gcloud CLI ou de YAML lorsque vous déployez une nouvelle révision.

gcloud

Vous pouvez désactiver l'objectif d'utilisation du processeur ou de la simultanéité en exécutant la commande gcloud beta run services update.

  • Pour effectuer un scaling uniquement par processeur, désactivez la cible de simultanéité en exécutant la commande suivante :

    gcloud beta run services update SERVICE --scaling-concurrency-target=disabled

    Remplacez SERVICE par le nom du service.

  • Pour effectuer un scaling uniquement par simultanéité, désactivez la cible de processeur en exécutant la commande suivante :

    gcloud beta run services update SERVICE --scaling-cpu-target=disabled

    Remplacez SERVICE par le nom du service.

YAML

  1. Si vous créez un service, ignorez cette étape. Si vous mettez à jour un service existant, téléchargez sa configuration YAML :

    gcloud run services describe SERVICE --format export > service.yaml
  2. Pour effectuer un scaling uniquement par processeur, désactivez la cible de simultanéité en définissant l'attribut run.googleapis.com/scaling-concurrency-target sur disabled :

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      annotations:
        run.googleapis.com/launch-stage: BETA
      name: SERVICE
    spec:
      template:
        metadata:
          annotations:
            run.googleapis.com/scaling-concurrency-target: disabled

    Remplacez SERVICE par le nom du service.

  3. Pour effectuer un scaling uniquement par simultanéité, désactivez la cible de processeur en définissant l'attribut run.googleapis.com/scaling-cpu-target sur disabled :

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      annotations:
        run.googleapis.com/launch-stage: BETA
      name: SERVICE
    spec:
      template:
        metadata:
          annotations:
            run.googleapis.com/scaling-cpu-target: disabled

    Remplacez SERVICE par le nom du service.

  4. Créez ou mettez à jour le service à l'aide de la commande suivante :

    gcloud run services replace service.yaml

    La commande gcloud run services replace utilise par défaut le fichier service.yaml s'il est présent.

Rétablir les valeurs par défaut

Lorsque vous rétablissez les valeurs par défaut de l'objectif d'utilisation du processeur ou de la simultanéité, vous désactivez la fonctionnalité de contrôles de scaling. Vous pouvez rétablir les contrôles de scaling par défaut à l'aide de la gcloud CLI ou de YAML lorsque vous déployez une nouvelle révision.

gcloud

Rétablissez les valeurs par défaut de l'objectif d'utilisation du processeur et de l'objectif de simultanéité en exécutant la commande gcloud beta run services update.

  • Pour rétablir la valeur par défaut de l'objectif d'utilisation du processeur, exécutez la commande suivante :

    gcloud beta run services update SERVICE --scaling-cpu-target=default

    Remplacez SERVICE par le nom du service.

  • Pour rétablir la valeur par défaut de l'objectif d'utilisation de la simultanéité, exécutez la commande suivante :

    gcloud beta run services update SERVICE --scaling-concurrency-target=default

    Remplacez SERVICE par le nom du service.

  • Pour rétablir les valeurs par défaut de l'objectif d'utilisation du processeur et de la simultanéité, exécutez la commande suivante :

    gcloud beta run services update SERVICE --scaling-cpu-target=default \
    --scaling-concurrency-target=default

    Remplacez SERVICE par le nom du service.

YAML

  1. Si vous créez un service, ignorez cette étape. Si vous mettez à jour un service existant, téléchargez sa configuration YAML :

    gcloud run services describe SERVICE --format export > service.yaml
  2. Pour rétablir les cibles par défaut d'utilisation du processeur et de la simultanéité, supprimez les attributs run.googleapis.com/scaling-cpu-target et run.googleapis.com/scaling-concurrency-target de votre fichier YAML :

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      annotations:
        run.googleapis.com/launch-stage: BETA
      name: SERVICE
    spec:
      template:
        metadata:
          # Remove the scaling target annotations to restore defaults
        ...

    Remplacez SERVICE par le nom du service.

  3. Créez ou mettez à jour le service à l'aide de la commande suivante :

    gcloud run services replace service.yaml

    La commande gcloud run services replace utilise par défaut le fichier service.yaml s'il est présent.

Afficher la configuration du scaling

Vous pouvez afficher votre configuration de scaling à l'aide de la gcloud CLI ou de YAML.

Console

  1. Dans la Google Cloud console, accédez à la page Services de Cloud Run :

    Accédez à Cloud Run

  2. Cliquez sur votre service pour ouvrir le panneau Détails du service.

  3. Cliquez sur l'onglet Scaling pour afficher les paramètres de scaling.

gcloud

  1. Exécutez la commande suivante :

    gcloud run services describe SERVICE

    Remplacez SERVICE par le nom du service.

  2. Recherchez les valeurs des paramètres Objectif d'utilisation du processeur : et Objectif d'utilisation de la simultanéité : dans la configuration renvoyée.

Bonnes pratiques

Vous pouvez optimiser les coûts et éviter le surdimensionnement en réduisant le nombre d'instances, ou améliorer les performances en effectuant un scaling plus agressif en réponse à des facteurs spécifiques. Pour déterminer les objectifs d'utilisation optimaux pour votre charge de travail, utilisez les stratégies suivantes :

  • Avant d'ajuster les cibles, identifiez la métrique qui déclenche le scaling de votre service. Pour identifier la métrique de scaling, procédez comme suit :

    1. Accédez à l'explorateur de métriques dans la Google Cloud console pour examiner le graphique de surveillance de l'utilisation du processeur et de la simultanéité.

    2. Recherchez et sélectionnez la métrique run.googleapis.com/scaling/recommended_instances, puis définissez Aggregation (Agrégation) sur Unaggregated (Non agrégé) pour afficher la métrique regroupée par facteur de scaling.

    Le facteur avec la valeur la plus élevée est celui qui contrôle le nombre d'instances de votre service. Si vous souhaitez qu'un autre facteur soit prioritaire ou si vous souhaitez effectuer un scaling plus ou moins agressif, ajustez l'objectif d'utilisation de ce facteur spécifique.

  • Ajustez les cibles de manière incrémentale et attendez quelques minutes entre les ajustements pour observer l'effet sur les performances.

  • Utilisez la répartition du trafic pour tester de nouvelles cibles de scaling en redirigeant un petit pourcentage de votre trafic vers une révision distincte avant de les déployer sur l'ensemble de votre service.

À propos des objectifs d'utilisation faibles

La réduction de votre objectif d'utilisation au minimum de 0,1 (10%) modifie considérablement le scaling de votre service.

La définition d'un objectif d'utilisation faible présente les avantages suivants :

  • Haute disponibilité du service : votre service effectue un scaling plus tôt, ce qui permet de maintenir une grande mémoire tampon de capacité inactive pour gérer les pics de trafic soudains sans impact sur la latence.

  • Scaling plus rapide avec un faible nombre d'instances : les services effectuent un scaling plus fiable avant d'atteindre des goulots d'étranglement à forte utilisation.

La définition d'objectifs d'utilisation faibles présente les inconvénients suivants :

  • Potentiel d'augmentation des coûts : vous exécutez plus d'instances que ce qui est strictement nécessaire pour votre charge actuelle, ce qui entraîne une facturation plus élevée.
  • Décisions de scaling plus fréquentes : avec des utilisations plus faibles, Cloud Run a une tolérance plus faible et n'attend pas aussi longtemps avant d'effectuer un scaling.

Étape suivante