タスクの実行

有効期間が短いワークフローは、Kf でタスクとして実行できます。タスクはアプリで実行されます。つまり、各タスクにはアプリを関連付ける必要があります。各タスクの実行では、親アプリのビルド アーティファクトが使用されます。タスクは有効期間が短いため、アプリは長時間実行アプリケーションとしてデプロイされず、アプリやタスク用のルートは作成されません。

タスクを実行するアプリを push する

アプリ マニフェストまたはソースコードのディレクトリに移動し、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 サーバーで自動的に生成されます。タスク名の先頭にはアプリ名が付き、末尾には任意の文字列が付きます。タスク名は、同じクラスタ内のタスクを識別する固有識別子です。

タスクのリソース制限を指定する

リソース制限(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