9.5. 使用 Knative Client 进行流量分割


kn 可帮助您控制哪些修订版本可获取您的 Knative 服务上的路由流量。

Knative 服务支持流量映射,可将服务的修订版本映射到流量的分配部分。它提供了为特定修订版本创建唯一 URL 的选项,且能够为最新修订版本分配流量。

每次更新服务配置时,都会创建一个新修订版本,服务路由默认会将所有流量指向最新可用的修订版本。

您可通过定义哪个修订版本可获得部分流量来更改此行为。

流程

  • 使用带有 --traffic 标志的 kn service update 命令来更新流量。
注意

--traffic RevisionName=Percent 使用以下语法:

  • --traffic 标志需要用等号 (=) 分隔的两个值。
  • RevisionName 字符串表示修订版本的名称。
  • Percent 整数表示分配给修订版本的流量部分。
  • 将标识符 @latest 用于 RevisionName,以表示服务的最新的可用修订版本。此标识符仅可与 --traffic 标志一起使用一次。
  • 如果 service update 命令更新该服务的配置值和流量标志,则 @latest 引用将指向更新应用到的所创建修订版本。
  • --traffic 标志可多次指定,且仅在所有标志的 Percent 值总和达到 100 时才有效。
注意

例如,要在放置所有流量前将 10% 的流量路由至您的新修订版本,请使用以下命令:

$ kn service update svc --traffic @latest=10 --traffic svc-vwxyz=90

9.5.1. 分配标签修订

服务流量块中的标签会创建自定义 URL,指向引用的修订版本。用户可为服务的可用修订版本定义唯一标签,该标签通过使用 http(s)://TAG-SERVICE.DOMAIN 格式创建自定义 URL。

给定标签对于该服务的流量块来说必须唯一。kn 作为 kn service update 命令的一部分,支持为服务修订版本分配和取消分配自定义标签。

注意

如果您为特定修订版本分配了标签,用户便可通过 --traffic 标志中作为 --traffic Tag=Percent 的标签来引用修订版本。

流程

  • 使用以下命令:

    $ kn service update svc --tag @latest=candidate --tag svc-vwxyz=current
注意

--tag RevisionName=Tag 使用以下语法:

  • --tag 标志需要两个以 = 分隔的值。
  • RevisionName 字符串表示 Revision 的名称。
  • Tag 字符串表示要为此修订版本提供的自定义标签。
  • 将标识符 @latest 用于 RevisionName,以表示服务的最新的可用修订版本。此标识符仅可与 --tag 标志一起使用一次。
  • 如果 service update 命令更新该服务的配置值(以及标签标志),则 @latest 引用将在应用更新后指向所创建修订版本。
  • --tag 标志可多次指定。
  • --tag 标志可为同一修订版本分配不同标签。

9.5.2. 取消分配标签修订版本

已分配至流量块中修订版本的标签可取消分配。取消分配标签将会移除自定义 URL。

注意

如果修订版本未标记,也没有为其分配流量,则会从流量块中完全移除该修订版本。

流程

  • 用户可以使用 kn service update 命令为修订版本取消分配标签。

    $ kn service update svc --untag candidate
注意

--untag Tag 使用以下语法:

  • --untag 标志需要一个值。
  • tag 字符串表示服务流量块中的唯一标签需要取消分配。这也会移除对应的自定义 URL。
  • --untag 标志可多次指定。

9.5.3. 流量标志操作优先级

所有流量相关标志均可使用一条 kn service update 命令指定。kn 定义这些标志的优先级。不考虑使用命令时指定的标志顺序。

通过 kn 评估标志时,标志的优先级如下:

  1. --untag:带有此标志的所有引用修订版本均将从流量块中移除。
  2. --tag:修订版本将按照流量块中的指定进行标记。
  3. --traffic:为引用的修订版本分配一部分流量分割。

9.5.4. 流量分割标志

kn 作为 kn service update 命令的一部分,支持在服务的流量块上进行流量操作。

下表显示流量分割标志、值格式和标志执行的操作汇总。“重复”列表示在 kn service update 命令中可否重复标志特定值。

标志操作重复

--traffic

RevisionName=Percent

RevisionName 提供 Percent 的流量

--traffic

Tag=Percent

为具有 Tag 的修订版本提供 Percent 的流量

--traffic

@latest=Percent

为最新可用的修订版本提供 Percent 的流量

--tag

RevisionName=Tag

RevisionName 提供 Tag

--tag

@latest=Tag

为最新可用的修订版本提供 Tag

--untag

Tag

从修订版本中移除 Tag

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.