This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.第 9 章 Knative Serving
9.1. 使用 kn 完成 Serving 任务 复制链接链接已复制到粘贴板!
Knative CLI (kn) 会扩展 oc 或 kubectl 工具的功能,以支持在 OpenShift Container Platform 上与 Knative 组件交互。kn 允许开发人员在不直接编辑 YAML 文件的情况下部署和管理应用程序。
9.1.1. 使用 kn 的基本工作流 复制链接链接已复制到粘贴板!
以下基本流程部署了一个简单的 hello 服务,它会读环境变量 RESPONSE 并打印它的输出。
您可以使用本指南作为在服务中执行创建、读取、更新和删除(CRUD)操作的参考。
流程
通过一个镜像,在
default命名空间内创建一个服务:kn service create hello --image docker.io/openshift/hello-openshift --env RESPONSE="Hello Serverless!"
$ kn service create hello --image docker.io/openshift/hello-openshift --env RESPONSE="Hello Serverless!"Copy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow 列出服务:
kn service list
$ kn service listCopy to Clipboard Copied! Toggle word wrap Toggle overflow NAME URL LATEST AGE CONDITIONS READY REASON hello http://hello-default.apps-crc.testing hello-gsdks-1 8m35s 3 OK / 3 True
NAME URL LATEST AGE CONDITIONS READY REASON hello http://hello-default.apps-crc.testing hello-gsdks-1 8m35s 3 OK / 3 TrueCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
curl服务端点命令检查该服务是否正在工作:curl http://hello-default.apps-crc.testing
$ curl http://hello-default.apps-crc.testingCopy to Clipboard Copied! Toggle word wrap Toggle overflow Hello Serverless!
Hello Serverless!Copy to Clipboard Copied! Toggle word wrap Toggle overflow 更新服务:
kn service update hello --env RESPONSE="Hello OpenShift!"
$ kn service update hello --env RESPONSE="Hello OpenShift!"Copy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow 该服务的环境变量
RESPONSE现在设置为 "Hello OpenShift!"。描述该服务。
kn service describe hello
$ kn service describe helloCopy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow 删除服务:
kn service delete hello
$ kn service delete helloCopy to Clipboard Copied! Toggle word wrap Toggle overflow Service 'hello' successfully deleted in namespace 'default'.
Service 'hello' successfully deleted in namespace 'default'.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
list命令来验证hello服务是否已被删除。kn service list hello
$ kn service list helloCopy to Clipboard Copied! Toggle word wrap Toggle overflow No services found.
No services found.Copy to Clipboard Copied! Toggle word wrap Toggle overflow
9.1.2. 使用 kn 自动扩展工作流 复制链接链接已复制到粘贴板!
您可使用 kn 修改 Knative 服务来访问自动扩展功能,而无需直接编辑 YAML 文件。
使用带有适当标志的 service create 和 service update 命令来配置自动扩展行为。
| 标志 | 描述 |
|---|---|
|
| 单个副本处理的并发请求的硬性限制。 |
|
|
根据传入请求的并发数量建议扩展时间。默认为 |
|
| 最大副本数。 |
|
| 最小副本数。 |
9.1.3. 使用 kn 进行流量分割 复制链接链接已复制到粘贴板!
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
$ kn service update svc --traffic @latest=10 --traffic svc-vwxyz=90
9.1.3.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
$ kn service update svc --tag @latest=candidate --tag svc-vwxyz=currentCopy to Clipboard Copied! Toggle word wrap Toggle overflow
--tag RevisionName=Tag 使用以下语法:
-
--tag标志需要两个以=分隔的值。 -
RevisionName字符串表示Revision的名称。 -
Tag字符串表示要为此修订版本提供的自定义标签。 -
将标识符
@latest用于 RevisionName,以表示服务的最新的可用修订版本。此标识符仅可与--tag标志一起使用一次。 -
如果
service update命令更新该服务的配置值(以及标签标志),则@latest引用将在应用更新后指向所创建修订版本。 -
--tag标志可多次指定。 -
--tag标志可为同一修订版本分配不同标签。
9.1.3.2. 取消分配标签修订版本 复制链接链接已复制到粘贴板!
已分配至流量块中修订版本的标签可取消分配。取消分配标签将会移除自定义 URL。
如果修订版本未标记,也没有为其分配流量,则会从流量块中完全移除该修订版本。
流程
取消分配标签:
kn service update svc --untag candidate
$ kn service update svc --untag candidateCopy to Clipboard Copied! Toggle word wrap Toggle overflow
--untag Tag 使用以下语法:
-
--untag标志需要一个值。 -
tag字符串表示服务流量块中的唯一标签需要取消分配。这也会移除对应的自定义 URL。 -
--untag标志可多次指定。
9.1.3.3. 流量标志操作优先级 复制链接链接已复制到粘贴板!
所有流量相关标志均可使用一条 kn service update 命令指定。kn 定义这些标志的优先级。不考虑使用命令时指定的标志顺序。
通过 kn 评估标志时,标志的优先级如下:
-
--untag:带有此标志的所有引用修订版本均将从流量块中移除。 -
--tag:修订版本将按照流量块中的指定进行标记。 -
--traffic:为引用的修订版本分配一部分流量分割。
9.1.3.4. 流量分割标志 复制链接链接已复制到粘贴板!
kn 作为 kn service update 命令的一部分,支持在服务的流量块上进行流量操作。
下表显示流量分割标志、值格式和标志执行的操作汇总。“重复”列表示在 kn service update 命令中可否重复标志特定值。
| 标志 | 值 | 操作 | 重复 |
|---|---|---|---|
|
|
|
为 | 是 |
|
|
|
为具有 | 是 |
|
|
|
为最新可用的修订版本提供 | 否 |
|
|
|
为 | 是 |
|
|
|
为最新可用的修订版本提供 | 否 |
|
|
|
从修订版本中移除 | 是 |