サポートされているオートスケーラーの種類¶
Knative Servingは、Knative Pod Autoscaler (KPA)とKubernetesのHorizontal Pod Autoscaler (HPA)の実装をサポートしています。このトピックでは、これらのオートスケーラーそれぞれの機能と制限、およびそれらの設定方法について説明します。
重要
Kubernetes Horizontal Pod Autoscaler (HPA)を使用する場合は、Knative Servingのインストール後にインストールする必要があります。
HPAのインストール方法については、オプションのServing拡張機能のインストールを参照してください。
Knative Pod Autoscaler (KPA)¶
- Knative Servingコアの一部であり、Knative Servingのインストール後、デフォルトで有効になります。
- ゼロへのスケール機能をサポートしています。
- CPUベースの自動スケーリングをサポートしていません。
Horizontal Pod Autoscaler (HPA)¶
- Knative Servingコアの一部ではなく、最初にKnative Servingをインストールする必要があります。
- ゼロへのスケール機能をサポートしていません。
- CPUベースの自動スケーリングをサポートしています。
オートスケーラー実装の設定¶
オートスケーラー実装の種類(KPAまたはHPA)は、class
アノテーションを使用して設定できます。
- グローバル設定キー:
pod-autoscaler-class
- リビジョンごとのアノテーションキー:
autoscaling.knative.dev/class
- 可能な値:
"kpa.autoscaling.knative.dev"
または"hpa.autoscaling.knative.dev"
- デフォルト:
"kpa.autoscaling.knative.dev"
例
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
name: helloworld-go
namespace: default
spec:
template:
metadata:
annotations:
autoscaling.knative.dev/class: "kpa.autoscaling.knative.dev"
spec:
containers:
- image: ghcr.io/knative/helloworld-go:latest
apiVersion: v1
kind: ConfigMap
metadata:
name: config-autoscaler
namespace: knative-serving
data:
pod-autoscaler-class: "kpa.autoscaling.knative.dev"
apiVersion: operator.knative.dev/v1alpha1
kind: KnativeServing
metadata:
name: knative-serving
spec:
config:
autoscaler:
pod-autoscaler-class: "kpa.autoscaling.knative.dev"
グローバル設定とリビジョンごとの設定¶
Knativeでの自動スケーリングの設定は、グローバル設定またはリビジョンごとの設定のいずれかを使用して設定できます。
- リビジョンごとの自動スケーリング設定が指定されていない場合、グローバル設定が使用されます。
- リビジョンごとの設定が指定されている場合、両方のタイプの設定が存在する場合、これらはグローバル設定をオーバーライドします。
グローバル設定¶
自動スケーリングのグローバル設定は、config-autoscaler
ConfigMapを使用して設定されます。Operatorを使用してKnative Servingをインストールした場合は、KnativeServing
カスタムリソース(CR)にあるspec.config.autoscaler
ConfigMapでグローバル構成設定を設定できます。
デフォルトの自動スケーリングConfigMapの例¶
apiVersion: v1
kind: ConfigMap
metadata:
name: config-autoscaler
namespace: knative-serving
data:
container-concurrency-target-default: "100"
container-concurrency-target-percentage: "0.7"
enable-scale-to-zero: "true"
max-scale-up-rate: "1000"
max-scale-down-rate: "2"
panic-window-percentage: "10"
panic-threshold-percentage: "200"
scale-to-zero-grace-period: "30s"
scale-to-zero-pod-retention-period: "0s"
stable-window: "60s"
target-burst-capacity: "200"
requests-per-second-target-default: "200"
リビジョンごとの設定¶
自動スケーリングのリビジョンごとの設定は、リビジョンにアノテーションを追加することによって設定されます。
例
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
name: helloworld-go
namespace: default
spec:
template:
metadata:
annotations:
autoscaling.knative.dev/target: "70"
重要
サービスまたは設定を使用してリビジョンを作成する場合は、リビジョンテンプレートにアノテーションを設定する必要があります。これにより、作成された各リビジョンに修正が適用されます。単一のリビジョンのトップレベルメタデータにアノテーションを設定しても、変更は他のリビジョンに伝播されず、アプリケーションの自動スケーリング設定には変更が適用されません。