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 完成 Knative Serving 任务 复制链接链接已复制到粘贴板!
Knative kn
CLI 会扩展 oc
或 kubectl
CLI 工具的功能,以集成与 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 list
Copy 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 True
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
curl
服务端点命令检查该服务是否正在工作:curl http://hello-default.apps-crc.testing
$ curl http://hello-default.apps-crc.testing
Copy 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 hello
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 删除服务:
kn service delete hello
$ kn service delete hello
Copy 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 通过列出
hello
服务来验证 hello 服务是否已被删除:kn service list hello
$ kn service list hello
Copy 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
命令来更新流量。例如,在将所有流量放置到新修订版本前,要将 10% 的流量路由到新修订版本:
kn service update svc --traffic @latest=10 --traffic svc-vwxyz=90
$ kn service update svc --traffic @latest=10 --traffic svc-vwxyz=90
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --traffic RevisionName=Percent
使用以下语法:-
--traffic
标志需要用等号 (=
) 分隔的两个值。 -
RevisionName
字符串表示修订版本的名称。 -
Percent
整数表示分配给修订版本的流量部分。 -
将标识符
@latest
用于 RevisionName,以表示服务的最新的可用修订版本。此标识符仅可与--traffic
标志一起使用一次。 -
如果
service update
命令更新该服务的配置值和流量标志,则@latest
引用将指向更新应用到的所创建修订版本。 -
--traffic
标志可多次指定,且仅在所有标志的Percent
值总和达到 100 时才有效。
-
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=current
Copy 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
命令为修订版本取消分配标签:kn service update svc --untag candidate
$ kn service update svc --untag candidate
Copy 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
命令的一部分,支持在服务的流量块上进行流量操作。
下表显示流量分割标志、值格式和标志执行的操作汇总。Repetition 列表示在 kn service update
命令中是否允许重复标志的特定值。
标记 | 值 | 操作 | 重复 |
---|---|---|---|
|
|
为 | 是 |
|
|
为带有 | 是 |
|
|
为最新可用的修订版本提供 | 否 |
|
|
为 | 是 |
|
|
为最新可用的修订版本提供 | 否 |
|
|
从修订中删除 | 是 |