執行中的工作

您可以將短暫工作流程當做 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 伺服器中自動產生工作名稱。前置字串為應用程式名稱,後置字串為任意字串。工作名稱是同一叢集中工作專屬的 ID。

指定工作資源限制

您可以在應用程式 (在 kf push 期間) 或 kf run-task 指令期間指定資源限制 (例如 CPU 核心/記憶體限制/磁碟配額)。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 指令取消執行中的 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