Définir un nombre maximal d'instances de conteneur

Découvrez comment définir le nombre maximal d'instances de conteneur pouvant être utilisées pour votre service de diffusion Knative. La spécification du nombre maximal d'instances dans la diffusion Knative vous permet de limiter le scaling de votre service en réponse aux requêtes entrantes. Utilisez ce paramètre pour contrôler vos coûts ou limiter le nombre de connexions à un service externe, tel qu'une base de données.

Pour en savoir plus sur la manière dont Knative la diffusion utilise l'autoscaling des instances de conteneur, consultez la page Autoscaling des instances.

Définir et modifier le nombre maximal d'instances

Toute modification 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 nombre d'instances de conteneur peut évoluer à l'infini. Vous pouvez définir une limite supérieure du nombre maximal d'instances à l'aide de la console Google Cloud ou de la CLI gcloud lorsque vous déployez un nouveau service ou mettez à jour un service existant et déployez une révision :

Console

  1. Accédez à l'inférence Knative dans la console Google Cloud:

    Accéder à l'inférence Knative

  2. Cliquez sur Créer un service si vous configurez un nouveau service sur lequel effectuer un déploiement. Si vous configurez un service existant, cliquez sur celui-ci, puis sur Modifier et déployer la nouvelle révision.

  3. Sous Paramètres avancés, cliquez sur Conteneur.

  4. Dans le champ Nombre maximal d'instances, spécifiez le nombre maximal d'instances de conteneur souhaité.

  5. Cliquez sur Next (Suivant) pour passer à la section suivante.

  6. Dans la section Configurer la manière dont ce service est déclenché, sélectionnez la connectivité que vous souhaitez utiliser pour appeler le service.

  7. Cliquez sur Créer pour déployer l'image sur la diffusion Knative et attendez la fin du déploiement.

Ligne de commande

  • Pour les services existants, définissez le nombre maximal d'instances de conteneur en exécutant la commande gcloud run services update avec le paramètre --max-instances :

    gcloud run services update SERVICE --max-instances MAX-VALUE
    

    Remplacez :

    • SERVICE par le nom de votre service ;
    • MAX-VALUE par le nombre maximal d'instances de conteneur souhaité. Spécifiez default pour effacer tout paramétrage du nombre maximal d'instances.
  • Pour les nouveaux services, définissez le nombre maximal d'instances de conteneur en exécutant la commande gcloud run deploy avec le paramètre --max-instances :

    gcloud run deploy SERVICE --image=IMAGE_URL --max-instances MAX-VALUE
    

    Remplacez :

    • SERVICE par le nom de votre service ;
    • IMAGE_URL par une référence à l'image de conteneur, par exemple gcr.io/cloudrun/hello ;
    • MAX-VALUE par le nombre maximal d'instances de conteneur souhaité. Spécifiez default pour effacer tout paramétrage du nombre maximal d'instances.

YAML

Vous pouvez télécharger la configuration d'un service existant dans un fichier YAML avec la commande gcloud run services describe à l'aide de l'option --format=export. Vous pouvez ensuite modifier ce fichier YAML et déployer ces modifications à l'aide de la commande gcloud run services replace. Veillez à ne modifier que les attributs spécifiés.

  1. Téléchargez la configuration de votre service dans un fichier nommé service.yaml sur l'espace de travail local :

    gcloud run services describe SERVICE --format export > service.yaml

    Remplacez SERVICE par le nom de votre service de diffusion Knative.

  2. Dans votre fichier local, mettez à jour l'attribut autoscaling.knative.dev/maxScale: :

    spec:
     template:
       metadata:
         annotations:
           autoscaling.knative.dev/maxScale: 'MAX-INSTANCE' 

    Remplacer

    • MAX-INSTANCE par le nombre maximal souhaité.
  3. Remplacez la configuration du service en utilisant la commande suivante :

    gcloud run services replace service.yaml