The ASM traffic scheduling suite provides a non-intrusive, scalable architecture for centralized traffic management in distributed systems, enhancing the reliability of cloud-native applications while reducing costs and improving resource utilization.
What is the ASM traffic scheduling suite?
The ASM traffic scheduling suite is a centralized traffic scheduling architecture built on ASM. It manages and schedules requests across cloud-native distributed applications.
The suite consists of an Agent and a controller. The controller publishes preset traffic scheduling policies to the Agent. When a sidecar proxy forwards inbound or outbound requests of a pod, the Agent applies scheduling decisions to throttle or queue the requests.
Enable the ASM traffic scheduling suite
ACK Serverless and Container Compute Service (ACS) do not support the ASM traffic scheduling suite.
To use the ASM traffic scheduling suite, make sure that the version of your ASM instance is 1.21.6.82 or later and that a Kubernetes cluster is added to your ASM instance. For more information, see Add a cluster to an ASM instance.
To enable the ASM traffic scheduling suite:
ASM console
-
Log on to the ASM console. In the left-side navigation pane, choose .
-
Click the name of the ASM instance. In the left-side navigation pane, choose .
-
Select the Advanced Traffic Scheduling tab and click Enable Traffic Scheduling.
-
Configure the following parameters, then click OK.
Configuration item
Description
Storage Class
Valid storage classes for data exchange between scheduling agents and metadata.
Configure Resource
Resource configuration for Agent pods.
Limit: 2 CPUs, 1024 MiB by default.
Request: 0.5 CPUs, 512 MiB by default.
Timeout Period
When the system is overloaded, requests are queued. Requests queued beyond the specified period are discarded.
Effective Scope
Defaults to global scope. Supported scopes:
-
Gateway scope: Applies to resources associated with a specific gateway.
-
Workload scope: Applies to a specific workload.
-
Namespace scope: Applies to a specific namespace.
-
kubectl
-
Use kubectl to connect to the ASM instance. For more information, see Access Istio resources with kubectl.
-
Run the following command:
kubectl patch asmmeshconfig default --type=merge --patch='{"spec":{"adaptiveSchedulerConfiguration":{"enabled":true,"schedulerScopes":[{"namespace":"default"}]}}}'
Supported traffic scheduling policies
The ASM traffic scheduling suite supports the following policies.
|
Policy |
Description |
References |
|
Traffic rate limiting |
Uses the RateLimitingPolicy CRD to provide global throttling for specified services. Compared with open-source Istio throttling, this CRD supports user-specific throttling, burst traffic windows, and custom token consumption rates. |
Use RateLimitingPolicy to implement user-specific throttling |
|
Priority-based request scheduling based on the average latency |
Compares real-time latency against historical averages to detect overload. When overloaded, uses token-bucket and priority-based mechanisms to process high-priority requests first. |
Use AverageLatencySchedulingPolicy to implement priority-based request scheduling |
|
Concurrency control |
Tracks in-flight requests (sent but not yet responded to). When the count exceeds the specified limit, subsequent requests are rejected. |
Use ConcurrencyLimitingPolicy to implement request concurrency limiting |
|
Priority-based request scheduling under controlled concurrency |
Detects overload based on concurrent request limits. When exceeded, subsequent requests are queued and scheduled by priority. |
|
|
Progressive service release policy |
Configures a progressive release policy that gradually increases traffic to a newly released service, ensuring smooth rollouts. |
Use LoadRampingPolicy to implement progressive service release |
|
Priority-based request scheduling with a specified request quota |
When requests per unit time exceed the specified quota, subsequent requests are queued, with high-priority requests processed first. |
Use QuotaSchedulingPolicy to implement request call quota management |
Collect monitoring metrics
If your Kubernetes clusters use Managed Service for Prometheus or self-built Prometheus, configure the following to collect ASM traffic scheduling agent metrics. This helps you to verify whether a specific policy in ASM traffic scheduling suite takes effect.
Managed service for Prometheus
Run the following code to add a custom collection rule. For more information, see Custom Prometheus scrape configurations.
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
Self-built Prometheus instances
Add the JSON file of Managed service for Prometheus to the scrape_configs node of your Prometheus instance, as described in the Prometheus configuration.