跳至內容

設定流量逐步推出至修訂版本

如果您的流量配置指向設定目標而不是修訂版本目標,則當建立並準備好新的修訂版本時,目標的 100% 流量會立即轉移到新的修訂版本。

這可能會使請求佇列在 QP 或 Activator 處變得太長,並導致請求過期或被 QP 拒絕。

Knative 提供一個 rollout-duration 參數,可用於逐步將流量轉移到最新的修訂版本,防止請求被排隊或拒絕。受影響的設定目標會先推出 1% 的流量,然後以相等的增量步驟推出剩餘的指定流量。

注意

rollout-duration 是基於時間的,並且不與自動擴展子系統互動。

此功能適用於已標記和未標記的流量目標,適用於已設定的 Knative 服務或沒有服務的路由。

步驟

您可以修改 config-network ConfigMap 或使用運算子來設定 rollout-duration 參數。

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 分享以達到該目的。了解更多。