跳到内容

配置向修订版逐步推出流量

如果您的流量配置指向“配置”目标而不是“修订版”目标,当新的修订版创建并准备就绪时,来自该目标的 100% 流量会立即转移到新的修订版。

这可能会导致请求队列过长,无论是在 QP 还是 Activator 中,并导致请求过期或被 QP 拒绝。

Knative 提供了一个 `rollout-duration` 参数,可用于将流量逐步转移到最新的修订版,从而防止请求排队或被拒绝。受影响的配置目标首先推出 1% 的流量,然后以相等的增量步长推出其余分配的流量。

注意

`rollout-duration` 是基于时间的,并且不与自动伸缩子系统交互。

此功能适用于标记和未标记的流量目标,可配置用于 Knative Service 或没有服务的 Route。

步骤

您可以通过使用注释为 Knative Service 或 Route 配置 rollout-duration 参数。

提示

有关滚动推出最新修订版本配置的全局、ConfigMap 配置信息,请参阅 管理指南

apiVersion: serving.knative.dev/v1
kind: Service
metadata:
  name: helloworld-go
  namespace: default
  annotations:
    serving.knative.dev/rollout-duration: "380s"

路由状态更新

在推出期间,系统会更新 Route 和 Knative Service 的状态条件。`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.

在推出期间,Route 和 Knative Service 的状态条件如下

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 共享以达到此目的。了解更多。