Cette page explique comment activer des instances inactives pour un service en configurant le nombre minimal d'instances à l'aide du comportement par défaut de l'autoscaling Cloud Run. Pour effectuer le scaling manuel de votre service, consultez la section Scaling manuel.
Si vous avez besoin de mieux contrôler le comportement d'autoscaling de votre service, vous pouvez définir un nombre minimal d'instances pour éviter les longs délais de démarrage des conteneurs et réduire la latence du service. Pour les services Cloud Run, Cloud Run effectue un scaling par défaut du nombre d'instances en fonction du nombre de requêtes entrantes.
Toutefois, si votre service nécessite une latence réduite, en particulier lors d'un scaling des instances actives à partir de zéro, vous pouvez modifier ce comportement par défaut en spécifiant un nombre minimal d'instances de conteneur à garder en attente et prêtes à diffuser des requêtes. Pour en savoir plus sur cette optimisation, reportez-vous à la section Conseils de développement généraux.
Cloud Run supprime les instances qui ne traitent pas de requêtes (inactives).
Lorsque le nombre minimal d'instances est défini, Cloud Run conserve au moins ce nombre d'instances en cours d'exécution, même si elles ne traitent pas de requêtes. Les instances actives qui dépassent le nombre min-instances peuvent devenir inactives si elles ne reçoivent pas de requêtes.
Par exemple, si min-instances est défini sur 10 et que le nombre d'instances actives est 0, le nombre d'instances inactives est de 10. Lorsque le nombre d'instances actives grimpe à 6, le nombre d'instances inactives diminue à 4.
Notez que si un service n'a pas diffusé de trafic récemment, la métrique "Instances actives" peut indiquer qu'aucune instance n'est active, même si vous en avez spécifié une ou plusieurs pour le nombre minimal d'instances.
Le nombre minimal d'instances peut être redémarré à tout moment.
Bonnes pratiques pour la haute disponibilité
Pour vous assurer que votre service reste disponibilité élevée, envisagez de configurer au moins trois instances minimales.
Limites du nombre minimal d'instances
Le nombre minimal d'instances est un objectif qui vise à garder les instances en attente et prêtes à l'emploi. Vous pouvez rencontrer des baisses temporaires en dessous du nombre minimal d'instances configuré en raison des risques non atténués suivants, même si vous configurez trois instances ou plus :
- Capacité de la zone ou de la région : en cas d'épuisement important de la capacité d'une zone ou d'une région, il est possible que le système ne puisse pas démarrer ni exécuter les instances.
- Rééquilibrage de l'infrastructure : l'infrastructure sous-jacente est parfois rééquilibrée, ce qui peut entraîner un retard temporaire dans le lancer des instances de remplacement. Pour en savoir plus sur la manière dont les instances sont arrêtées, consultez la documentation sur l'arrêt des instances.
- Plantages d'application : si votre conteneur plante au démarrage ou échoue systématiquement aux vérifications d'état, le système tente en permanence de démarrer des instances pour atteindre le minimum, mais le nombre d'instances opérationnelles et prêtes à diffuser reste inférieur au seuil configuré.
- Limites de quota et de facturation : si votre projet atteint les limites de quota de processeur ou de mémoire, ou si la facturation est désactivée, la plate-forme arrête le scaling et peut mettre fin aux instances, quelle que soit la configuration minimale des instances.
Facturation
Les instances qui continuent d'être exécutées à l'aide de la fonctionnalité d'instances minimales entraînent la facturation de frais.
Le schéma suivant montre comment fonctionne la facturation pendant le cycle de vie d'une instance lorsque vous configurez un nombre minimal d'instances pour un service ou une révision :
En fonction des paramètres de facturation configurés, le service est facturé comme suit :
- Pour la facturation basée sur les requêtes, vous êtes facturé à un taux inférieur lorsque les instances sont inactives et en attente de traitement des requêtes. Si le nombre minimal d'instances est défini sur
0, vous n'êtes pas facturé lorsque les instances sont inactives. - Pour la facturation basée sur les instances, le tarif par défaut vous est facturé pendant toute la durée de vie de l'instance. Le temps de démarrage et d'arrêt inclut le moment où une instance traite des requêtes ou est inactive. En d'autres termes, même si minInstances est défini sur
0, le tarif par défaut vous est toujours facturé. Cette option est idéale si vous avez besoin d'un processeur en dehors des requêtes. Si minInstances est défini sur0, vous êtes facturé au tarif par défaut.
Appliquer un nombre minimal d'instances au niveau du service ou au niveau de la révision
Vous pouvez configurer le nombre minimal d'instances au niveau du service ou de la révision. Google vous recommande d'appliquer un nombre minimal d'instances au niveau du service et d'éviter de combiner le nombre minimal d'instances au niveau du service et au niveau de la révision. En savoir plus sur le comportement lorsque vous configurez des paramètres de scaling au niveau du service et de la révision
Si vous appliquez un nombre minimal d'instances au niveau de la révision, les paramètres prennent effet lors du déploiement de la révision. Si vous appliquez cette fonctionnalité au niveau du service, le paramètre prend effet sans qu'il soit nécessaire de déployer une nouvelle révision.
Révisions et nombre minimal d'instances
Lorsque le nombre minimal d'instances est défini au niveau du service, les requêtes entrantes sont distribuées à toutes les révisions qui diffusent du trafic proportionnellement à la répartition du trafic.
Lorsque le nombre minimal d'instances est défini au niveau de la révision, ces instances sont démarrées dès que la révision est référencée dans une répartition du trafic ou présente un tag de trafic attribué. Cela signifie que l'instance est facturée lorsqu'elle traite des requêtes et lorsqu'elle attend des requêtes entrantes.
Révisions avec tag et instances minimales au niveau du service
Si une révision avec un tag attribué est démarrée, l'instance est comptabilisée dans le nombre minimal d'instances au niveau du service si elle fait partie d'une répartition du trafic.
Routage des requêtes avec un nombre minimal d'instances
Lorsque vous définissez un nombre minimal d'instances, Cloud Run répartit les requêtes entrantes de manière égale sur toutes les instances provisionnées. Il est important de comprendre ce comportement pour gérer les coûts, en particulier avec la facturation basée sur les requêtes ou si vous prévoyez de conserver des instances hot spare inactives. Pour minimiser les coûts, définissez le nombre minimal d'instances sur le nombre d'instances nécessaires pour traiter votre trafic habituel.
Rôles requis
Pour obtenir les autorisations nécessaires pour configurer et déployer des services Cloud Run, demandez à votre administrateur de vous accorder les rôles IAM suivants :
- Développeur Cloud Run (
roles/run.developer) sur le service Cloud Run - Utilisateur du compte de service (
roles/iam.serviceAccountUser) sur l'identité du service
Si vous déployez un service ou une fonction à partir du code source, vous devez également disposer de rôles supplémentaires dans votre projet et votre compte de service Cloud Build.
Pour obtenir la liste des rôles et des autorisations IAM associés à Cloud Run, consultez les sections Rôles IAM Cloud Run et Autorisations IAM Cloud Run. Si votre service Cloud Run communique avec les APIGoogle Cloud , telles que les bibliothèques clientes Cloud, consultez le guide de configuration de l'identité du service. Pour en savoir plus sur l'attribution de rôles, consultez les pages Autorisations de déploiement et Gérer les accès.
Configurer le nombre minimal d'instances au niveau du service
Par défaut, le nombre minimal d'instances au niveau du service est désactivé pour les instances de conteneur, avec une valeur de 0. Vous pouvez modifier cette valeur par défaut à l'aide de la consoleGoogle Cloud , de la Google Cloud CLI ou d'un fichier YAML :
Console
Dans la console Google Cloud , accédez à Cloud Run :
Sélectionnez Services dans le menu de navigation Cloud Run, puis cliquez sur Déployer un conteneur pour configurer un nouveau service. Si vous configurez un service existant, cliquez sur celui-ci.
Si vous configurez un service existant, cliquez sur l'onglet Scaling (Mise à l'échelle).
Dans la section Scaling du service, spécifiez le nombre minimal d'instances de conteneur dans le champ Nombre minimal d'instances.
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 le nombre minimal d'instances pour un service donné à l'aide de la commande suivante :
gcloud run services update SERVICE --min MIN-VALUE
Remplacez les éléments suivants :
- SERVICE : nom de votre service.
- MIN-VALUE : nombre d'instances de conteneur à garder en attente et prêtes à recevoir des requêtes. Spécifiez
defaultpour effacer tout paramétrage du nombre minimal d'instances.
Vous pouvez également définir le nombre minimal d'instances lors du déploiement à l'aide de la commande suivante :
gcloud run deploy --image IMAGE_URL --min MIN-VALUE
Remplacez les éléments suivants :
IMAGE_URL: référence à l'image de conteneur, par exempleus-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 formatLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.- MIN-VALUE : nombre d'instances de conteneur à garder en attente et prêtes à recevoir des requêtes. Spécifiez
defaultpour effacer tout paramétrage du nombre minimal d'instances.
YAML
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.
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
Mettez à jour l'attribut
run.googleapis.com/minScale:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE annotations: run.googleapis.com/minScale: 'MIN_INSTANCE'
Remplacez les éléments suivants :
- SERVICE : nom de votre service Cloud Run.
- MIN-INSTANCE : nombre d'instances à garder en attente et prêtes à recevoir des requêtes.
Créez ou mettez à jour le service à l'aide de la commande suivante :
gcloud run services replace service.yaml
La commande
gcloud run services replaceutilise par défaut le fichierservice.yamls'il est présent.
Bibliothèques clientes
Pour mettre à jour le nombre minimal d'instances de votre service à partir du code, procédez comme suit :
API REST
Pour mettre à jour le nombre minimal d'instances au niveau du service pour un service donné, envoyez une requête HTTP PATCH au point de terminaison service de l'API Cloud Run Admin.
Exemple, à l'aide de curl :
curl -H "Content-Type: application/json" \ -H "Authorization: Bearer ACCESS_TOKEN" \ -X PATCH \ -d '{ "scaling": { "minInstanceCount": MIN-VALUE }}' \ https://run.googleapis.com/v2/projects/PROJECT_ID/locations/REGION/services/SERVICE?update_mask=scaling.minInstanceCount
Remplacez les éléments suivants :
- ACCESS_TOKEN : jeton d'accès valide pour un compte disposant des autorisations IAM pour mettre à jour un service.
Par exemple, si vous êtes connecté à
gcloud, vous pouvez récupérer un jeton d'accès à l'aide degcloud auth print-access-token. À partir d'une instance de conteneur Cloud Run, vous pouvez récupérer un jeton d'accès via le serveur de métadonnées d'instance de conteneur. - MIN-VALUE : nombre d'instances de conteneur à garder en attente et prêtes à recevoir des requêtes.
- SERVICE : nom du service.
- REGION : Google Cloud région du service.
- PROJECT-ID : ID du projet Google Cloud .
Afficher le nombre minimal d'instances au niveau du service
Pour afficher les paramètres actuels du nombre minimal d'instances pour votre service Cloud Run, procédez comme suit :
Console
Dans la console Google Cloud , accédez à la page Services de Cloud Run :
Cliquez sur le service qui vous intéresse pour ouvrir le panneau Informations sur le service.
Cliquez sur l'onglet Mise à l'échelle.
Recherchez le paramètre Nombre minimal d'instances dans la section Scaling du service.
gcloud
Exécutez la commande suivante :
gcloud run services describe SERVICE
Recherchez la valeur Scaling : automatique (min. : MIN_VALUE, max. : MAX_VALUE) dans la configuration renvoyée.
Configurer le nombre minimal d'instances au niveau de la 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.
Par défaut, le paramètre min-instances est désactivé pour les instances de conteneur, et sa valeur est 0.
La mise à l'échelle au niveau de la révision n'est disponible que pour les services pour lesquels la fonctionnalité était déjà configurée.
Console
Dans la console Google Cloud , accédez à Cloud Run :
Sélectionnez Services dans le menu de navigation Cloud Run, puis cliquez sur Déployer un conteneur pour configurer un nouveau service. Si vous configurez un service existant, cliquez sur celui-ci.
Si vous configurez un nouveau service, remplissez la page initiale des paramètres du service, puis cliquez sur Conteneurs, mise en réseau, sécurité pour développer la page de configuration du service.
Si vous configurez un service existant, cliquez sur l'onglet Scaling (Mise à l'échelle).
Dans la section Scaling de révision, spécifiez le nombre minimal d'instances de conteneur dans le champ Nombre minimal d'instances.
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 mettre à jour le paramètre min-instance d'un service donné à l'aide de la commande suivante :
gcloud run services update SERVICE --min-instances MIN-VALUE
Remplacez les éléments suivants :
- SERVICE : nom de votre service.
- MIN-VALUE : nombre d'instances de conteneur à garder en attente et prêtes à recevoir des requêtes. Spécifiez
defaultpour effacer tout paramétrage du nombre minimal d'instances.
Vous pouvez également définir min-instance lors du déploiement à l'aide de la commande suivante :
gcloud run deploy --image IMAGE_URL --min-instances MIN-VALUE
Remplacez les éléments suivants :
IMAGE_URL: référence à l'image de conteneur, par exempleus-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 formatLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.- MIN-VALUE : nombre d'instances de conteneur à garder en attente et prêtes à recevoir des requêtes. Spécifiez
defaultpour effacer tout paramétrage du nombre minimal d'instances.
YAML
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
Mettez à jour l'attribut
autoscaling.knative.dev/minScale::apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: metadata: annotations: autoscaling.knative.dev/minScale: 'MIN-INSTANCE' name: REVISION
Remplacez les éléments suivants :
- SERVICE : nom de votre service Cloud Run.
- MIN-INSTANCE : nombre d'instances à garder en attente et prêtes à recevoir des requêtes.
REVISIONpar un nouveau nom de révision ou supprimez-le (le cas échéant). Si vous indiquez un nouveau nom de révision, il doit répondre aux critères suivants :- Commencer par
SERVICE- - Ne contenir que des lettres minuscules, des chiffres et
- - Ne pas se terminer par
- - Ne pas dépasser 63 caractères
- Commencer par
Créez ou mettez à jour le service à l'aide de la commande suivante :
gcloud run services replace service.yaml
La commande
gcloud run services replaceutilise par défaut le fichierservice.yamls'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 ressourcegoogle_cloud_run_v2_service dans votre configuration Terraform :La ressource google_cloud_run_v2_service précédente spécifie un nombre minimal d'instances de 1 sous template.scaling.
Remplacez 1 par votre propre nombre minimal d'instances.
Afficher le nombre minimal d'instances au niveau de la révision
La mise à l'échelle au niveau de la révision n'est disponible que pour les services pour lesquels cette fonctionnalité était déjà configurée.
Pour afficher les paramètres actuels du nombre minimal d'instances au niveau de la révision pour votre service Cloud Run, procédez comme suit :
Console
Dans la console Google Cloud , accédez à la page Services de Cloud Run :
Cliquez sur le service qui vous intéresse pour ouvrir le panneau Informations sur le service.
Cliquez sur l'onglet Mise à l'échelle.
Recherchez le paramètre Nombre minimal d'instances dans la section Scaling de révision.
gcloud
Exécutez la commande suivante :
gcloud run services describe SERVICE
Recherchez la valeur de Nombre minimal d'instances dans la configuration renvoyée.
Exemples
Les sections suivantes décrivent le comportement du service lors de la configuration du nombre minimal d'instances.
Utiliser des instances minimales ou maximales au niveau du service et de la révision
Vous pouvez combiner le nombre minimal ou maximal d'instances au niveau du service et de la révision. Lorsque vous configurez les deux, les limites d'instance finales sont déterminées par les règles suivantes :
- Les limites maximales prévalent toujours sur les limites minimales : toute limite maximale que vous configurez au niveau du service ou de la révision empêche strictement le système de dépasser cette valeur, quels que soient les paramètres minimaux.
- Pour les limites minimales, la plus élevée l'emporte : lorsque plusieurs limites minimales sont actives et ne sont pas bloquées par une limite maximale, l'autoscaler respecte la limite minimale la plus élevée.
| Service | Révision | Règle de résolution | Comportement observé |
|---|---|---|---|
| Min | Min | Enchère gagnante minimale la plus élevée | Si le nombre minimal d'instances de service est de 10 et celui de la révision est de 5, la révision exécute 10 instances pour respecter le nombre minimal global le plus élevé. |
| Min | Max | Le nombre maximal d'instances pour la révision remplace le nombre minimal d'instances pour le service | Si le nombre minimal d'instances au niveau du service est de 10, mais que le nombre maximal d'instances au niveau de la révision est de 5, la révision est strictement limitée à cinq instances. |
| Max | Min | Le nombre maximal d'instances du service remplace le nombre minimal d'instances de la révision | Si le nombre maximal d'instances au niveau du service est de 5, mais que le nombre minimal d'instances au niveau de la révision est de 10, la révision est strictement limitée à cinq instances. |
| Max | Max | Nombre maximal de victoires le plus faible | Si le nombre maximal d'instances au niveau du service est de 5 et celui au niveau de la révision est de 10, la révision est limitée à cinq instances. |
Cloud Run résout les contraintes de capacité en calculant d'abord le nombre maximal d'instances effectif (le plus petit entre le nombre maximal au niveau du service et celui au niveau de la révision). Il détermine ensuite le nombre minimal d'instances effectif (le plus élevé entre le nombre minimal au niveau de la révision et le nombre minimal alloué au niveau du service), en plafonnant le résultat au nombre maximal effectif.
Si vous ne configurez pas de valeur, l'autoscaler utilise les valeurs par défaut, par exemple 0 pour le nombre minimal d'instances au niveau du service et de la révision, et 100 pour le nombre maximal d'instances au niveau de la révision.
Utiliser un nombre minimal d'instances au niveau du service avec la répartition du trafic
Si vous utilisez la répartition du trafic, le nombre minimal d'instances au niveau du service est réparti entre les révisions en fonction de la proportion de la répartition du trafic. Par exemple, si le nombre minimal d'instances au niveau du service est égal à 10, une répartition du trafic à 50/50 alloue cinq instances minimales au niveau du service à chaque révision.
Le tableau suivant présente des exemples de scénarios de configuration :
| Exemple de cas d'utilisation | Service min | Révision A | Révision B | Répartition du trafic | Comportement observé |
|---|---|---|---|---|---|
| Aucun paramètre au niveau de la révision | 10 | Min : 0 | Min : 0 | 60/40 | La révision A reçoit six instances provenant du nombre minimal d'instances au niveau du service, proportionnellement à la répartition du trafic. La révision B reçoit quatre instances provenant du nombre minimal d'instances au niveau du service, proportionnellement à la répartition du trafic. |
| Recevoir plus que le nombre minimal d'instances au niveau du service en raison du nombre minimal d'instances au niveau de la révision | 10 | Min : 6 | Min : 0 | 50/50 | La révision A reçoit six instances provenant du nombre minimal d'instances au niveau de la révision. La révision B reçoit cinq instances provenant du nombre minimal d'instances au niveau du service, proportionnellement à la répartition du trafic. Cela dépasse le nombre minimal d'instances au niveau du service, ce qui est voulu. |
| Recevoir moins que le nombre minimal d'instances au niveau du service en raison du nombre maximal d'instances au niveau de la révision | 10 | Min. : 0 Max. : 3 |
Min : 0 | 50/50 | La révision A reçoit trois instances du nombre minimal d'instances au niveau du service qui sont générées par la répartition du trafic, mais est limitée au nombre maximal d'instances au niveau de la révision. La révision B reçoit cinq instances du nombre minimal d'instances au niveau du service, proportionnellement à la répartition du trafic. Cela entraîne huit instances au niveau du service, car deux sont perdues en raison du nombre maximal d'instances au niveau de la révision de la révision A. |
| Le nombre minimal d'instances au niveau du service est supérieur au nombre de révisions dans la répartition du trafic, et la quantité d'instances est proportionnelle à la répartition du trafic. | 3 | Min : 0 | Min : 0 | 50/50 | Les allocations fractionnaires (1,5 instance chacune) sont arrondies. La première révision listée dans la section sur le trafic reçoit la valeur arrondie au nombre entier supérieur. La révision B (listée en premier) reçoit deux instances, et la révision A en reçoit une. Le nombre total d'instances est de 3. |
Déterminer le nombre minimal d'instances nécessaires
Si le nombre minimal d'instances est défini sur une valeur supérieure à celle requise pour votre trafic habituel, de nombreuses instances peuvent devenir légèrement actives, chacune traitant quelques requêtes. Par exemple, si votre service nécessite généralement 200 instances pour la charge maximale, mais que le nombre minimal d'instances est configuré sur 600, les requêtes entrantes seront réparties sur les 600 instances. Ainsi, un grand nombre de ces 600 instances deviennent quelque peu actives, chacune gérant une petite partie du trafic, au lieu d'avoir environ 200 instances très actives et les 400 autres complètement inactives.
Pour minimiser les coûts (en augmentant l'utilisation sur un nombre réduit d'instances), définissez le nombre minimal d'instances sur une valeur qui correspond étroitement au nombre réel d'instances nécessaires pour traiter votre trafic habituel.
De plus, lorsque l'autoscaling provisionne des instances supplémentaires au-delà du nombre minimal configuré, Cloud Run préfère d'abord acheminer les requêtes entrantes vers les instances minimales configurées avant de les envoyer vers les instances autoscalées. Avec la facturation basée sur les requêtes, cet acheminement préférentiel vers les instances minimales configurées réduit les coûts en remplissant les instances minimales configurées avant d'utiliser les instances autoscalées. Notez que ce routage préférentiel peut également entraîner une utilisation plus élevée des instances minimales configurées que des instances autoscalées, en fonction du volume de trafic.