Se o plano de controle enviar grandes volumes de configurações irrelevantes de forma ineficiente, use o recurso de otimização adaptativa de xds para aprimorar a eficiência do push. Esse recurso analisa as relações de chamada entre serviços e gera automaticamente recursos de sidecar otimizados. Em seguida, envia apenas as configurações necessárias aos serviços correspondentes, o que reduz a comunicação de rede e melhora o desempenho e a capacidade de resposta da service mesh.
Para ativar a otimização adaptativa de xds, a instância do ASM deve estar na versão 1.15.3.63 ou posterior. Para obter mais informações sobre como atualizar uma instância, consulte Atualizar uma instância do ASM.
A otimização adaptativa de xds suporta apenas serviços que usam o protocolo HTTP.
Informações básicas
Por padrão, a service mesh não determina as dependências de chamada entre os serviços. Consequentemente, a configuração do sidecar armazena informações sobre todos os serviços no plano de dados. Qualquer alteração no plano de controle ou no plano de dados, como a criação de uma nova regra de serviço virtual, faz com que o plano de controle envie novas configurações para todos os sidecars no plano de dados.
Para resolver isso, ative a otimização adaptativa de xds e crie automaticamente recursos de sidecar que otimizam os pushes de configuração. Após a ativação desse recurso, um egress gateway chamado istio-axds-egressgateway é implantado no cluster. Todo o tráfego HTTP inicial é direcionado a esse egress gateway, que analisa automaticamente as dependências de serviço com base nos logs de acesso. Esse processo é totalmente automático. Para obter mais informações sobre os efeitos da aplicação de recursos de sidecar na otimização, consulte Otimização de push de configuração com recursos de sidecar.
Pré-requisitos
Etapa 1: Ativar a otimização adaptativa de xds
Faça login no console do ASM. No painel de navegação à esquerda, escolha .
Na página Mesh Management, clique em nome da instância do ASM. No painel de navegação à esquerda, escolha .
-
Na página Adaptive xds optimization, ative a chave Enable adaptive xds optimization. Na caixa de diálogo Confirm, clique em OK.
Após clicar em OK, o status Updating aparece abaixo da chave Enable adaptive xds optimization. Quando a atualização for concluída, a chave Enable adaptive xds optimization será ativada e uma lista de namespaces passíveis de otimização adaptativa será exibida abaixo dela.
Etapa 2: Ativar a otimização de namespace
Ao ativar a otimização adaptativa de xds para um namespace, o recurso otimiza automaticamente todos os serviços contidos nele usando recursos de sidecar. Alternativamente, ative esse recurso para um serviço específico adicionando a anotação asm.alibabacloud.com/asm-adaptive-xds: true às annotations do serviço.
Na página Mesh Management, clique em nome da instância do ASM. No painel de navegação à esquerda, escolha .
Na página Adaptive xds optimization, na lista Select namespaces to be optimized, ative a chave ao lado do namespace do serviço alvo. Este exemplo usa o namespace default. Na caixa de diálogo Confirm, clique em OK.
Na página de detalhes da instância do ASM, escolha no painel de navegação à esquerda.
-
Na página Sidecar Traffic Configuration, visualize os detalhes dos recursos de sidecar.
Recursos de sidecar criados automaticamente cujos nomes começam com axds ficam visíveis. Cada recurso de sidecar corresponde a um serviço na aplicação Bookinfo implantada como parte dos pré-requisitos. A página exibe quatro recursos de sidecar: axds-details (escopo
app:details), axds-productpage (escopoapp:productpage), axds-ratings (escopoapp:ratings) e axds-reviews (escopoapp:reviews). A origem (Source) de todos os recursos é System, e o Namespace édefault.
Etapa 3: Acionar a otimização
-
Na barra de endereços do navegador, insira
http://{IP address of the ingress gateway}/productpagepara acessar a aplicação Bookinfo.Substitua
{IP address of the ingress gateway}pelo endereço IP obtido na etapa anterior. -
Verifique o recurso de sidecar otimizado adaptativamente.
Na página Mesh Management, clique em nome da instância do ASM. No painel de navegação à esquerda, escolha .
-
Na página Sidecar Traffic Configuration, localize o recurso axds-productpage e clique em View YAML na coluna Actions. O exemplo a seguir ilustra essa configuração.
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: productpageApós acessar a aplicação Bookinfo, observe que o recurso Sidecar
axds-productpage, gerado para otimizar o serviçoproductpage, adicionou automaticamente os serviçosdetailsereviews, dos quais o serviçoproductpagedepende, sem necessidade de configuração manual.
Otimização adaptativa de xds: comparação de desempenho
Os testes a seguir comparam o desempenho do plano de controle e do plano de dados no namespace asm-perf em dois cenários: com a otimização adaptativa de xds desativada e com ela ativada.
Dimensionar horizontalmente uma carga de trabalho: aumente as réplicas do deployment
httpbinde 2 para 400.Iniciar tráfego de teste: envie solicitações aleatórias da aplicação
sleeppara diferentes aplicaçõeshttpbinpara acionar um novo push de configuração adaptativa.Reiniciar uma carga de trabalho: acione uma nova implantação da aplicação
httpbinpara simular cenários de dimensionamento e atualização de carga de trabalho.
Etapa 1: Preparar o ambiente
-
Clone o repositório de scripts de exemplo.
git clone https://github.com/AliyunContainerService/asm-labs.git && \ cd asm-labs/asm-perf/adativexds -
Configure o ambiente de teste.
bash run.sh -sEste comando cria os seguintes recursos no cluster:
O namespace
asm-perf.As cargas de trabalho
prometheusegrafanapara monitoramento.Uma aplicação
sleepe uma aplicaçãohttpbincom duas réplicas para receber pushes de configuração.
Execute o comando a seguir para encaminhar uma porta ao painel de monitoramento. Em seguida, acesse o painel visitando
localhost:3000.kubectl port-forward svc/grafana -n asm-perf 3000
Etapa 2: Comparar o desempenho
-
Dimensione horizontalmente a carga de trabalho.
bash run.sh -suAguarde alguns instantes e verifique o painel. Os resultados esperados são:
Sem otimização adaptativa de xds
Utilização de CPU da aplicação Sleep

Uso de memória da aplicação Sleep

Largura de banda de rede da aplicação Sleep

Tráfego do plano de controle
-
Na página Base Information da instância do ASM, registre o ID do CLB associado à CLB Instance for Exposing Istio Pilot.
-
Faça login no console do Classic Load Balancer (CLB). Clique em ícone Monitoring do CLB correspondente, escolha e visualize o gráfico Listener Traffic.

Quando os serviços na mesh sofrem alterações, o plano de controle envia novas configurações, o que gera sobrecarga de desempenho.
Com otimização adaptativa de xds
Utilização de CPU da aplicação Sleep

Uso de memória da aplicação Sleep

Largura de banda de rede da aplicação Sleep

Tráfego do plano de controle

Quando os serviços na mesh sofrem alterações, o plano de controle envia novas configurações, o que gera sobrecarga de desempenho. No entanto, o impacto no desempenho é menor em comparação ao cenário em que a otimização adaptativa de xds está desativada.
Configuração de recursos de sidecar
-
Visualize a configuração ativa de recursos de sidecar para a aplicação
sleep.kubectl get sidecar axds-sleep -n asm-perf -o yamlSaída esperada:
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: sleepO campo
spec.egress.hostslista vários serviços. Isso significa que apenas alterações nesses serviços listados acionarão um novo push de configuração para a aplicaçãosleep. Para obter mais informações sobre o impacto de desempenho dos recursos de sidecar, consulte Otimização de push de configuração com recursos de sidecar.
-
-
Inicie o tráfego de teste. Envie um total de 100 solicitações aleatórias da aplicação
sleeppara diferentes aplicaçõeshttpbin.bash run.sh -tApós a conclusão das solicitações, verifique o painel novamente.
Sem otimização adaptativa de xds
Utilização de CPU da aplicação Sleep

Uso de memória da aplicação Sleep

Largura de banda de rede da aplicação Sleep

Tráfego do plano de controle

Com a otimização adaptativa de xds desativada, iniciar tráfego a partir da aplicação
sleepnão afeta a entrega de configurações, pois cada carga de trabalho já possui a configuração completa.Com otimização adaptativa de xds
Utilização de CPU da aplicação Sleep

Uso de memória da aplicação Sleep

Largura de banda de rede da aplicação Sleep

Tráfego do plano de controle

Iniciar tráfego a partir da aplicação
sleepaciona pushes de configuração do plano de controle.Configuração de recursos de sidecar
-
Visualize a configuração ativa de recursos de sidecar para a aplicação
sleep.kubectl get sidecar axds-sleep -n asm-perf -o yamlSaída esperada:
O campo
spec.egress.hostslista vários serviços. Isso significa que apenas alterações nesses serviços listados acionarão um novo push de configuração para a aplicaçãosleep. Para obter mais informações sobre o impacto de desempenho dos recursos de sidecar, consulte Otimização de push de configuração com recursos de sidecar.
-
-
Reinicie a carga de trabalho.
bash run.sh -rDepois que todas as cargas de trabalho forem reiniciadas, verifique as alterações no tráfego do plano de controle.
Sem otimização adaptativa de xdsTráfego do plano de controle

Quando os serviços na mesh sofrem alterações, o plano de controle envia novas configurações, o que gera sobrecarga de desempenho.
Com otimização adaptativa de xdsTráfego do plano de controle

Ao reiniciar cargas de trabalho, o volume de pushes de configuração é significativamente reduzido em comparação ao cenário em que a otimização adaptativa de xds está desativada.
-
Restaure o ambiente de teste.
bash run.sh -sdOs pods da aplicação
httpbinlevam cerca de dois minutos para reduzir de 400 para 2, restaurando o ambiente ao estado inicial.
Operações relacionadas
Desativar a otimização adaptativa de xds
Na página Mesh Management, clique em nome da instância do ASM. No painel de navegação à esquerda, escolha .
-
Na página Adaptive xds optimization, desative a chave Enable adaptive xds optimization. Na caixa de diálogo Confirm, clique em OK.
Após clicar em OK, o status Updating aparece abaixo da chave Enable adaptive xds optimization. Após a conclusão da atualização, a chave Enable adaptive xds optimization será desativada.
-
Na página de detalhes da instância, no painel de navegação à esquerda, escolha .
Os recursos de sidecar criados pela otimização adaptativa de xds foram excluídos.
Modificar a configuração do egress gateway
A ativação da otimização adaptativa de xds implanta um egress gateway chamado istio-axds-egressgateway no cluster ACK. Esse gateway fica visível na página do cluster alvo no console do ACK. Todo o tráfego HTTP inicial é direcionado a esse egress gateway, que analisa automaticamente as dependências de serviço a partir dos logs de acesso. Modifique a configuração do egress gateway para lidar com diferentes cargas de tráfego conforme necessário.
Na página Mesh Management, clique em nome da instância do ASM. No painel de navegação à esquerda, escolha .
-
Na página Adaptive xds optimization, clique em aba Egress Gateway Configuration. Modifique a configuração do egress gateway conforme necessário e clique em Update Settings.
Após clicar em Update Settings, a service mesh entra brevemente em estado de atualização. Quando a atualização for concluída, o egress gateway será atualizado com a configuração especificada.
NotaO ASM permite modificar as configurações de recursos do egress gateway, o número de réplicas do gateway, o status de auto scaling do HPA, os limiares de monitoramento de métricas do HPA e o número máximo e mínimo de réplicas do HPA.