Configurer des commandes de scaling personnalisées pour les services

Par défaut, Cloud Run est optimisé pour les hautes performances avec un taux d'utilisation cible de 60% pour le processeur et la simultanéité. Il ajuste automatiquement le nombre d'instances pour gérer toutes les requêtes entrantes. Toutefois, dans certains cas d'utilisation, vous pouvez souhaiter configurer les facteurs de scaling à utiliser, tels que le CPU uniquement, et définir des cibles d'utilisation personnalisées.

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 sur le scaling de votre charge de travail en fonction de vos besoins. Vous pouvez configurer les cibles d'utilisation personnalisées suivantes :

  • Utilisation cible pour le scaling basé sur le processeur
  • Utilisation cible 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 À 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 Pourcentage configurable minimal Pourcentage configurable maximal
CPU target utilization 60 % 10 % 90 %
Concurrency target utilization 60 % 10 % 95 %

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 CPU 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.

Même si vous configurez des cibles de concurrence personnalisées ou désactivez le scaling basé sur le processeur, le réglage adaptatif de la concurrence (ACT) reste actif. Pour en savoir plus, consultez À propos de l'autoscaling des instances.

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

Console

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

    Accédez à Cloud Run

  2. Si vous configurez un nouveau service, cliquez sur Déployer un conteneur pour afficher la page Créer un service.

  3. Si vous configurez un service existant, cliquez sur celui-ci pour ouvrir la page Informations sur le service, puis cliquez sur l'onglet Scaling (Mise à l'échelle).

  4. Recherchez la section Scaling du service. Assurez-vous que l'option Autoscaling est sélectionnée. Développez la section Personnaliser les facteurs d'autoscaling pour configurer les cibles d'utilisation suivantes :

    • Pour configurer l'objectif d'utilisation du processeur, cliquez sur Utilisation du processeur et saisissez une valeur comprise entre 10 et 90.

    • Pour configurer l'utilisation de la simultanéité cible, cliquez sur Utilisation des requêtes simultanées et saisissez une valeur comprise entre 10 et 95.

    • Cliquez sur OK sous chaque configuration d'utilisation.

  5. Cliquez sur Créer pour un nouveau service. Cliquez sur Afficher les différences et redéployer, puis sur Déployer les modifications pour un service existant.

gcloud

Mettez à jour les valeurs target CPU utilization (utilisation cible du processeur) et target concurrency utilization (utilisation cible de la simultanéité) d'une révision donnée en exécutant la commande gcloud run services update.

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

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

    Remplacez les éléments suivants :

    • SERVICE : nom de votre service.

    • CPU_TARGET : cible d'utilisation du processeur. Spécifiez une valeur comprise entre 0.1 et 0.90. Vous ne pouvez configurer que deux chiffres après la virgule.

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

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

    Remplacez les éléments suivants :

    • SERVICE : nom de votre service.

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

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

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

    Remplacez les éléments suivants :

    • SERVICE : nom de votre service.
    • CPU_TARGET : cible d'utilisation du processeur. Spécifiez une valeur comprise entre 0.1 et 0.90. Vous ne pouvez configurer que deux chiffres après la virgule.
    • CONCURRENCY_TARGET : cible d'utilisation de la simultanéité. Spécifiez une valeur comprise entre 0,1 et 0,95. Vous ne pouvez configurer qu'un maximum de deux chiffres 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'utilisation cible 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:
      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 de votre service.
    • CPU_TARGET : cible d'utilisation du processeur. Spécifiez une valeur comprise entre 0.1 et 0.90. Vous ne pouvez configurer que deux chiffres après la virgule.
    • CONCURRENCY_TARGET : cible d'utilisation de la simultanéité. Spécifiez une valeur comprise entre 0,1 et 0,95. Vous ne pouvez configurer qu'un maximum de deux chiffres après la virgule.
  3. Créez ou mettez à jour le service à l'aide de la commande suivante :

    gcloud run services replace service.yaml

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

Terraform

Pour savoir comment appliquer ou supprimer une configuration Terraform, consultez Commandes Terraform de base.

Ajoutez les éléments suivants à une ressource google_cloud_run_v2_service dans votre configuration Terraform :
resource "google_cloud_run_v2_service" "default" {
  name     = "SERVICE"
  location = "REGION"

  template {
    scaling {
      cpu_utilization         = CPU_TARGET
      concurrency_utilization = CONCURRENCY_TARGET
    }
    containers {
      image = "IMAGE_URL"
    }
  }
}

Remplacez les éléments suivants :

  • SERVICE : nom de votre service.
  • REGION : région Google Cloud , par exemple europe-west1.
  • CPU_TARGET : cible d'utilisation du processeur. Spécifiez une valeur comprise entre 0.1 et 0.90. Vous ne pouvez configurer que deux chiffres après la virgule.
  • CONCURRENCY_TARGET : cible d'utilisation de la simultanéité. Spécifiez une valeur comprise entre 0,1 et 0,95. Vous ne pouvez configurer qu'un maximum de deux chiffres après la virgule.
  • IMAGE_URL : référence à l'image de conteneur, par exemple us-docker.pkg.dev/cloudrun/container/hello:latest. Si vous utilisez Artifact Registry, le dépôt REPO_NAME doit déjà être créé. L'URL est au format LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.

Désactiver les contrôles de scaling

Vous pouvez désactiver les cibles 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 pilote de scaling, Cloud Run ignore cette métrique lorsqu'il prend des décisions de scaling.

Vous pouvez désactiver les commandes de scaling à l'aide de la console Google Cloud , de la gcloud CLI, de YAML ou de Terraform lorsque vous déployez une nouvelle révision.

Console

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

    Accédez à Cloud Run

  2. Cliquez sur le service pour ouvrir la page Informations sur le service, puis cliquez sur l'onglet Scaling (Mise à l'échelle).

  3. Recherchez la section Scaling du service. Assurez-vous que l'option Autoscaling est sélectionnée. Développez la section Personnaliser les facteurs d'autoscaling :

    • Pour effectuer un scaling uniquement en fonction du processeur, cliquez sur l'icône Supprimer à côté de Utilisation des requêtes simultanées, puis saisissez une valeur pour l'utilisation cible du processeur si elle est manquante.

    • Pour effectuer un scaling uniquement en fonction de la simultanéité, cliquez sur l'icône de suppression à côté de Utilisation du processeur, puis saisissez une valeur pour l'utilisation cible de la simultanéité si elle est manquante.

    • Cliquez sur OK sous chaque configuration d'utilisation.

  4. Cliquez sur Créer pour un nouveau service. Cliquez sur Afficher les différences et redéployer, puis sur Déployer les modifications pour un service existant.

gcloud

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

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

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

    Remplacez SERVICE par le nom du service.

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

    gcloud 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 en fonction du 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:
      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 en fonction de la 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:
      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

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

Terraform

Pour savoir comment appliquer ou supprimer une configuration Terraform, consultez Commandes Terraform de base.

Ajoutez les éléments suivants à une ressource google_cloud_run_v2_service dans votre configuration Terraform :
  • Pour effectuer un scaling uniquement par processeur, désactivez la cible de simultanéité en définissant concurrency_utilization sur 0 :

    resource "google_cloud_run_v2_service" "default" {
      name     = "SERVICE"
      location = "REGION"
    
      template {
        scaling {
          cpu_utilization         = CPU_TARGET
          concurrency_utilization = 0
        }
        containers {
          image = "IMAGE_URL"
        }
      }
    }
    

    Remplacez les éléments suivants :

    • SERVICE : nom de votre service.
    • REGION : région Google Cloud , par exemple europe-west1.
    • CPU_TARGET : cible d'utilisation du processeur. Spécifiez une valeur comprise entre 0.1 et 0.90. Vous ne pouvez configurer que deux chiffres après la virgule.
    • IMAGE_URL : référence à l'image de conteneur, par exemple us-docker.pkg.dev/cloudrun/container/hello:latest. Si vous utilisez Artifact Registry, le dépôt REPO_NAME doit déjà être créé. L'URL est au format LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
  • Pour effectuer un scaling uniquement par simultanéité, désactivez la cible de processeur en définissant cpu_utilization sur 0 :

    resource "google_cloud_run_v2_service" "default" {
      name     = "SERVICE"
      location = "REGION"
    
      template {
        scaling {
          cpu_utilization         = 0
          concurrency_utilization = CONCURRENCY_TARGET
        }
        containers {
          image = "IMAGE_URL"
        }
      }
    }
    

    Remplacez les éléments suivants :

    • SERVICE : nom de votre service.
    • REGION : région Google Cloud , par exemple europe-west1.
    • CONCURRENCY_TARGET : cible d'utilisation de la simultanéité. Spécifiez une valeur comprise entre 0,1 et 0,95. Vous ne pouvez configurer qu'un maximum de deux chiffres après la virgule.
    • IMAGE_URL : référence à l'image de conteneur, par exemple us-docker.pkg.dev/cloudrun/container/hello:latest. Si vous utilisez Artifact Registry, le dépôt REPO_NAME doit déjà être créé. L'URL est au format LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.

Rétablir les valeurs par défaut

Lorsque vous restaurez les valeurs par défaut de l'utilisation cible du processeur ou de la simultanéité cible, Cloud Run utilise l'objectif d'utilisation par défaut de 60% au lieu de vos cibles personnalisées. Vous pouvez restaurer les paramètres de scaling par défaut à l'aide de la console Google Cloud , de la gcloud CLI, de YAML ou de Terraform lorsque vous déployez une nouvelle révision.

Console

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

    Accédez à Cloud Run

  2. Cliquez sur le service pour ouvrir la page Informations sur le service, puis cliquez sur l'onglet Scaling (Mise à l'échelle).

  3. Recherchez la section Scaling du service. Assurez-vous que l'option Autoscaling est sélectionnée. Développez la section Personnaliser les facteurs d'autoscaling pour configurer les cibles d'utilisation suivantes :

    • Si les cibles Utilisation du processeur et Utilisation des requêtes simultanées ont été supprimées, cliquez sur Ajouter un signal pour les ajouter de nouveau.

    • Définissez les valeurs Utilisation du processeur et Utilisation des requêtes simultanées sur 60.

    • Cliquez sur OK sous chaque configuration d'utilisation.

  4. Cliquez sur Créer pour un nouveau service. Cliquez sur Afficher les différences et redéployer, puis sur Déployer les modifications pour un service existant.

gcloud

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

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

    gcloud 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'utilisation de la simultanéité cible, exécutez la commande suivante :

    gcloud 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'utilisation cible du processeur et de la simultanéité cible, exécutez la commande suivante :

    gcloud 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:
      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

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

Terraform

Pour savoir comment appliquer ou supprimer une configuration Terraform, consultez Commandes Terraform de base.

Ajoutez les éléments suivants à une ressource google_cloud_run_v2_service dans votre configuration Terraform :

Pour rétablir les cibles par défaut d'utilisation du CPU et de la simultanéité, supprimez les attributs cpu_utilization et concurrency_utilization du bloc scaling dans votre configuration Terraform :

resource "google_cloud_run_v2_service" "default" {
  name     = "SERVICE"
  location = "REGION"

  template {
    scaling {
      # Remove the scaling target attributes to restore defaults
    }
    containers {
      image = "IMAGE_URL"
    }
  }
}

Remplacez les éléments suivants :

  • SERVICE : nom de votre service.
  • REGION : région Google Cloud , par exemple europe-west1.
  • IMAGE_URL : référence à l'image de conteneur, par exemple us-docker.pkg.dev/cloudrun/container/hello:latest. Si vous utilisez Artifact Registry, le dépôt REPO_NAME doit déjà être créé. L'URL est au format LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.

Afficher la configuration du scaling

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

Console

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

    Accédez à Cloud Run

  2. Cliquez sur votre service pour ouvrir le panneau Informations sur le service.

  3. Cliquez sur l'onglet Mise à l'échelle pour afficher les paramètres de mise à l'échelle.

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 diminuant 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 cibles d'utilisation optimales pour votre charge de travail, utilisez les stratégies suivantes :

  • Avant d'ajuster les cibles, identifiez la métrique qui déclenche la mise à l'échelle de votre service. Pour identifier la métrique de scaling :

    1. Accédez à l'explorateur de métriques dans la console Google Cloud pour consulter le graphique de surveillance de votre pilote de scaling.

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

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

    Si le pilote de scaling est le réglage adaptatif de la concurrence (ACT), cela indique que l'utilisation du processeur sur une seconde dépasse 90% pour les instances individuelles et que Cloud Run limite dynamiquement la concurrence des requêtes pour protéger votre service. Pour atténuer l'impact de l'ACT sur votre scaling, envisagez d'augmenter l'allocation de processeur ou d'ajuster vos paramètres de simultanéité. Pour en savoir plus, consultez À propos de l'autoscaling des instances.

  • Ajustez les cibles de manière incrémentielle et patientez quelques minutes entre chaque ajustement pour observer l'effet sur les performances.

  • Utilisez la répartition du trafic pour tester de nouvelles cibles de scaling en dirigeant 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 de faible utilisation

Si vous réduisez votre cible d'utilisation au minimum de 0.1 (10%), l'évolutivité de votre service change considérablement.

Voici les avantages de définir une cible d'utilisation faible :

  • Haute disponibilité des services : votre service évolue beaucoup plus tôt, en conservant une grande marge de capacité inutilisée pour gérer les pics de trafic soudains sans impact sur la latence.

  • Scalabilité plus rapide avec un faible nombre d'instances : les services évoluent de manière plus fiable avant d'atteindre des goulots d'étranglement liés à une utilisation élevée.

Voici quelques inconvénients liés à la définition de cibles d'utilisation faibles :

  • Risque d'augmentation des coûts : vous exécutez plus d'instances que nécessaire pour votre charge actuelle, ce qui entraîne une facturation plus élevée.
  • Décisions de scaling plus fréquentes : à des taux d'utilisation plus faibles, Cloud Run a une tolérance plus faible et n'attend pas aussi longtemps avant de procéder au scaling.

Étapes suivantes