Revisionへのトラフィックの段階的ロールアウトの設定¶
トラフィック設定がRevisionターゲットではなくConfigurationターゲットを指している場合、新しいRevisionが作成され準備完了になると、ターゲットからのトラフィックの100%がすぐに新しいRevisionにシフトされます。
これにより、QPまたはアクティベータでリクエストキューが長くなりすぎ、リクエストが期限切れになったり、QPによって拒否されたりする可能性があります。
Knativeは、最新のRevisionへのトラフィックを段階的にシフトし、リクエストがキューイングまたは拒否されるのを防ぐために使用できるrollout-duration
パラメータを提供します。影響を受けるConfigurationターゲットは、最初にトラフィックの1%にロールアウトされ、その後、割り当てられたトラフィックの残りの部分について、等間隔の増分ステップでロールアウトされます。
注記
rollout-duration
は時間ベースであり、自動スケーリングサブシステムとは相互作用しません。
この機能は、Knativeサービスまたはサービスのないルートのいずれかに設定された、タグ付きとタグなしの両方のトラフィックターゲットで使用できます。
手順¶
アノテーションを使用して、Knativeサービスまたはルートごとにrollout-duration
パラメータを設定できます。
ヒント
ロールアウト期間のグローバルなConfigMap設定については、管理者ガイドを参照してください。
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
name: helloworld-go
namespace: default
annotations:
serving.knative.dev/rollout-duration: "380s"
ルートステータスの更新¶
ロールアウト中は、システムがルートとKnativeサービスのステータス条件を更新します。traffic
とconditions
の両方のステータスパラメータが影響を受けます。
たとえば、次のトラフィック設定の場合
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
...
spec:
...
traffic:
- percent: 55
configurationName: config # Pinned to latest ready Revision
- percent: 45
revisionName: config-00005 # Pinned to a specific Revision.
最初は、トラフィックの1%がRevisionにロールアウトされます。
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
...
spec:
...
traffic:
- percent: 54
revisionName: config-00008
- percent: 1
revisionName: config-00009
- percent: 45
revisionName: config-00005 # Pinned to a specific Revision.
その後、残りのトラフィックが18%の増分でロールアウトされます。
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
...
spec:
...
traffic:
- percent: 36
revisionName: config-00008
- percent: 19
revisionName: config-00009
- percent: 45
revisionName: config-00005 # Pinned to a specific Revision.
ターゲットトラフィック設定に到達するまで、ロールアウトが継続されます。
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
...
spec:
...
traffic:
- percent: 55
revisionName: config-00009
- percent: 45
revisionName: config-00005 # Pinned to a specific Revision.
ロールアウト中は、ルートとKnativeサービスのステータス条件は次のようになります。
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
...
spec:
...
status:
conditions:
...
- lastTransitionTime: "..."
message: A gradual rollout of the latest revision(s) is in progress.
reason: RolloutInProgress
status: Unknown
type: Ready
複数のロールアウト¶
ロールアウト中に新しいRevisionが作成された場合、システムは最新のRevisionへのトラフィックのシフトを開始し、最新のRevisionから古いRevisionへと未完了のロールアウトを終了させます。