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 命令中是否允许重复标志的特定值。
					
| 标记 | 值 | 操作 | 重复 | 
|---|---|---|---|
| 
										 | 
										 | 
										为  | 是 | 
| 
										 | 
										 | 
										为带有  | 是 | 
| 
										 | 
										 | 
										为最新可用的修订版本提供  | 否 | 
| 
										 | 
										 | 
										为  | 是 | 
| 
										 | 
										 | 
										为最新可用的修订版本提供  | 否 | 
| 
										 | 
										 | 
										从修订中删除  | 是 |