9.2. Knative Serving 自動スケーリングの設定
OpenShift Serverless は、Knative Serving 自動スケーリングシステムを OpenShift Container Platform クラスターで有効にすることで、アクティブでない Pod をゼロにスケーリングする機能など、Pod の自動スケーリングの各種機能を提供します。Knative Serving の自動スケーリングを有効にするには、リビジョンテンプレートで同時実行 (concurrency) およびスケール境界 (scale bound) を設定する必要があります。
リビジョンテンプレートでの制限およびターゲットの設定は、アプリケーションの単一インスタンスに対して行われます。たとえば、target
アノテーションを 50
に設定することにより、アプリケーションの各インスタンスが一度に 50 要求を処理できるようアプリケーションをスケーリングするように Autoscaler が設定されます。
9.2.1. Knative Serving 自動スケーリングの同時要求の設定
アプリケーションの各インスタンス (リビジョンコンテナー) によって処理される同時要求の数は、リビジョンテンプレートに target
アノテーションまたは containerConcurrency
フィールドを追加して指定できます。
以下は、リビジョンテンプレートで使用される target
のサンプルです。
apiVersion: serving.knative.dev/v1 kind: Service metadata: name: myapp spec: template: metadata: annotations: autoscaling.knative.dev/target: 50 spec: containers: - image: myimage
以下は、リビジョンテンプレートで使用される containerConcurrency
のサンプルです。
apiVersion: serving.knative.dev/v1 kind: Service metadata: name: myapp spec: template: metadata: annotations: spec: containerConcurrency: 100 containers: - image: myimage
target
と containerConcurrency
の両方の値を追加することにより、同時要求の target
数をターゲットとして設定できますが、これにより要求の containerConcurrency
数のハード制限も設定されます。たとえば、target
値が 50 で、containerConcurrency
値が 100 の場合、要求のターゲットに設定された数は 50 になりますが、ハード制限は 100 になります。
containerConcurrency
値が target
値よりも低い場合、実際に処理できる数よりも多くの要求をターゲットとして設定する必要はないため、target
値は小さい値に調整されます。
containerConcurrency
は、特定の時点にアプリケーションに到達する要求の数を制限する明らかな必要がある場合にのみ使用する必要があります。containerConcurrency
は、アプリケーションで同時実行の制約を実行する必要がある場合にのみ使用することを推奨します。
9.2.1.1. ターゲットアノテーションの使用による同時要求の設定
同時要求数のデフォルトターゲットは 100
ですが、リビジョンテンプレートで autoscaling.knative.dev/target
アノテーション値を追加または変更することによってこの値を上書きできます。
以下は、ターゲットを 50
に設定するためにこのアノテーションをリビジョンテンプレートで使用する方法の例を示しています。
autoscaling.knative.dev/target: 50
9.2.1.2. containerConcurrency
フィールドを使用した同時要求の設定
containerConcurrency
は、処理される同時要求数にハード制限を設定します。
containerConcurrency: 0 | 1 | 2-N
- 0
- 無制限の同時要求を許可します。
- 1
- リビジョンコンテナーの所定インスタンスによって一度に処理される要求は 1 つのみであることを保証します。
- 2 以上
- 同時要求をこの数に制限します。
target
アノテーションがない場合、自動スケーリングは、target
が containerConcurrency
の値と等しい場合のように設定されます。