5.3. 流量管理
在 Knative 应用程序中,可以通过创建流量分割来管理流量。流量分割被配置为由 Knative 服务管理的路由的一部分。
配置路由允许将请求发送到服务的不同修订版本。此路由由 Service
对象的 traffic
spec 决定。
traffic
规格声明由一个或多个修订版本组成,每个修订版本负责处理整个流量的一部分。路由到每个修订版本的流量百分比必须添加到 100%,由 Knative 验证确保。
traffic
规格中指定的修订版本可以是固定的、名为修订的修订版本,或者可以指向"latest"修订,该修订跟踪服务所有修订版本列表的头。"latest" 修订版本是一个浮动引用类型,它在创建了新修订版本时更新。每个修订版本都可以附加标签,为该修订版本创建一个额外访问 URL。
traffic
规格可通过以下方法修改:
-
直接编辑
Service
对象的 YAML。 -
使用 Knative (
kn
) CLI--traffic
标志。 - 使用 OpenShift Container Platform Web 控制台。
当您创建 Knative 服务时,它没有任何默认 traffic
spec 设置。
5.3.1. traffic 规格示例
以下示例显示了一个 traffic
规格,其中 100% 的流量路由到该服务的最新修订版本。在 status
下,您可以看到 latestRevision
解析为的最新修订版本的名称:
apiVersion: serving.knative.dev/v1 kind: Service metadata: name: example-service namespace: default spec: ... traffic: - latestRevision: true percent: 100 status: ... traffic: - percent: 100 revisionName: example-service
以下示例显示了一个 traffic
规格,其中 100% 的流量路由到当前标记为 current
修订版本,并且该修订版本的名称指定为 example-service
。标记为 latest
的修订版本会保持可用,即使没有流量路由到它:
apiVersion: serving.knative.dev/v1 kind: Service metadata: name: example-service namespace: default spec: ... traffic: - tag: current revisionName: example-service percent: 100 - tag: latest latestRevision: true percent: 0
以下示例演示了如何扩展 traffic
规格中的修订版本列表,以便在多个修订版本间分割流量。这个示例将 50% 的流量发送到标记为 current
修订版本,50% 的流量发送到标记为 candidate
的修订版本:标记为 latest
的修订版本会保持可用,即使没有流量路由到它:
apiVersion: serving.knative.dev/v1 kind: Service metadata: name: example-service namespace: default spec: ... traffic: - tag: current revisionName: example-service-1 percent: 50 - tag: candidate revisionName: example-service-2 percent: 50 - tag: latest latestRevision: true percent: 0