スケール境界の構成¶
上限と下限を構成して、自動スケーリングの動作を制御できます。
また、リビジョンが作成直後にスケーリングされる初期スケールを指定することもできます。これは、すべてのリビジョンのデフォルト構成にしたり、アノテーションを使用して特定のリビジョンに適用したりできます。
下限¶
この値は、各リビジョンが持つ必要があるレプリカの最小数を制御します。Knative は、いかなる時点においても、この数のレプリカを下回らないように試みます。
- グローバルキー:
min-scale
- リビジョンごとのアノテーションキー:
autoscaling.knative.dev/min-scale
- 指定可能な値: 整数
- デフォルト: スケールツーゼロが有効で、クラス KPA が使用されている場合は
0
、それ以外の場合は1
注記
スケールツーゼロ構成の詳細については、スケールツーゼロの構成に関するドキュメントを参照してください。
例
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
name: helloworld-go
namespace: default
spec:
template:
metadata:
annotations:
autoscaling.knative.dev/min-scale: "3"
spec:
containers:
- image: ghcr.io/knative/helloworld-go:latest
apiVersion: v1
kind: ConfigMap
metadata:
name: config-autoscaler
namespace: knative-serving
data:
min-scale: "3"
apiVersion: operator.knative.dev/v1alpha1
kind: KnativeServing
metadata:
name: knative-serving
spec:
config:
autoscaler:
min-scale: "3"
上限¶
この値は、各リビジョンが持つ必要があるレプリカの最大数を制御します。Knative は、いかなる時点においても、この数を超えるレプリカが実行中または作成プロセス中にないように試みます。
max-scale-limit
グローバルキーが設定されている場合、Knative は、新しいリビジョンのグローバル最大スケールとリビジョンごとの最大スケールの両方がこの値を超えないようにします。max-scale-limit
が正の値に設定されている場合、その値を超える最大スケール (無制限を意味する 0 を含む) を持つリビジョンは許可されません。
- グローバルキー:
max-scale
- リビジョンごとのアノテーションキー:
autoscaling.knative.dev/max-scale
- 指定可能な値: 整数
- デフォルト: 無制限を意味する
0
例
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
name: helloworld-go
namespace: default
spec:
template:
metadata:
annotations:
autoscaling.knative.dev/max-scale: "3"
spec:
containers:
- image: ghcr.io/knative/helloworld-go:latest
apiVersion: v1
kind: ConfigMap
metadata:
name: config-autoscaler
namespace: knative-serving
data:
max-scale: "3"
max-scale-limit: "100"
apiVersion: operator.knative.dev/v1alpha1
kind: KnativeServing
metadata:
name: knative-serving
spec:
config:
autoscaler:
max-scale: "3"
max-scale-limit: "100"
初期スケール¶
この値は、リビジョンが Ready
とマークされる前に、作成直後に到達する必要がある初期ターゲットスケールを制御します。リビジョンがこのスケールに一度到達した後、この値は無視されます。これは、実際に受信したトラフィックがより小さなスケールしか必要としない場合、リビジョンが初期ターゲットスケールに到達した後、スケールダウンすることを意味します。
リビジョンが作成されると、初期スケールと下限のうち大きい方が、初期ターゲットスケールとして自動的に選択されます。
- グローバルキー:
allow-zero-initial-scale
と組み合わせたinitial-scale
- リビジョンごとのアノテーションキー:
autoscaling.knative.dev/initial-scale
- 指定可能な値: 整数
- デフォルト:
1
例
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
name: helloworld-go
namespace: default
spec:
template:
metadata:
annotations:
autoscaling.knative.dev/initial-scale: "0"
spec:
containers:
- image: ghcr.io/knative/helloworld-go:latest
apiVersion: v1
kind: ConfigMap
metadata:
name: config-autoscaler
namespace: knative-serving
data:
initial-scale: "0"
allow-zero-initial-scale: "true"
apiVersion: operator.knative.dev/v1alpha1
kind: KnativeServing
metadata:
name: knative-serving
spec:
config:
autoscaler:
initial-scale: "0"
allow-zero-initial-scale: "true"
スケールアップ最小¶
この値は、リビジョンがゼロからスケールアップするときに作成されるレプリカの最小数を制御します。リビジョンがこのスケールに一度到達した後、この値は無視されます。これは、実際に受信したトラフィックがより小さなスケールを必要とする場合、アクティベーションスケールに到達した後、リビジョンがスケールダウンすることを意味します。
リビジョンが作成されると、アクティベーションスケールと下限のうち大きい方が、初期ターゲットスケールとして自動的に選択されます。
- グローバルキー: n/a
- リビジョンごとのアノテーションキー:
autoscaling.knative.dev/activation-scale
- 指定可能な値: 整数
- デフォルト:
1
例
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
name: helloworld-go
namespace: default
spec:
template:
metadata:
annotations:
autoscaling.knative.dev/activation-scale: "5"
spec:
containers:
- image: ghcr.io/knative/helloworld-go:latest
スケールダウン遅延¶
スケールダウン遅延は、スケールダウンの決定が適用される前に、同時実行数が減少した状態で経過する必要がある時間枠を指定します。これは、たとえば、新しいリクエストが来た場合にコールドスタートペナルティを回避するために、構成可能な期間コンテナを維持するのに役立ちます。下限を設定するのとは異なり、遅延期間中に同時実行数の減少が維持された場合、リビジョンは最終的にスケールダウンします。
注記
デフォルトの KPA オートスケーラークラスでのみサポートされます。
- グローバルキー:
scale-down-delay
- リビジョンごとのアノテーションキー:
autoscaling.knative.dev/scale-down-delay
- 指定可能な値: Duration,
0s
<= value <=1h
- デフォルト:
0s
(遅延なし)
例
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
name: helloworld-go
namespace: default
spec:
template:
metadata:
annotations:
autoscaling.knative.dev/scale-down-delay: "15m"
spec:
containers:
- image: ghcr.io/knative/helloworld-go:latest
apiVersion: v1
kind: ConfigMap
metadata:
name: config-autoscaler
namespace: knative-serving
data:
scale-down-delay: "15m"
apiVersion: operator.knative.dev/v1alpha1
kind: KnativeServing
metadata:
name: knative-serving
spec:
config:
autoscaler:
scale-down-delay: "15m"
安定ウィンドウ¶
安定ウィンドウは、オートスケーラーが パニックモード でない場合に、スケーリングの決定の入力となるメトリックを平均化するスライディング時間ウィンドウを定義します。
- グローバルキー:
stable-window
- リビジョンごとのアノテーションキー:
autoscaling.knative.dev/window
- 指定可能な値: Duration,
6s
<= value <=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"