您可以將短暫工作流程當做 Kf 中的任務執行,工作會在應用程式下執行,也就是說,每個工作都必須有相關聯的應用程式。每個工作執行作業都會使用來自父項應用程式的建構構件。由於工作壽命短暫,應用程式不會部署為長時間執行的應用程式,也不應為應用程式或工作建立路徑。
推送可執行工作事項的應用程式
複製 test-app repo 存放區。
git clone https://github.com/cloudfoundry-samples/test-app test-app
cd test-app
推送應用程式。
使用
kf push APP_NAME --task
指令推送應用程式。--task
旗標表示應用程式用於執行工作,因此不會在應用程式上建立路徑,也不會部署為長時間執行的應用程式。kf push test-app --task
列出應用程式,確認系統未建立任何應用程式執行個體或路徑。
kf apps
請注意,應用程式未啟動,且沒有網址。
Listing Apps in Space: test-space Name Instances Memory Disk CPU URLs test-app stopped 1Gi 1Gi 100m <nil>
在應用程式上執行工作
在應用程式上執行工作時,您可以選擇使用 --command
標記指定啟動指令。如果未指定啟動指令,系統會使用應用程式上指定的啟動指令。如果應用程式未指定啟動指令,系統會查詢容器映像檔的 CMD 設定。必須有啟動指令,才能順利執行工作。
kf run-task test-app --command "printenv"
畫面會顯示類似以下的內容,確認已提交工作。
Task test-app-gd8dv is submitted successfully for execution.
系統會自動產生工作名稱,並在名稱前面加上應用程式名稱,在名稱後面加上任意字串。工作名稱是同一叢集中工作專屬的 ID。
指定工作資源限制
您可以在應用程式 (在 kf push
期間) 或 kf run-task
指令期間指定資源限制 (例如 CPU 核心/記憶體限制/磁碟配額)。kf run-task
指令中指定的限制,優先於應用程式中指定的限制。
如要在應用程式中指定資源限制,您可以在 kf push
指令中使用 --cpu-cores
、--memory-limit
和 --disk-quota
標記。
kf push test-app --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 test-app --command "printenv" --cpu-cores=0.5 --memory-limit=2G --disk-quota=5G
為工作指定自訂顯示名稱
您可以選擇使用 --name
標記,為工作指定自訂顯示名稱,以便識別/分組。
$ kf run-task test-app --command "printenv" --name foo
Task test-app-6swct is submitted successfully for execution.
$ kf tasks test-app
Listing Tasks in Space: test space
Name ID DisplayName Age Duration Succeeded Reason
test-app-6swct 3 foo 1m 21s True <nil>
管理工作
使用 kf tasks APP_NAME
指令查看應用程式的所有工作。
$ kf tasks test-app
Listing Tasks in Space: test space
Name ID DisplayName Age Duration Succeeded Reason
test-app-gd8dv 1 test-app-gd8dv 1m 21s True <nil>
取消工作
使用 kf terminate-task
指令取消執行中的 Task。
根據工作名稱取消工作。
$ kf terminate-task test-app-6w6mz
Task "test-app-6w6mz" is successfully submitted for termination
或者,您也可以使用 APP_NAME + 工作 ID 取消工作。
$ kf terminate-task test-app 2
Task "test-app-6w6mz" is successfully submitted for termination
已取消的工作會顯示 PipelineRunCancelled
狀態。
$ kf tasks test-app
Listing Tasks in Space: test space
Name ID DisplayName Age Duration Succeeded Reason
test-app-gd8dv 1 test-app-gd8dv 1m 21s True <nil>
test-app-6w6mz 2 test-app-6w6mz 38s 11s False PipelineRunCancelled
查看任務記錄檔
使用 kf logs APP_NAME --task
指令查看工作記錄。
$ kf logs test-app --task