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