Lorsqu'un nouveau pod démarre lors d'une mise à l'échelle horizontale, de mises à jour progressives ou de pics de trafic, il reçoit immédiatement une part proportionnelle du trafic. Pour les services qui dépendent du préchauffage JVM, du remplissage du cache ou de l'initialisation paresseuse, cette charge soudaine provoque des délais d'expiration des requêtes, des réponses lentes et une dégradation de l'expérience utilisateur.
La fonctionnalité de préchauffage dans Service Mesh (ASM) augmente progressivement le trafic vers les pods nouvellement démarrés sur une période configurable. Un nouveau pod commence avec un trafic minimal et monte en charge graduellement jusqu'à la fin de la période de préchauffage.
Fonctionnement
Configurez le préchauffage via le champ trafficPolicy.loadBalancer dans une DestinationRule. Deux champs contrôlent le comportement :
| Champ | Description |
|---|---|
simple |
La politique d'équilibrage de charge. Valeurs valides : ROUND_ROBIN et LEAST_REQUEST. |
warmupDurationSecs |
La durée de la fenêtre de préchauffage. Pendant cette période, Istio augmente progressivement le trafic vers le nouvel endpoint au lieu de distribuer le trafic proportionnellement. |
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
name: mocka
spec:
host: mocka
trafficPolicy:
loadBalancer:
simple: ROUND_ROBIN
warmupDurationSecs: 100s
Une fois la fenêtre de préchauffage écoulée, l'endpoint quitte le mode de préchauffage et reçoit le trafic selon la politique d'équilibrage de charge configurée.
Note : Le préchauffage nécessite qu'au moins un réplica de pod existant se trouve dans la zone actuelle pour prendre effet : Cluster mono-zone (zone A uniquement) : Le préchauffage prend effet à partir du deuxième pod. Le premier pod n'a aucune base de comparaison.Cluster multi-zones (zones A et B) : Si un seul pod existe dans la zone A, le démarrage d'un deuxième pod dans la zone B ne déclenche pas le préchauffage, car la planification inter-zones le traite comme un groupe distinct. Le préchauffage prend effet à partir du troisième pod.
Prérequis
Avant de commencer, assurez-vous que vous disposez des éléments suivants :
Une instance ASM Enterprise Edition ou Ultimate Edition, version 1.14.3 ou ultérieure. Consultez la rubrique Créer une instance ASM
Un cluster ajouté à l'instance ASM. Consultez la rubrique Ajouter un cluster à une instance ASM
kubectl connecté au cluster Container Service for Kubernetes (ACK). Consultez la rubrique Obtenir le fichier kubeconfig d'un cluster et utiliser kubectl pour se connecter au cluster
Une passerelle ingress créée. Consultez la rubrique Créer une passerelle ingress
L'application exemple Bookinfo déployée. Ce tutoriel utilise le service reviews. Consultez la rubrique Déployer une application dans une instance ASM
Étape 1 : Configurer les règles de routage et générer du trafic
Avant d'activer le préchauffage, établissez une ligne de base en acheminant le trafic via la passerelle ingress sans préchauffage.
Commencez par réduire le déploiement reviews-v3 à zéro réplica. Vous le redimensionnerez dans les étapes suivantes pour observer le comportement du trafic avec et sans préchauffage.
Définir la passerelle ingress
-
Créez un fichier nommé
bookinfo-gateway.yaml: -
Appliquez la configuration :
kubectl apply -f bookinfo-gateway.yaml
Créer la DestinationRule pour le service reviews (sans préchauffage)
-
Créez un fichier nommé
reviews.yaml: -
Appliquez la configuration :
kubectl apply -f reviews.yaml
Envoyer du trafic et vérifier la topologie
Utilisez l'outil de test de charge hey pour envoyer des requêtes pendant 10 secondes :
hey -z 10s -q 100 -c 4 http://<ingress-gateway-ip>/reviews/0
Remplacez <ingress-gateway-ip> par l'adresse IP de la passerelle ingress.
Pour vérifier le flux de trafic, consultez la topologie du maillage de services. Consultez la rubrique Utiliser la topologie du maillage pour afficher la topologie d'une application.

Étape 2 : Observer la distribution du trafic sans préchauffage
Cette étape établit une ligne de base : comment le trafic atteint un nouveau pod lorsque le préchauffage est désactivé.
Connectez-vous à la console ASM.
Dans le volet de navigation de gauche, choisissez Service Mesh > Mesh Management.
Sur la page Mesh Management, cliquez sur le nom de l'instance ASM cible ou cliquez sur Manage dans la colonne Actions.
-
Dans le volet de navigation de gauche, choisissez Observability Management Center > Monitoring indicators.
Pour les versions ASM antérieures à 1.17.2.35 : Cliquez sur l'onglet Monitoring instrument, puis sur l'onglet Cloud ASM Istio Service et sélectionnez le service reviews.
Pour la version ASM 1.17.2.35 ou ultérieure : Cliquez sur l'onglet Cloud ASM Istio Work load, sélectionnez reviews-v3 dans la liste déroulante Workload, et sélectionnez source dans la liste déroulante Reporter.
Augmentez le nombre de réplicas du déploiement reviews-v3 de zéro à un.
-
Exécutez un test de charge de 120 secondes :
hey -z 120s -q 100 -c 4 http://<ingress-gateway-ip>/reviews/0 -
Observez le tableau de bord de surveillance. Sans préchauffage, le pod reviews-v3 commence à recevoir des requêtes à un débit stable environ 45 secondes après le début du test de charge. Le timing exact dépend de l'environnement.

Après avoir observé la ligne de base, ramenez le déploiement reviews-v3 à zéro réplica.
Étape 3 : Activer le préchauffage
-
Mettez à jour
reviews.yamlpour ajouter le champwarmupDurationSecsavec la valeur120s:apiVersion: networking.istio.io/v1beta1 kind: DestinationRule metadata: name: reviews spec: host: reviews trafficPolicy: loadBalancer: simple: ROUND_ROBIN warmupDurationSecs: 120s -
Appliquez la configuration mise à jour :
kubectl apply -f reviews.yaml
Étape 4 : Vérifier l'effet du préchauffage
Augmentez le nombre de réplicas du déploiement reviews-v3 de zéro à un.
-
Exécutez un test de charge de 150 secondes :
hey -z 150s -q 100 -c 4 http://<ingress-gateway-ip>/reviews/0 -
Sur l'onglet Cloud ASM Istio Service, observez le tableau de bord de surveillance. Avec le préchauffage activé, le pod reviews-v3 reçoit le trafic progressivement. Il atteint un débit de requêtes stable environ 120 secondes après le début du test de charge, ce qui correspond à la durée de préchauffage configurée.
Note : La courbe peut apparaître en escalier car les métriques sont collectées à intervalles réguliers. L'augmentation réelle du trafic est fluide. Pour afficher des données de trafic plus granulaires, activez la collecte des journaux du proxy sidecar et recherchez les journaux dans la console Simple Log Service (SLS).


-
Une fois la fenêtre de préchauffage terminée, le trafic est réparti uniformément entre reviews-v1, reviews-v2 et reviews-v3. Dans cet exemple, la répartition uniforme est atteinte environ 150 secondes après le début du test de charge.

Voir aussi
Configurer la limitation locale dans le centre de gestion du trafic et Configurer la limitation globale pour le trafic entrant : Maintenez le trafic dans les seuils configurés pour préserver la disponibilité du service.
Utiliser ASMAdaptiveConcurrency pour le contrôle adaptatif de la concurrence : Ajustez dynamiquement le nombre maximal de requêtes simultanées autorisées pour un service en fonction des données d'échantillonnage des requêtes.
Configurer le champ connectionPool pour le disjoncteur : Protégez les services contre les défaillances en cascade lors d'une surcharge.