Exécuter Tasks

Vous pouvez exécuter des workflows de courte durée en les exécutant en tant que tâches dans Kf. Les tâches sont exécutées sous "Applications", ce qui signifie que chaque tâche doit être associée à une application. Chaque exécution de tâche utilise les artefacts de compilation de l'application parente. Les tâches étant de courte durée, l'application ne sera pas déployée en tant qu'application de longue durée et aucune route ne sera créée pour l'application ou la tâche.

Transférer une application pour exécuter des tâches

Accédez au répertoire du fichier manifeste ou du code source de l'application, puis créez une application pour exécuter Tasks à l'aide de la commande kf push APP_NAME --task. L'option --task indique que l'application est destinée à être utilisée pour exécuter Tasks. Par conséquent, aucune route ne sera créée sur l'application et ne sera déployée en tant qu'application de longue durée.

$ kf push helloworld --task

Vérifiez qu'aucune instance ni route n'a été créée en répertoriant les applications.

$ kf apps
Listing Apps in Space: test-space
Name                     Instances  Memory  Disk  CPU   URLs
helloworld               stopped    1Gi     1Gi   100m  <nil>

Exécuter une tâche sur l'application

Lorsque vous exécutez une tâche sur l'application, vous pouvez éventuellement spécifier une commande de démarrage à l'aide de l'option --command. Si aucune commande de démarrage n'est spécifiée, elle utilise la commande de démarrage indiquée dans l'application. Si aucune commande de démarrage n'est spécifiée pour l'application, elle recherche la configuration CMD de l'image du conteneur. Une commande de démarrage doit exister pour que la tâche puisse s'exécuter.

$ kf run-task helloworld --command "printenv"
Task helloworld-gd8dv is submitted successfully for execution.

Le nom de la tâche est généré automatiquement dans le serveur d'API Kubernetes. Il est précédé du nom de l'application avec une chaîne arbitraire en guise de suffixe. Le nom de la tâche est un identifiant unique pour les tâches dans le même cluster.

Spécifier les limites de ressources de la tâche

Les limites de ressources (telles que les cœurs de processeur, la limite de mémoire et le quota d'espace disque) peuvent être spécifiées dans l'application (pendant kf push) ou lors de la commande kf run-task. Les limites spécifiées dans la commande kf run-task prévalent sur celles spécifiées dans l'application.

Pour spécifier des limites de ressources dans une application, vous pouvez utiliser les options --cpu-cores, --memory-limit et --disk-quota dans la commande kf push.

$ kf push helloworld --command "printenv" --cpu-cores=0.5 --memory-limit=2G --disk-quota=5G --task

Pour remplacer ces limites dans l'application, vous pouvez utiliser les options --cpu-cores, --memory-limit et --disk-quota dans la commande kf run-task.

$ kf run-task helloworld --command "printenv" --cpu-cores=0.5 --memory-limit=2G --disk-quota=5G

Spécifier un nom personnalisé à afficher pour une tâche

Vous pouvez éventuellement utiliser l'indicateur --name afin de spécifier un nom personnalisé à afficher pour une tâche afin de faciliter l'identification ou le regroupement.

$ 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>

Gérer des tâches

Affichez toutes les tâches d'une application à l'aide de la commande 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>

Annuler une tâche

Annulez une tâche active à l'aide de la commande kf terminate-task.

Annuler une tâche par son nom.

$ kf terminate-task helloworld-6w6mz
Task "helloworld-6w6mz" is successfully submitted for termination

Ou annuler une tâche par APP_NAME + ID de tâche.

$ kf terminate-task helloworld 2
Task "helloworld-6w6mz" is successfully submitted for termination
  • Remarque : Vous ne pouvez annuler que les tâches en attente ou en cours d'exécution. Vous ne pouvez pas annuler des tâches terminées.

Les tâches annulées affichent l'état 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

Afficher les journaux de tâches

Affichez les journaux d'une tâche à l'aide de la commande kf logs APP_NAME --task.

$ kf logs helloworld --task