Si votre plan de contrôle transmet inefficacement de grands volumes de configurations non pertinentes, utilisez la fonctionnalité d'optimisation xds adaptative pour améliorer l'efficacité des pushes. Cette fonctionnalité analyse les relations d'appel entre les services afin de générer automatiquement des ressources sidecar optimisées. Elle ne pousse ensuite que les configurations nécessaires vers les services requis, ce qui réduit le trafic réseau et améliore les performances ainsi que la réactivité de votre maillage de services.
Pour activer l'optimisation xds adaptative, votre instance ASM doit être en version 1.15.3.63 ou ultérieure. Pour plus d'informations sur la mise à niveau d'une instance, consultez Mettre à niveau une instance ASM.
La fonctionnalité d'optimisation xds adaptative prend uniquement en charge les services utilisant le protocole HTTP.
Contexte
Par défaut, le maillage de services ne peut pas déterminer les dépendances d'appel entre les services. Par conséquent, la configuration sidecar stocke des informations sur tous les services du plan de données. Chaque modification apportée au plan de contrôle ou au plan de données, telle que la création d'une nouvelle règle de service virtuel dans le plan de contrôle, amène le plan de contrôle à pousser de nouvelles configurations vers tous les sidecars du plan de données.
Pour résoudre ce problème, activez la fonctionnalité d'optimisation xds adaptative afin de créer automatiquement des ressources sidecar qui optimisent les pushes de configuration. Une fois cette fonctionnalité activée, une passerelle de sortie nommée istio-axds-egressgateway est déployée dans le cluster. Tout le trafic HTTP initial est dirigé vers cette passerelle de sortie, qui analyse automatiquement les dépendances des services en se basant sur les journaux d'accès. Ce processus est entièrement automatique. Pour plus d'informations sur les effets de l'optimisation liés à l'application de ressources sidecar, consultez Optimisation des pushes de configuration avec des ressources sidecar.
Prérequis
Étape 1 : Activer l'optimisation xds adaptative
Connectez-vous à la console ASM. Dans le volet de navigation de gauche, sélectionnez .
Sur la page Mesh Management, cliquez sur le nom de l'instance ASM. Dans le volet de navigation de gauche, sélectionnez .
-
Sur la page Adaptive xds optimization, activez le commutateur Enable adaptive xds optimization. Dans la boîte de dialogue Confirm, cliquez sur OK.
Après avoir cliqué sur OK, l'état Updating s'affiche sous le commutateur Enable adaptive xds optimization. Une fois la mise à jour terminée, le commutateur Enable adaptive xds optimization est activé et une liste des namespaces pouvant être optimisés de manière adaptative s'affiche en dessous.
Étape 2 : Activer l'optimisation du namespace
Lorsque vous activez l'optimisation xds adaptative pour un namespace, la fonctionnalité optimise automatiquement tous les services qu'il contient en utilisant des ressources sidecar. Vous pouvez également activer cette fonctionnalité pour un service spécifique en ajoutant l'annotation asm.alibabacloud.com/asm-adaptive-xds: true aux annotations du service.
Sur la page Mesh Management, cliquez sur le nom de l'instance ASM. Dans le volet de navigation de gauche, sélectionnez .
Sur la page Adaptive xds optimization, dans la liste Select namespaces to be optimized, activez le commutateur situé à côté du namespace du service cible. Cet exemple utilise le namespace default. Dans la boîte de dialogue Confirm, cliquez sur OK.
Sur la page de détails de l'instance ASM, sélectionnez dans le volet de navigation de gauche.
-
Sur la page Sidecar Traffic Configuration, consultez les détails des ressources sidecar.
Vous pouvez voir des ressources sidecar créées automatiquement dont les noms commencent par axds. Chaque ressource sidecar correspond à un service de l'application Bookinfo que vous avez déployée dans le cadre des prérequis. La page affiche quatre ressources sidecar : axds-details (étendue
app:details), axds-productpage (étendueapp:productpage), axds-ratings (étendueapp:ratings) et axds-reviews (étendueapp:reviews). La source de toutes les ressources est System et le namespace estdefault.
Étape 3 : Déclencher l'optimisation
-
Dans la barre d'adresse de votre navigateur, saisissez
http://{IP address of the ingress gateway}/productpagepour accéder à l'application Bookinfo.Remplacez
{IP address of the ingress gateway}par l'adresse IP obtenue à l'étape précédente. -
Vérifiez la ressource sidecar optimisée de manière adaptative.
Sur la page Mesh Management, cliquez sur le nom de l'instance ASM. Dans le volet de navigation de gauche, sélectionnez .
-
Sur la page Sidecar Traffic Configuration, recherchez la ressource axds-productpage et cliquez sur View YAML dans la colonne Actions. Voici un exemple.
apiVersion: networking.istio.io/v1beta1 kind: Sidecar metadata: annotations: adapted-svc: productpage.default.svc.cluster.local creationTimestamp: '2024-01-05T07:52:56Z' generation: 4 labels: asm-adaptive-xds-system: 'true' asm-system: 'true' provider: asm name: axds-productpage namespace: default resourceVersion: '23688435' uid: 753e3603-6bee-4dd1-b1fc-2e735a88**** spec: egress: - hosts: - arms-prom/* - default/details.default.svc.cluster.local - default/kubernetes.default.svc.cluster.local - default/reviews.default.svc.cluster.local - istio-system/* - kube-system/* workloadSelector: labels: app: productpageVous constatez qu'après avoir accédé à l'application Bookinfo, la ressource Sidecar
axds-productpage, générée pour optimiser le serviceproductpage, a automatiquement ajouté les servicesdetailsetreviewsdont dépend le serviceproductpage, sans nécessiter de configuration manuelle.
Optimisation xds adaptative : comparaison des performances
Les tests suivants comparent les performances du plan de contrôle et du plan de données dans le namespace asm-perf selon deux scénarios : avec l'optimisation xds adaptative désactivée et avec celle-ci activée.
Mise à l'échelle horizontale d'une charge de travail : augmentation du déploiement
httpbinde 2 à 400 réplicas.Génération de trafic de test : envoi de requêtes aléatoires depuis l'application
sleepvers différentes applicationshttpbinpour déclencher un nouveau push de configuration adaptative.Redémarrage d'une charge de travail : déclenchement d'un redéploiement de l'application
httpbinpour simuler des scénarios de mise à l'échelle et de mise à jour des charges de travail.
Étape 1 : Préparer l'environnement
-
Clonez le dépôt de scripts d'exemple.
git clone https://github.com/AliyunContainerService/asm-labs.git && \ cd asm-labs/asm-perf/adativexds -
Configurez l'environnement de test.
bash run.sh -sCette commande crée les ressources suivantes dans votre cluster :
Le namespace
asm-perf.Les charges de travail
prometheusetgrafanapour la surveillance.Une application
sleepet une applicationhttpbinavec deux réplicas pour recevoir les pushes de configuration.
Exécutez la commande suivante pour transférer un port vers le tableau de bord de surveillance. Vous pouvez ensuite accéder au tableau de bord en visitant
localhost:3000.kubectl port-forward svc/grafana -n asm-perf 3000
Étape 2 : Comparer les performances
-
Effectuez une mise à l'échelle horizontale de la charge de travail.
bash run.sh -suAttendez quelques instants, puis vérifiez le tableau de bord. Les résultats suivants sont attendus :
Sans optimisation xds adaptative
Utilisation du CPU de l'application Sleep

Utilisation de la mémoire de l'application Sleep

Bande passante réseau de l'application Sleep

Trafic du plan de contrôle
-
Sur la page Base Information de l'instance ASM, notez l'ID CLB associé à CLB Instance for Exposing Istio Pilot.
-
Connectez-vous à la console Classic Load Balancer (CLB). Cliquez sur l'icône Monitoring du CLB correspondant, sélectionnez et consultez le graphique Listener Traffic.

Lorsque les services du maillage changent, le plan de contrôle pousse de nouvelles configurations, ce qui engendre une certaine surcharge de performance.
Avec optimisation xds adaptative
Utilisation du CPU de l'application Sleep

Utilisation de la mémoire de l'application Sleep

Bande passante réseau de l'application Sleep

Trafic du plan de contrôle

Lorsque les services du maillage changent, le plan de contrôle pousse de nouvelles configurations, ce qui engendre une certaine surcharge de performance. Toutefois, l'impact sur les performances est moindre par rapport au scénario où l'optimisation xds adaptative est désactivée.
Configuration des ressources sidecar
-
Consultez la configuration active des ressources sidecar pour l'application
sleep.kubectl get sidecar axds-sleep -n asm-perf -o yamlRésultat attendu :
apiVersion: networking.istio.io/v1 kind: Sidecar metadata: annotations: adapted-svc: sleep.asm-perf.svc.cluster.local creationTimestamp: "2025-04-03T03:09:42Z" generation: 2 labels: asm-adaptive-xds-system: "true" asm-system: "true" provider: asm name: axds-sleep namespace: asm-perf resourceVersion: "14844729886" uid: 31dfc081-b0ec-403f-b420-91f3c3e5f8fb spec: egress: - hosts: - arms-prom/* - asm-perf/grafana.asm-perf.svc.cluster.local - default/kubernetes.default.svc.cluster.local - istio-system/* - kube-system/* workloadSelector: labels: app: sleepLe champ
spec.egress.hostsrépertorie plusieurs services. Cela signifie que seules les modifications apportées à ces services listés déclencheront un nouveau push de configuration vers l'applicationsleep. Pour plus d'informations sur l'impact des ressources sidecar sur les performances, consultez Optimisation des pushes de configuration avec des ressources sidecar.
-
-
Générez du trafic de test. Envoyez un total de 100 requêtes aléatoires depuis l'application
sleepvers différentes applicationshttpbin.bash run.sh -tUne fois les requêtes terminées, vérifiez à nouveau le tableau de bord.
Sans optimisation xds adaptative
Utilisation du CPU de l'application Sleep

Utilisation de la mémoire de l'application Sleep

Bande passante réseau de l'application Sleep

Trafic du plan de contrôle

Lorsque l'optimisation xds adaptative est désactivée, l'initiation du trafic depuis l'application
sleepn'affecte pas la distribution des configurations, car chaque charge de travail possède déjà la configuration complète.Avec optimisation xds adaptative
Utilisation du CPU de l'application Sleep

Utilisation de la mémoire de l'application Sleep

Bande passante réseau de l'application Sleep

Trafic du plan de contrôle

L'initiation du trafic depuis l'application
sleepdéclenche des pushes de configuration depuis le plan de contrôle.Configuration des ressources sidecar
-
Consultez la configuration active des ressources sidecar pour l'application
sleep.kubectl get sidecar axds-sleep -n asm-perf -o yamlRésultat attendu :
Le champ
spec.egress.hostsrépertorie plusieurs services. Cela signifie que seules les modifications apportées à ces services listés déclencheront un nouveau push de configuration vers l'applicationsleep. Pour plus d'informations sur l'impact des ressources sidecar sur les performances, consultez Optimisation des pushes de configuration avec des ressources sidecar.
-
-
Redémarrez la charge de travail.
bash run.sh -rUne fois toutes les charges de travail redémarrées, vérifiez les changements de trafic du plan de contrôle.
Sans optimisation xds adaptative Trafic du plan de contrôle

Lorsque les services du maillage changent, le plan de contrôle pousse de nouvelles configurations, ce qui engendre une certaine surcharge de performance.
Avec optimisation xds adaptative Trafic du plan de contrôle

Lors du redémarrage des charges de travail, le volume des pushes de configuration est considérablement réduit par rapport au scénario où l'optimisation xds adaptative est désactivée.
-
Restaurez l'environnement de test.
bash run.sh -sdIl faut environ deux minutes pour que les pods de l'application
httpbinpassent de 400 à 2 réplicas, ramenant ainsi l'environnement à son état initial.
Opérations connexes
Désactiver l'optimisation xds adaptative
Sur la page Mesh Management, cliquez sur le nom de l'instance ASM. Dans le volet de navigation de gauche, sélectionnez .
-
Sur la page Adaptive xds optimization, désactivez le commutateur Enable adaptive xds optimization. Dans la boîte de dialogue Confirm, cliquez sur OK.
Après avoir cliqué sur OK, l'état Updating s'affiche sous le commutateur Enable adaptive xds optimization. Une fois la mise à jour terminée, le commutateur Enable adaptive xds optimization est désactivé.
-
Sur la page de détails de l'instance, dans le volet de navigation de gauche, sélectionnez .
Les ressources sidecar créées par la fonctionnalité d'optimisation xds adaptative sont désormais supprimées.
Modifier la configuration de la passerelle de sortie
L'activation de l'optimisation xds adaptative déploie une passerelle de sortie nommée istio-axds-egressgateway dans votre cluster ACK. Cette passerelle est visible sur la page de votre cluster cible dans la console ACK. Tout le trafic HTTP initial est dirigé vers cette passerelle de sortie, qui analyse automatiquement les dépendances des services à partir de ses journaux d'accès. Vous pouvez modifier la configuration de la passerelle de sortie pour gérer différentes charges de trafic selon vos besoins.
Sur la page Mesh Management, cliquez sur le nom de l'instance ASM. Dans le volet de navigation de gauche, sélectionnez .
-
Sur la page Adaptive xds optimization, cliquez sur l'onglet Egress Gateway Configuration. Modifiez la configuration de la passerelle de sortie selon vos besoins, puis cliquez sur Update Settings.
Après avoir cliqué sur Update Settings, le maillage de services passe brièvement en état de mise à jour. Une fois la mise à jour terminée, la passerelle de sortie est mise à jour avec la configuration spécifiée.
RemarqueASM vous permet de modifier les paramètres de ressources de la passerelle de sortie, le nombre de réplicas de la passerelle, l'état de la mise à l'échelle automatique HPA, les seuils de surveillance des métriques HPA, ainsi que le nombre maximal et minimal de réplicas HPA.