本文介紹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可以被這裡的Regex匹配中時返回 | |
not | 子運算式取反。 |
ExpressionList
名稱 | 類型 | 說明 |
of | Expression列表。 |
EqualExpression
名稱 | 類型 | 說明 |
label | string | label key,必填。 |
value | string | label value。 |
MatchesExpression
名稱 | 類型 | 說明 |
label | string | label key,必填。 |
regex | string | Go的Regex,必填。參考:Go Regex。 |
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)才會適用。 |