このトピックでは、AverageLatencySchedulingPolicy のフィールドについて説明します。
AverageLatencySchedulingPolicySpec
フィールド | タイプ | 説明 |
load_scheduling_core | スケジューラー構成。 |
LoadSchedulingCore
フィールド | タイプ | 説明 |
aimd_load_scheduler | Additive Increase Multiplicative Decrease(AIMD)スケジューラーの構成。 |
セレクター
トラフィックフローは、コントロールポイント、フローラベル、エージェントグループ、およびサービスに基づいて選択されます。
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 | このフィールドは、ポリシーがトラフィックフローに適用されるサービス内の場所を識別します。 このフィールドは、イングレス、エグレス、特定のリスナー、または特定のフィルターチェーンに設定できます。 デフォルト値:ingress。 |
label_matcher | このフィールドを使用して、フローラベルに基づいてトラフィックフローを照合できます。 | |
service | string | 選択するサービスの完全修飾ドメイン名(FQDN)。 デフォルト値:any。 |
LabelMatcher
要件を定義するには、次の 3 つの方法があります。
ラベルの照合
式の照合
任意の式
複数の要件が設定されている場合、それらはすべて論理 AND 演算子を使用して結合されます。 空のラベルマッチャーは常に任意のリクエストと一致します。
フィールド | タイプ | 説明 |
expression | ラベルで評価される式。 | |
match_labels | map[string]string | 照合するラベルを表すキーと値のペアのマップ。 |
match_list | ラベルマッチング要件のリスト。 |
Expression
Expression では複数のバリアントが許可されており、フィールドの 1 つのみを構成できます。
フィールド | タイプ | 説明 |
all | すべての部分式が true の場合、式は true になります。これは論理 AND 演算と同等です。 | |
any | いずれかの部分式が | |
label_equals | 指定されたラベルの値が指定された値と等しい場合、式は | |
label_exists | string | 指定された名前のラベルが存在する場合、式は |
label_exists | 指定された名前のラベルが存在する場合、式は | |
not | この式は、部分式の結果を否定します。 |
式リスト
フィールド | タイプ | 説明 |
of | []式 | 一致式のサブ式のリストです。 |
等価式
ラベル | 種類 | 説明 |
label | string | ラベルキー。このフィールドは必須です。 |
value | string | ラベル値。 |
MatchesExpression
フィールド | タイプ | 説明 |
label | string | 正規表現と一致するラベルの名前。このフィールドは必須です。 |
regex | string | ラベル値と一致する必要がある正規表現。このフィールドは必須です。詳細については、「Go の正規表現構文」をご参照ください。 |
一致要件
フィールド | タイプ | 説明 |
key | string | セレクターが適用されるラベルキー。このフィールドは必須です。 |
operator | 列挙型 | 有効な値:In、NotIn、Exists、および DoesNotExist。このフィールドは必須です。 |
values | []string | 演算子によってキーに関連付けられる文字列値の配列。演算子が Exists または DoesNotExist の場合、values 配列は空である必要があります。 |
AimdLoadScheduler
フィールド | タイプ | 説明 |
gradient | グラデーションコントローラーのパラメーター。このフィールドは必須です。 | |
load_multiplier_linear_increment | float64 | 最小値は 0 で、デフォルト値は |
load_scheduler | ロードスケジューラーのパラメーター。このフィールドは必須です。 | |
max_load_multiplier | float64 | 最小値は 0 です。デフォルト値は 2 です。 このフィールドは、過負荷状態からの回復中に到達可能な最大負荷乗数を指定します。
|
GradientControllerParameters
次の表は、グラデーション パラメーターについて説明しています。
フィールド | タイプ | 説明 |
max_gradient | float64 | デフォルト値:1。 |
min_gradient | float64 | デフォルト値:0.1。 |
slope | float64 | デフォルト値:-1。 |
スロープフィールドは、勾配コントローラーの積極性と方向を制御します。このフィールドは、勾配の計算において、設定値に対する信号の比率の指数として使用されます。例:
slope = 1: 信号が高すぎる場合は、制御変数を増やします。
slope = -1: 信号が高すぎる場合は、制御変数を減らします。
slope = -0.5: 信号が高すぎる場合は、制御変数を徐々に減らします。
傾きの絶対値は 1 を超えないようにすることをお勧めします。
LoadSchedulerParameters
フィールド | タイプ | 説明 |
scheduler | 加重公平キューイングベースのワークロードスケジューラの構成。 | |
selectors | []セレクター | 加重公平キューイングベースのワークロードスケジューラのセレクター。 |
workload_latency_based_tokens | bool | デフォルト値:false。各ワークロード内のトラフィックフローのサイズは、過去のレイテンシに基づいて自動的に推定されます。各ワークロードのトークンの数は、過去数秒間(この平均の正確な期間は変更される可能性があります)のワークロードにおけるトラフィックフローの平均レイテンシに設定されます。この設定は、同時実行制限のシナリオで役立ちます。同時実行は、次の式を使用して計算されます。同時実行 = 平均レイテンシ × 処理中のフロー。 推定されたトークンの値は、ワークロード定義で指定されたトークンの値と、フローラベルで明示的に指定されたトークンの値よりも優先順位が低くなります。 |
スケジューラ
フィールド | タイプ | 説明 |
workloads | 使用するワークロードのリスト。 |
ExpressionList
フィールド | タイプ | 説明 |
label_matcher | LabelMatcher | フローラベルに基づいてワークロードを選択するためのラベルマッチャーです。 |
名前 | 文字列 | ワークロード名。 |
of | ラベル マッチャーと一致するトラフィック フローに関連付けられたパラメーターです。 |
SchedulerWorkloadParameters
フィールド | タイプ | 説明 |
priority | float64 | 優先度。 |
queue_timeout | string | ワークロードのトラフィックフローのタイムアウト。 |
tokens | float64 | tokensフィールドは、ワークロードの単一トラフィックフローを許可するためのコストを決定します。これは通常、フローレイテンシのミリ秒(応答時間または機能の期間)として定義されるか、アクセスされているリソースがトラフィックフローの数によって制限されている場合は単に 1 に等しくなります(サードパーティのレート制限)。 このオーバーライドは、フローラベルでトークンの数が指定されていない場合にのみ適用されます。 |