コンテンツへスキップ

リビジョンへのトラフィックの段階的なロールアウトの設定

トラフィック構成がリビジョンターゲットではなく構成ターゲットを指している場合、新しいリビジョンが作成されて準備が整うと、ターゲットからのトラフィックの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サービスステータス条件を更新します。trafficconditionsの両方のステータスパラメーターが影響を受けます。

たとえば、次のトラフィック構成の場合

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

複数ロールアウト

ロールアウトが進行中に新しいリビジョンが作成された場合、システムは最新のリビジョンにすぐにトラフィックをシフトし始め、最新のものから最も古いものへと未完了のロールアウトをドレインします。

当社は、サイトトラフィックを理解するために分析とCookieを使用します。当社サイトのご利用に関する情報は、その目的のためにGoogleと共有されます。詳細はこちら。