AverageLatencySchedulingPolicy CRD说明

本文介绍AverageLatencySchedulingPolicy CRD说明。

AverageLatencySchedulingPolicySpec

名称

类型

说明

load_scheduling_core

LoadSchedulingCore

调度器配置。

LoadSchedulingCore

名称

类型

说明

aimd_load_scheduler

AimdLoadScheduler

加性增乘性减调度器。

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

LabelMatcher

基于流的label匹配。

service

string

默认是any。service的FQDN。

LabelMatcher

有三种定义需求的方式:

  1. label匹配

  2. 表达式匹配

  3. 任意匹配

多个匹配间是AND的关系。空匹配意味着ANY。

名称

类型

说明

expression

Expression

表达式匹配。

match_labels

map[string]string

标签匹配。

match_list

[]MatchRequirement

标签匹配的列表。

Expression

Expression有多种变体,只能配置其中一个字段。

名称

类型

说明

all

ExpressionList

当所有的子表达式为true时这个表达式返回true,相当于AND。

any

ExpressionList

只要有一个表达式返回true,这个表达式就返回true,相当于OR

label_equals

EqualExpression

当指定label的值和配置的值相等时返回true

label_exists

string

指定名称的label存在时返回true

label_matches

MatchesExpression

当指定label可以被这里的正则表达式匹配中时返回true

not

Expression

子表达式取反。

ExpressionList

名称

类型

说明

of

[]Expression

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

GradientControllerParameters

梯度控制器的参数,必填。

load_multiplier_linear_increment

float64

最小值是0,默认值是0.025。当系统不处于过载状态时,线性增的比例,每10s执行一次。直到达到max_load_multiplier

load_scheduler

LoadSchedulerParameters

Load Scheduler参数,必填。

max_load_multiplier

float64

最小值时0,默认值是2。

从过载状态恢复时,可以达到的最大过载因子。

  • 防止突发的请求增长。

  • 一旦达到了这个值,调度器进入pass-through模式,所有请求都被bypass,直接发往服务。

  • 如果系统进入过载模式,pass-through模式立刻终止。

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

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

一些流集合的定义。

SchedulerWorkload

名称

类型

说明

label_matcher

LabelMatcher

标签匹配器。

Name

string

Workload名称。

Parameters

SchedulerWorkloadParameters

调度器Workload参数。

SchedulerWorkloadParameters

名称

类型

说明

priority

float64

优先级。

queue_timeout

string

排队超时时间。

tokens

float64

tokens确定了在工作负载中处理单个流的成本,这通常定义为流延迟(响应时间或某功能的持续时间)的毫秒数,或者如果被访问的资源受流的数量限制(例如第三方速率限制器),则简单地等同于1。如果流的标签中没有指定tokens,那么这个覆写(override)才会适用。