O ASM traffic scheduling suite oferece uma arquitetura escalável e não intrusiva para gerenciamento centralizado de tráfego em sistemas distribuídos. Esse recurso aumenta a confiabilidade de aplicações cloud-native, reduz custos e melhora a utilização de recursos.
O que é o ASM traffic scheduling suite?
O ASM traffic scheduling suite é uma arquitetura centralizada de agendamento de tráfego desenvolvida sobre o ASM. Ela gerencia e agenda requisições em aplicações distribuídas cloud-native.
O conjunto é composto por um Agent e um controller. O controller publica políticas predefinidas de agendamento de tráfego no Agent. Quando um sidecar proxy encaminha requisições de entrada ou saída de um pod, o Agent aplica decisões de agendamento para limitar ou enfileirar essas requisições.
Ative o ASM traffic scheduling suite
ACK Serverless e Container Compute Service (ACS) não oferecem suporte ao ASM traffic scheduling suite.
Para usar o ASM traffic scheduling suite, verifique se a versão da sua instância do ASM é 1.21.6.82 ou posterior e se há um cluster Kubernetes adicionado à instância. Para mais informações, consulte Adicionar um cluster a uma instância do ASM.
Para ativar o ASM traffic scheduling suite:
ASM console
Faça login no console do ASM. No painel de navegação à esquerda, escolha .
Clique no nome da instância do ASM. No painel de navegação à esquerda, escolha .
Selecione a aba Advanced Traffic Scheduling e clique em Enable Traffic Scheduling.
-
Configure os parâmetros a seguir e clique em OK.
Item de configuração
Descrição
Storage Class
Classes de armazenamento válidas para troca de dados entre agentes de agendamento e metadados.
Configure Resource
Configuração de recursos para pods do Agent.
Limit: 2 CPUs, 1024 MiB por padrão.
Request: 0,5 CPUs, 512 MiB por padrão.
Timeout Period
Em caso de sobrecarga do sistema, as requisições são enfileiradas. Requisições que permanecerem na fila além do período especificado serão descartadas.
Effective Scope
O escopo global é o padrão. Escopos compatíveis:
-
Escopo de gateway: aplica-se a recursos associados a um gateway específico.
-
Escopo de carga de trabalho: aplica-se a uma carga de trabalho específica.
-
Escopo de namespace: aplica-se a um namespace específico.
-
kubectl
Use o kubectl para conectar-se à instância do ASM. Para mais informações, consulte Acessar recursos do Istio com kubectl.
-
Execute o comando a seguir:
kubectl patch asmmeshconfig default --type=merge --patch='{"spec":{"adaptiveSchedulerConfiguration":{"enabled":true,"schedulerScopes":[{"namespace":"default"}]}}}'
Políticas de agendamento de tráfego compatíveis
O ASM traffic scheduling suite oferece suporte às seguintes políticas.
|
Política |
Descrição |
Referências |
|
Limitação de taxa de tráfego |
Usa a CRD RateLimitingPolicy para fornecer limitação global em serviços especificados. Em comparação com a limitação do Istio open-source, esta CRD oferece suporte a limitação por usuário, janelas de tráfego em rajada e taxas personalizadas de consumo de tokens. |
Usar RateLimitingPolicy para implementar limitação por usuário |
|
Agendamento de requisições baseado em prioridade e latência média |
Compara a latência em tempo real com médias históricas para detectar sobrecarga. Durante sobrecargas, usa mecanismos de token-bucket e prioridade para processar primeiro as requisições de alta prioridade. |
|
|
Controle de concorrência |
Rastreia requisições em andamento (enviadas, mas ainda sem resposta). Se a contagem exceder o limite especificado, as requisições subsequentes serão rejeitadas. |
Usar ConcurrencyLimitingPolicy para implementar limitação de concorrência de requisições |
|
Agendamento de requisições baseado em prioridade sob concorrência controlada |
Detecta sobrecarga com base nos limites de requisições simultâneas. Ao ultrapassar o limite, as requisições subsequentes são enfileiradas e agendadas por prioridade. |
|
|
Política de liberação progressiva de serviço |
Configura uma política de liberação progressiva que aumenta gradualmente o tráfego para um serviço recém-lançado, garantindo implantações suaves. |
Usar LoadRampingPolicy para implementar liberação progressiva de serviço |
|
Agendamento de requisições baseado em prioridade com cota especificada |
Quando as requisições por unidade de tempo excedem a cota definida, as requisições subsequentes são enfileiradas, priorizando o processamento daquelas com maior prioridade. |
Usar QuotaSchedulingPolicy para implementar gerenciamento de cota de chamadas de requisição |
Colete métricas de monitoramento
Caso seus clusters Kubernetes usem o Managed Service for Prometheus ou uma instância Prometheus auto-gerenciada, configure os itens a seguir para coletar métricas do agente de agendamento de tráfego do ASM. Isso permite verificar se uma política específica do ASM traffic scheduling suite está em vigor.
Managed Service for Prometheus
Execute o código a seguir para adicionar uma regra de coleta personalizada. Para mais informações, consulte Outras descobertas de serviço do Prometheus.
scrape_configs:
- job_name: asm-adaptive-scheduler-stats
scrape_interval: 30s
scrape_timeout: 30s
metrics_path: /metrics
scheme: http
kubernetes_sd_configs:
- role: pod
relabel_configs:
- source_labels:
- __meta_kubernetes_namespace
action: keep
regex: istio-system
- source_labels:
- __meta_kubernetes_pod_container_port_name
action: keep
regex: server
- source_labels:
- __meta_kubernetes_pod_container_name
action: keep
regex: aperture-agent
Instâncias Prometheus auto-gerenciadas
Adicione o arquivo JSON do Managed Service for Prometheus ao nó scrape_configs da sua instância Prometheus, conforme descrito na documentação de configuração do Prometheus.