Knative Pod Autoscaler の追加のオートスケーリング構成¶
次の設定は、Knative Pod Autoscaler (KPA) に固有のものです。
モード¶
KPA は、時間ベースのウィンドウで集計された メトリクス (concurrency
または rps
) に基づいて動作します。
これらのウィンドウは、Autoscaler が考慮に入れる過去のデータ量を定義し、指定された時間内にデータを平滑化するために使用されます。これらのウィンドウが短いほど、Autoscaler はより迅速に反応します。
KPA の実装には、stable と panic の 2 つのモードがあります。各モードには、それぞれ stable-window
と panic-window
の個別の集計ウィンドウがあります。
Stable モードは一般的な操作に使用され、panic モードはデフォルトでウィンドウがはるかに短く、トラフィックのバーストが到着した場合にリビジョンを迅速にスケールアップするために使用されます。
注
panic モードを使用する場合、リビジョンはチャーンを避けるためにスケールダウンしません。Autoscaler は、安定ウィンドウ時間内に迅速に反応する必要がない場合、panic モードを終了します。
安定ウィンドウ¶
- グローバルキー:
stable-window
- リビジョンごとのアノテーションキー:
autoscaling.knative.dev/window
- 有効な値: Duration,
6s
<= 値 <=1h
- デフォルト:
60s
注
ゼロレプリカにスケールする場合、最後のレプリカは、安定ウィンドウの全期間にわたってリビジョンへのトラフィックがなかった後にのみ削除されます。
例
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
name: helloworld-go
namespace: default
spec:
template:
metadata:
annotations:
autoscaling.knative.dev/window: "40s"
spec:
containers:
- image: ghcr.io/knative/helloworld-go:latest
apiVersion: v1
kind: ConfigMap
metadata:
name: config-autoscaler
namespace: knative-serving
data:
stable-window: "40s"
apiVersion: operator.knative.dev/v1alpha1
kind: KnativeServing
metadata:
name: knative-serving
spec:
config:
autoscaler:
stable-window: "40s"
パニックウィンドウ¶
パニックウィンドウは、両方が機能する方法で互いに関連していることを保証するために、安定ウィンドウのパーセンテージとして定義されます。
この値は、パニックモードに入ったときに過去のデータが評価されるウィンドウがどのように縮小されるかを示します。たとえば、値が 10.0
の場合、パニックモードではウィンドウは安定ウィンドウサイズの 10% になります。
- グローバルキー:
panic-window-percentage
- リビジョンごとのアノテーションキー:
autoscaling.knative.dev/panic-window-percentage
- 有効な値: float,
1.0
<= 値 <=100.0
- デフォルト:
10.0
例
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
name: helloworld-go
namespace: default
spec:
template:
metadata:
annotations:
autoscaling.knative.dev/panic-window-percentage: "20.0"
spec:
containers:
- image: ghcr.io/knative/helloworld-go:latest
apiVersion: v1
kind: ConfigMap
metadata:
name: config-autoscaler
namespace: knative-serving
data:
panic-window-percentage: "20.0"
apiVersion: operator.knative.dev/v1alpha1
kind: KnativeServing
metadata:
name: knative-serving
spec:
config:
autoscaler:
panic-window-percentage: "20.0"
パニックモードのしきい値¶
このしきい値は、Autoscaler が安定モードからパニックモードに移行するタイミングを定義します。
この値は、現在のレプリカ数で処理できるトラフィックのパーセンテージです。
注
100.0
(100 パーセント) の値は、Autoscaler が常にパニックモードであることを意味するため、最小値は 100.0
より大きくする必要があります。
デフォルト設定の 200.0
は、トラフィックが現在のレプリカ数で処理できる量の 2 倍になった場合にパニックモードが開始されることを意味します。
- グローバルキー:
panic-threshold-percentage
- リビジョンごとのアノテーションキー:
autoscaling.knative.dev/panic-threshold-percentage
- 有効な値: float,
110.0
<= 値 <=1000.0
- デフォルト:
200.0
例
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
name: helloworld-go
namespace: default
spec:
template:
metadata:
annotations:
autoscaling.knative.dev/panic-threshold-percentage: "150.0"
spec:
containers:
- image: ghcr.io/knative/helloworld-go:latest
apiVersion: v1
kind: ConfigMap
metadata:
name: config-autoscaler
namespace: knative-serving
data:
panic-threshold-percentage: "150.0"
apiVersion: operator.knative.dev/v1alpha1
kind: KnativeServing
metadata:
name: knative-serving
spec:
config:
autoscaler:
panic-threshold-percentage: "150.0"
スケールレート¶
これらの設定は、1 回の評価サイクルでレプリカ数がどれだけスケールアップまたはスケールダウンできるかを制御します。
各方向へのレプリカの最小変更は常に許可されているため、Autoscaler は設定されたスケールレートに関係なく、いつでも +/- 1 レプリカにスケールできます。
スケールアップレート¶
この設定は、既存のポッドに対する目的のポッドの最大比率を決定します。たとえば、値が 2.0
の場合、リビジョンは 1 回の評価サイクルで N
から 2*N
ポッドにのみスケールできます。
- グローバルキー:
max-scale-up-rate
- リビジョンごとのアノテーションキー: n/a
- 有効な値: float
- デフォルト:
1000.0
例
apiVersion: v1
kind: ConfigMap
metadata:
name: config-autoscaler
namespace: knative-serving
data:
max-scale-up-rate: "500.0"
apiVersion: operator.knative.dev/v1alpha1
kind: KnativeServing
metadata:
name: knative-serving
spec:
config:
autoscaler:
max-scale-up-rate: "500.0"
スケールダウンレート¶
この設定は、目的のポッドに対する既存のポッドの最大比率を決定します。たとえば、値が 2.0
の場合、リビジョンは 1 回の評価サイクルで N
から N/2
ポッドにのみスケールできます。
- グローバルキー:
max-scale-down-rate
- リビジョンごとのアノテーションキー: n/a
- 有効な値: float
- デフォルト:
2.0
例
apiVersion: v1
kind: ConfigMap
metadata:
name: config-autoscaler
namespace: knative-serving
data:
max-scale-down-rate: "4.0"
apiVersion: operator.knative.dev/v1alpha1
kind: KnativeServing
metadata:
name: knative-serving
spec:
config:
autoscaler:
max-scale-down-rate: "4.0"