您可以通过在 Kf 中以任务形式运行短期工作流来执行这些工作流。任务在应用下运行,这意味着每个任务都必须有一个关联的应用。每个任务执行过程都会使用父应用中的构建工件。由于任务是短期的,因此应用不会部署为长时间运行的应用,不应为应用或任务创建路由。
推送用于运行任务的应用
导航到应用清单或源代码的目录,并使用 kf push APP_NAME --task
命令创建用于运行任务的应用。--task
标志表示应用的用途用于运行任务,因此不会在应用上创建路由,也不会部署为长时间运行的应用。
$ kf push helloworld --task
通过列出应用,确认没有创建应用实例或路由。
$ kf apps
Listing Apps in Space: test-space
Name Instances Memory Disk CPU URLs
helloworld stopped 1Gi 1Gi 100m <nil>
在应用上运行任务
当您在应用上运行任务时,可以使用 --command
标志选择性指定启动命令。如果未指定启动命令,则使用应用中指定的启动命令。如果应用未指定启动命令,它会查找容器映像的 CMD 配置。必须存在启动命令才能成功运行任务。
$ kf run-task helloworld --command "printenv"
Task helloworld-gd8dv is submitted successfully for execution.
任务名称是在 Kubernetes API 服务器中自动生成的。此名称以应用名称开头,并附加任意一个字符串。任务名称是同一集群中 Tasks 的唯一标识符。
指定任务资源限制
资源限制(例如 CPU 核心/内存限制/磁盘配额)可以在应用中(在 kf push
期间)或 kf run-task
命令期间指定。kf run-task
命令中指定的限制优先于应用中指定的限制。
如需在应用中指定资源限制,您可以在 kf push
命令中使用 --cpu-cores
、--memory-limit
和 --disk-quota
标志。
$ kf push helloworld --command "printenv" --cpu-cores=0.5 --memory-limit=2G --disk-quota=5G --task
如需在应用中替换这些限制,您可以在 kf run-task
命令中使用 --cpu-cores
、--memory-limit
和 --disk-quota
标志。
$ kf run-task helloworld --command "printenv" --cpu-cores=0.5 --memory-limit=2G --disk-quota=5G
为任务指定自定义显示名
您可以选择性地使用 --name
标志为任务指定自定义显示名,以方便识别/分组。
$ kf run-task helloworld --command "printenv" --name foo
Task helloworld-6swct is submitted successfully for execution.
$ kf tasks helloworld
Listing Tasks in Space: test space
Name ID DisplayName Age Duration Succeeded Reason
helloworld-6swct 3 foo 1m 21s True <nil>
管理任务
使用 kf tasks APP_NAME
命令查看应用的所有任务。
$ kf tasks helloworld
Listing Tasks in Space: test space
Name ID DisplayName Age Duration Succeeded Reason
helloworld-gd8dv 1 helloworld-gd8dv 1m 21s True <nil>
取消任务
使用 kf terminate-task
命令取消活跃任务。
按任务名称取消任务。
$ kf terminate-task helloworld-6w6mz
Task "helloworld-6w6mz" is successfully submitted for termination
或按 APP_NAME + 任务 ID 取消任务。
$ kf terminate-task helloworld 2
Task "helloworld-6w6mz" is successfully submitted for termination
- 注意:您只能取消待处理/正在运行的任务,不能取消已完成的任务。
已取消的任务的状态为 PipelineRunCancelled
。
$ kf tasks helloworld
Listing Tasks in Space: test space
Name ID DisplayName Age Duration Succeeded Reason
helloworld-gd8dv 1 helloworld-gd8dv 1m 21s True <nil>
helloworld-6w6mz 2 helloworld-6w6mz 38s 11s False PipelineRunCancelled
查看任务日志
使用 kf logs APP_NAME --task
命令查看任务的日志。
$ kf logs helloworld --task