リビジョンへのトラフィックの段階的なロールアウトの設定¶
トラフィック構成がリビジョンターゲットではなく構成ターゲットを指している場合、新しいリビジョンが作成されて準備が整うと、ターゲットからのトラフィックの100%が新しいリビジョンにすぐにシフトされます。
これにより、QPまたはアクティベーターの要求キューが長くなりすぎて、要求が期限切れになったり、QPによって拒否されたりする可能性があります。
Knativeは、最新のリビジョンにトラフィックを徐々にシフトするために使用できるrollout-duration
パラメーターを提供し、要求がキューイングされたり拒否されたりするのを防ぎます。影響を受ける構成ターゲットは、最初にトラフィックの1%にロールアウトされ、その後、残りの割り当てられたトラフィックに対して等しい段階的なステップでロールアウトされます。
注
rollout-duration
は時間ベースであり、自動スケーリングサブシステムとは相互作用しません。
この機能は、Knativeサービスまたはサービスなしのルートのいずれかに構成された、タグ付きおよびタグなしのトラフィックターゲットで使用できます。
手順¶
rollout-duration
パラメーターを設定するには、config-network
ConfigMapを変更するか、Operatorを使用します。
apiVersion: v1
kind: ConfigMap
metadata:
name: config-network
namespace: knative-serving
data:
rollout-duration: "380s" # Value in seconds.
apiVersion: operator.knative.dev/v1alpha1
kind: KnativeServing
metadata:
name: knative-serving
spec:
config:
network:
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%がリビジョンにロールアウトされます
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
複数ロールアウト¶
ロールアウトが進行中に新しいリビジョンが作成された場合、システムは最新のリビジョンにすぐにトラフィックをシフトし始め、最新のものから最も古いものへと未完了のロールアウトをドレインします。