4.2. Mise à l'échelle automatique
4.2.1. Mise à l'échelle automatique Copier lienLien copié sur presse-papiers!
Knative Serving fournit une mise à l'échelle automatique, ou autoscaling, pour les applications afin de répondre à la demande entrante. Par exemple, si une application ne reçoit aucun trafic et que l'option scale-to-zero est activée, Knative Serving réduit l'application à zéro réplicas. Si l'option scale-to-zero est désactivée, l'application est réduite au nombre minimum de répliques configuré pour les applications sur le cluster. Les répliques peuvent également être mises à l'échelle pour répondre à la demande si le trafic de l'application augmente.
Les paramètres de mise à l'échelle automatique des services Knative peuvent être des paramètres globaux configurés par les administrateurs du cluster, ou des paramètres par révision configurés pour des services individuels.
Vous pouvez modifier les paramètres par révision de vos services en utilisant la console web d'OpenShift Container Platform, en modifiant le fichier YAML de votre service, ou en utilisant le CLI Knative (kn
).
Toutes les limites ou tous les objectifs que vous définissez pour un service sont mesurés par rapport à une instance unique de votre application. Par exemple, la définition de l'annotation target
sur 50
configure l'autoscaler pour qu'il mette l'application à l'échelle de manière à ce que chaque révision traite 50 demandes à la fois.
4.2.2. Limites d'échelle Copier lienLien copié sur presse-papiers!
Les limites d'échelle déterminent les nombres minimum et maximum de répliques pouvant servir une application à un moment donné. Vous pouvez définir des limites d'échelle pour une application afin d'éviter les démarrages à froid ou de contrôler les coûts informatiques.
4.2.2.1. Limites minimales de l'échelle Copier lienLien copié sur presse-papiers!
Le nombre minimum de répliques pouvant servir une application est déterminé par l'annotation min-scale
. Si la mise à zéro n'est pas activée, la valeur de min-scale
est par défaut 1
.
La valeur min-scale
est remplacée par défaut par des répliques 0
si les conditions suivantes sont remplies :
-
L'annotation
min-scale
n'est pas définie - La mise à l'échelle à zéro est activée
-
La classe
KPA
est utilisée
Exemple de spécification de service avec l'annotation min-scale
4.2.2.1.1. Définir l'annotation min-scale en utilisant le CLI Knative Copier lienLien copié sur presse-papiers!
L'utilisation de l'interface de programmation Knative (kn
) pour définir l'annotation min-scale
offre une interface utilisateur plus rationnelle et plus intuitive que la modification directe des fichiers YAML. Vous pouvez utiliser la commande kn service
avec l'indicateur --scale-min
pour créer ou modifier la valeur min-scale
pour un service.
Conditions préalables
- Knative Serving est installé sur le cluster.
-
Vous avez installé le CLI Knative (
kn
).
Procédure
Définissez le nombre minimum de répliques pour le service en utilisant l'option
--scale-min
:kn service create <service_name> --image <image_uri> --scale-min <integer>
$ kn service create <service_name> --image <image_uri> --scale-min <integer>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example command
kn service create example-service --image quay.io/openshift-knative/knative-eventing-sources-event-display:latest --scale-min 2
$ kn service create example-service --image quay.io/openshift-knative/knative-eventing-sources-event-display:latest --scale-min 2
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.2.2.2. Limites maximales de l'échelle Copier lienLien copié sur presse-papiers!
Le nombre maximum de répliques pouvant servir une application est déterminé par l'annotation max-scale
. Si l'annotation max-scale
n'est pas définie, il n'y a pas de limite supérieure pour le nombre de répliques créées.
Exemple de spécification de service avec l'annotation max-scale
4.2.2.2.1. Définir l'annotation max-scale en utilisant le CLI Knative Copier lienLien copié sur presse-papiers!
L'utilisation de l'interface de programmation Knative (kn
) pour définir l'annotation max-scale
offre une interface utilisateur plus rationnelle et plus intuitive que la modification directe des fichiers YAML. Vous pouvez utiliser la commande kn service
avec l'indicateur --scale-max
pour créer ou modifier la valeur max-scale
pour un service.
Conditions préalables
- Knative Serving est installé sur le cluster.
-
Vous avez installé le CLI Knative (
kn
).
Procédure
Définissez le nombre maximum de répliques pour le service en utilisant l'option
--scale-max
:kn service create <service_name> --image <image_uri> --scale-max <integer>
$ kn service create <service_name> --image <image_uri> --scale-max <integer>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example command
kn service create example-service --image quay.io/openshift-knative/knative-eventing-sources-event-display:latest --scale-max 10
$ kn service create example-service --image quay.io/openshift-knative/knative-eventing-sources-event-display:latest --scale-max 10
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.2.3. Concurrence Copier lienLien copié sur presse-papiers!
La concurence détermine le nombre de requêtes simultanées qui peuvent être traitées par chaque réplique d'une application à un moment donné. La simultanéité peut être configurée comme soft limit ou hard limit:
- Une limite souple est une limite de demande ciblée, plutôt qu'une limite strictement appliquée. Par exemple, en cas d'augmentation soudaine du trafic, la limite souple peut être dépassée.
Une limite stricte est une limite supérieure de demandes strictement appliquée. Si la concurrence atteint la limite supérieure, les demandes excédentaires sont mises en mémoire tampon et doivent attendre qu'il y ait suffisamment de capacité libre pour les exécuter.
ImportantL'utilisation d'une configuration de limite stricte n'est recommandée que s'il existe un cas d'utilisation clair pour votre application. Le fait de spécifier une limite basse et stricte peut avoir un impact négatif sur le débit et la latence d'une application, et peut provoquer des démarrages à froid.
L'ajout d'une cible souple et d'une limite stricte signifie que l'autoscaler vise la cible souple du nombre de requêtes simultanées, mais impose une limite stricte de la valeur de la limite stricte pour le nombre maximum de requêtes.
Si la valeur de la limite dure est inférieure à la valeur de la limite souple, la valeur de la limite souple est réduite, car il n'est pas nécessaire de cibler plus de demandes que le nombre qui peut réellement être traité.
4.2.3.1. Configuration d'une cible de concurrence douce Copier lienLien copié sur presse-papiers!
Une limite souple est une limite de demande ciblée, plutôt qu'une limite strictement appliquée. Par exemple, s'il y a une explosion soudaine du trafic, la cible de la limite souple peut être dépassée. Vous pouvez spécifier un objectif de concurrence souple pour votre service Knative en définissant l'annotation autoscaling.knative.dev/target
dans la spécification, ou en utilisant la commande kn service
avec les drapeaux corrects.
Procédure
Facultatif : Définissez l'annotation
autoscaling.knative.dev/target
pour votre service Knative dans la spécification de la ressource personnaliséeService
:Exemple de cahier des charges
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Facultatif : Utilisez la commande
kn service
pour spécifier l'indicateur--concurrency-target
:kn service create <service_name> --image <image_uri> --concurrency-target <integer>
$ kn service create <service_name> --image <image_uri> --concurrency-target <integer>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de commande pour créer un service avec un objectif de concurrence de 50 requêtes
kn service create example-service --image quay.io/openshift-knative/knative-eventing-sources-event-display:latest --concurrency-target 50
$ kn service create example-service --image quay.io/openshift-knative/knative-eventing-sources-event-display:latest --concurrency-target 50
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.2.3.2. Configuration d'une limite de concurrence stricte Copier lienLien copié sur presse-papiers!
Une limite de concurrence stricte est une limite supérieure de demandes strictement appliquée. Si la concurrence atteint la limite dure, les demandes excédentaires sont mises en mémoire tampon et doivent attendre qu'il y ait suffisamment de capacité libre pour les exécuter. Vous pouvez spécifier une limite dure de concurrence pour votre service Knative en modifiant la spécification containerConcurrency
, ou en utilisant la commande kn service
avec les drapeaux corrects.
Procédure
Facultatif : Définissez la spécification
containerConcurrency
pour votre service Knative dans la spécification de la ressource personnaliséeService
:Exemple de cahier des charges
Copy to Clipboard Copied! Toggle word wrap Toggle overflow La valeur par défaut est
0
, ce qui signifie qu'il n'y a pas de limite au nombre de requêtes simultanées autorisées dans une réplique du service à la fois.Une valeur supérieure à
0
spécifie le nombre exact de requêtes autorisées à circuler dans une réplique du service à la fois. Dans cet exemple, la limite de simultanéité est fixée à 50 requêtes.Facultatif : Utilisez la commande
kn service
pour spécifier l'indicateur--concurrency-limit
:kn service create <service_name> --image <image_uri> --concurrency-limit <integer>
$ kn service create <service_name> --image <image_uri> --concurrency-limit <integer>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de commande pour créer un service avec une limite de concurrence de 50 requêtes
kn service create example-service --image quay.io/openshift-knative/knative-eventing-sources-event-display:latest --concurrency-limit 50
$ kn service create example-service --image quay.io/openshift-knative/knative-eventing-sources-event-display:latest --concurrency-limit 50
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.2.3.3. Utilisation de l'objectif de simultanéité Copier lienLien copié sur presse-papiers!
Cette valeur indique le pourcentage de la limite de concurrence qui est effectivement ciblé par l'autoscaler. Il s'agit également de spécifier la valeur hotness à laquelle un réplica s'exécute, ce qui permet à l'autoscaler d'augmenter sa capacité avant que la limite définie ne soit atteinte.
Par exemple, si la valeur containerConcurrency
est fixée à 10 et la valeur target-utilization-percentage
à 70 %, l'autoscaler crée une nouvelle réplique lorsque le nombre moyen de requêtes simultanées dans toutes les répliques existantes atteint 7. Les demandes numérotées de 7 à 10 sont toujours envoyées aux répliques existantes, mais des répliques supplémentaires sont démarrées en prévision d'un besoin lorsque la valeur containerConcurrency
est atteinte.
Exemple de service configuré à l'aide de l'annotation target-utilization-percentage
4.2.4. Échelle zéro Copier lienLien copié sur presse-papiers!
Knative Serving permet une mise à l'échelle automatique, ou autoscaling, des applications pour répondre à la demande entrante.
4.2.4.1. Permettre le passage à l'échelle zéro Copier lienLien copié sur presse-papiers!
Vous pouvez utiliser la spécification enable-scale-to-zero
pour activer ou désactiver globalement le passage à l'échelle zéro pour les applications sur le cluster.
Conditions préalables
- Vous avez installé OpenShift Serverless Operator et Knative Serving sur votre cluster.
- Vous avez des droits d'administrateur de cluster.
- Vous utilisez le Knative Pod Autoscaler par défaut. La fonction de mise à zéro n'est pas disponible si vous utilisez le Kubernetes Horizontal Pod Autoscaler.
Procédure
Modifier la spécification
enable-scale-to-zero
dans la ressource personnalisée (CR)KnativeServing
:Exemple KnativeServing CR
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- La spécification
enable-scale-to-zero
peut être"true"
ou"false"
. Si elle vaut true, la fonction scale-to-zero est activée. S'il est défini sur false, les applications sont réduites à la valeur configurée minimum scale bound. La valeur par défaut est"true"
.
4.2.4.2. Configuration du délai de grâce scale-to-zero Copier lienLien copié sur presse-papiers!
Knative Serving fournit une mise à l'échelle automatique jusqu'à zéro pods pour les applications. Vous pouvez utiliser la spécification scale-to-zero-grace-period
pour définir une limite de temps supérieure pendant laquelle Knative attend que le mécanisme de mise à l'échelle vers zéro soit en place avant que la dernière réplique d'une application soit supprimée.
Conditions préalables
- Vous avez installé OpenShift Serverless Operator et Knative Serving sur votre cluster.
- Vous avez des droits d'administrateur de cluster.
- Vous utilisez le Knative Pod Autoscaler par défaut. La fonctionnalité scale-to-zero n'est pas disponible si vous utilisez le Kubernetes Horizontal Pod Autoscaler.
Procédure
Modifier la spécification
scale-to-zero-grace-period
dans la ressource personnalisée (CR)KnativeServing
:Exemple KnativeServing CR
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Durée du délai de grâce en secondes. La valeur par défaut est de 30 secondes.