本文介绍AverageLatencySchedulingPolicy CRD说明。
AverageLatencySchedulingPolicySpec
名称 | 类型 | 说明 |
load_scheduling_core | 调度器配置。 |
LoadSchedulingCore
名称 | 类型 | 说明 |
aimd_load_scheduler | 加性增乘性减调度器。 |
Selector
基于control point、flow label、agent group以及service选择流。
control_point: ingress
label_matcher:
match_labels:
user_tier: gold
match_expressions:
- key: query
operator: In
values:
- insert
- delete
expression:
label_matches:
- label: user_agent
regex: ^(?!.*Chrome).*Safari
名称 | 类型 | 说明 |
control_point | string | control point在service中标识policy对流生效的位置。可以填写ingress或egress或者指定的listener或filter chain,默认值为ingress。 |
label_matcher | 基于流的label匹配。 | |
service | string | 默认是any。service的FQDN。 |
LabelMatcher
有三种定义需求的方式:
label匹配
表达式匹配
任意匹配
多个匹配间是AND的关系。空匹配意味着ANY。
名称 | 类型 | 说明 |
expression | 表达式匹配。 | |
match_labels | map[string]string | 标签匹配。 |
match_list | 标签匹配的列表。 |
Expression
Expression有多种变体,只能配置其中一个字段。
名称 | 类型 | 说明 |
all | 当所有的子表达式为true时这个表达式返回true,相当于AND。 | |
any | 只要有一个表达式返回 | |
label_equals | 当指定label的值和配置的值相等时返回 | |
label_exists | string | 指定名称的label存在时返回 |
label_matches | 当指定label可以被这里的正则表达式匹配中时返回 | |
not | 子表达式取反。 |
ExpressionList
名称 | 类型 | 说明 |
of | Expression列表。 |
EqualExpression
名称 | 类型 | 说明 |
label | string | label key,必填。 |
value | string | label value。 |
MatchesExpression
名称 | 类型 | 说明 |
label | string | label key,必填。 |
regex | string | Go的正则表达式,必填。参考:Go 正则表达式。 |
MatchRequirement
名称 | 类型 | 说明 |
key | string | 标签key,必填。 |
operator | string枚举 | 必须是In | NotIn | Exists | DoesNotExist之一,必填。 |
values | []string | 具体的标签值。如果operator是存在匹配,values必须是空。 |
AimdLoadScheduler
名称 | 类型 | 说明 |
gradient | 梯度控制器的参数,必填。 | |
load_multiplier_linear_increment | float64 | 最小值是0,默认值是 |
load_scheduler | Load Scheduler参数,必填。 | |
max_load_multiplier | float64 | 最小值时0,默认值是2。 从过载状态恢复时,可以达到的最大过载因子。
|
GradientControllerParameters
梯度参数
名称 | 类型 | 说明 |
max_gradient | float64 | 默认值1。 |
min_gradient | float64 | 默认值0.1。 |
slope | float64 | 默认值-1。 |
slope控制梯度控制器的激进程度和方向,它以指数的形式生效于最终的梯度计算中。比如:
slope = 1:当输入过大时,增加输出。
slope = -1:当输入过大时,减小输出。
slope = -0.5:当输入过大时,逐渐减小输出。
通常建议slope的绝对值不超过1。
LoadSchedulerParameters
名称 | 类型 | 说明 |
scheduler | Weighted Fair Queuing-based负载调度器的配置。 | |
selectors | []Selector | 该组件的选择器。 |
workload_latency_based_tokens | bool | 默认false。基于历史延迟自动估计每个工作负载的流大小。每个工作负载的token数将被设置为该工作负载在最近几秒的平均延迟(该平均值的确切持续时间可能发生变化)。这项设置在限制并发度的场景十分有效,并发度的计算公式是concurrency = (avg. latency * in-flight flows)。 这里估算出来的token值相比workload定义和flow中定义的值的优先级更低。 |
Scheduler
名称 | 类型 | 说明 |
workloads | 一些流集合的定义。 |
SchedulerWorkload
名称 | 类型 | 说明 |
label_matcher | LabelMatcher | 标签匹配器。 |
Name | string | Workload名称。 |
Parameters | 调度器Workload参数。 |
SchedulerWorkloadParameters
名称 | 类型 | 说明 |
priority | float64 | 优先级。 |
queue_timeout | string | 排队超时时间。 |
tokens | float64 | tokens确定了在工作负载中处理单个流的成本,这通常定义为流延迟(响应时间或某功能的持续时间)的毫秒数,或者如果被访问的资源受流的数量限制(例如第三方速率限制器),则简单地等同于1。如果流的标签中没有指定tokens,那么这个覆写(override)才会适用。 |