Les tâches

À propos de Tasks

Contrairement aux applications (processus de longue durée), Tasks s'exécute pendant une durée limitée, puis s'arrête. Les tâches s'exécutent dans leurs propres conteneurs en fonction de la configuration de l'application parente et peuvent être configurées pour utiliser des ressources limitées (telles que processeur/mémoire/espace de stockage sur disque).

Cas d'utilisation de Tasks

  • Migrer une base de données
  • Exécuter une tâche par lots (planifiée/non planifiée)
  • Envoyer un e-mail
  • Transformer des données (ETL)
  • Traiter des données (importation/sauvegarde/téléchargement)

Fonctionnement de Tasks

Les tâches sont exécutées de manière asynchrone et s'exécutent indépendamment de l'application parente ou d'autres tâches exécutées sur la même application. Aucune route créée ou attribuée n'est associée à une application créée pour exécuter Tasks, et le cycle de vie Exécuter est ignoré. Les cycles de vie Importation du code source et Build se poursuivent et aboutissent à une image de conteneur utilisée pour exécuter Tasks après le déploiement de l'application (voir les cycles de vie de l'application sur la page Déployer une application).

Le cycle de vie d'une tâche est le suivant :

  1. Transférez une application pour exécuter des tâches à l'aide de la commande kf push APP_NAME --task.
  2. Pour exécuter une tâche sur l'application, utilisez la commande kf run-task APP_NAME. La tâche hérite des variables d'environnement, des liaisons de service, de l'allocation des ressources, de la commande de démarrage et des groupes de sécurité associés à l'application.
  3. Kf crée un pipeline Tekton PipelineRun à partir des valeurs de l'application et des paramètres de la commande run-task.
  4. Le pipeline Tekton PipelineRun crée un pod Kubernetes qui lance un conteneur basé sur les configurations de l'application et de la tâche.
  5. L'exécution de la tâche s'arrête (la tâche se termine ou est terminée manuellement), et le pod sous-jacent est arrêté ou interrompu. Les pods des tâches arrêtées sont conservés, et les journaux des tâches sont donc accessibles via la commande kf logs APP_NAME --task.
  6. Si vous terminez une tâche avant qu'elle ne s'arrête, le pipeline Tekton PipelineRun est annulé (consultez la section Annuler un pipeline PipelineRun), le pod sous-jacent et les journaux sont supprimés. Les journaux des tâches terminées sont transmis aux flux de journalisation au niveau du cluster s'ils sont configurés (par exemple, Stackdriver, Fluentd).
  7. Si le nombre de tâches exécutées sur une application est supérieur à 500, les tâches les plus anciennes sont automatiquement supprimées.

Règle de conservation de Tasks

Les tâches sont créées en tant que ressources personnalisées dans le cluster Kubernetes. Il est donc important de ne pas épuiser l'espace de la base de données etcd sous-jacente. Par défaut, Kf ne conserve que les 500 dernières tâches par application. Une fois que le nombre de tâches atteint la limite de 500, les tâches les plus anciennes (ainsi que les pods et les journaux sous-jacents) sont automatiquement supprimées.

Journalisation et historique d'exécution de Tasks

Les données ou les messages générés par la tâche dans STDOUT ou STDERR sont disponibles via la commande kf logs APP_NAME --task. Un mécanisme de journalisation au niveau du cluster (tel que Stackdriver, Fluentd) envoie les journaux de tâches à la destination de journalisation configurée.