配置向修订版逐步推出流量¶
如果您的流量配置指向配置目标而不是修订版目标,当创建新的修订版并准备就绪时,来自目标的 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 服务状态条件。`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
多次推出¶
如果在推出进行时创建了新的修订版,系统将立即开始将流量转移到最新的修订版,并将从最新到最旧的顺序逐步推出未完成的推出。