Panoramica delle attività

Informazioni su Tasks

A differenza delle app (processi a lunga esecuzione), le attività vengono eseguite per un periodo di tempo limitato e poi si arrestano. Le attività vengono eseguite nei propri container in base alla configurazione nell'app principale e possono essere configurate per utilizzare risorse limitate (ad es. CPU/memoria/spazio di archiviazione su disco temporaneo).

Casi d'uso per Tasks

  • Migrazione di un database
  • Esecuzione di un job batch (pianificato/non pianificato)
  • Invio di un'email
  • Trasformazione dei dati (ETL)
  • Elaborazione dei dati (caricamento/backup/download)

Come funziona Tasks

Le attività vengono eseguite in modo asincrono e indipendentemente dall'app principale o da altre attività in esecuzione nella stessa app. Un'app creata per l'esecuzione di attività non ha percorsi creati o assegnati e il ciclo di vita Esegui viene ignorato. Il ciclo di vita del caricamento del codice sorgente e della costruzione procede e genera un'immagine container utilizzata per l'esecuzione dei task dopo il push dell'app (vedi Ciclo di vita delle app in Eseguire il deployment di un'applicazione).

Il ciclo di vita di un'attività è il seguente:

  1. Esegui il push di un'app per l'esecuzione di attività con il comando kf push APP_NAME --task.
  2. Esegui un'attività nell'app con il comando kf run-task APP_NAME. L'attività eredita le variabili di ambiente, le associazioni di servizi, l'allocazione delle risorse, il comando di avvio e i gruppi di sicurezza associati all'app.
  3. Kf crea un PipelineRun Tekton con i valori dell'app e i parametri del comando run-task.
  4. Tekton PipelineRun crea un pod Kubernetes che avvia un contenitore in base alle configurazioni di App e Task.
  5. L'esecuzione dell'attività si interrompe (l'attività esce o viene interrotta manualmente), il pod sottostante viene interrotto o terminato. I pod di Tasks interrotti vengono conservati e, di conseguenza, i log di Tasks sono accessibili tramite il comando kf logs APP_NAME --task.
  6. Se interrompi un'attività prima che si arresti, la PipelineRun di Tekton viene annullata (vedi Annullamento di una PipelineRun) e il pod sottostante insieme ai log vengono eliminati. I log delle attività terminate vengono inviati agli stream di log a livello di cluster, se configurati (ad es. Stackdriver, Fluentd).
  7. Se il numero di attività eseguite in un'app è superiore a 500, le attività più vecchie vengono eliminate automaticamente.

Criterio di conservazione delle attività

Le attività vengono create come risorse personalizzate nel cluster Kubernetes, pertanto è importante non esaurire lo spazio del database etcd sottostante. Per impostazione predefinita, Kf conserva solo le ultime 500 attività per ogni app. Una volta raggiunto il numero di 500 attività, le attività più vecchie (insieme ai pod e ai log sottostanti) verranno eliminate automaticamente.

Log delle attività e cronologia di esecuzione

Tutti i dati o i messaggi che l'attività stampa su STDOUT o STDERR sono disponibili utilizzando il comando kf logs APP_NAME --task. Il meccanismo di logging a livello di cluster (ad esempio Stackdriver, Fluentd) invierà i log delle attività alla destinazione di logging configurata.

Pianificazione delle attività

Come descritto sopra, i task possono essere eseguiti in modo asincrono utilizzando il comando kf run-task APP_NAME. In alternativa, puoi pianificare l'esecuzione delle attività creando prima un job utilizzando il comando kf create-job e poi pianificandolo con il comando kf schedule-job JOB_NAME. Puoi pianificare il job in modo che esegua automaticamente le attività in base a una pianificazione unix-cron specificata.

Come vengono pianificate le attività

Crea e pianifica un job per eseguire l'attività. Un job descrive l'attività da eseguire e gestisce automaticamente la creazione dell'attività.

Le attività vengono create in base alla pianificazione anche se le esecuzioni precedenti sono ancora in corso. Se per qualsiasi motivo alcune esecuzioni vengono perse, al momento del recupero del sistema viene eseguita solo l'esecuzione persa più recente.

L'eliminazione di un job comporta l'eliminazione di tutte le attività associate. Se eventuali attività associate erano ancora in corso, vengono eliminate forzatamente senza essere completate.

Le attività create da un job pianificato sono comunque soggette alle norme sulla conservazione delle attività.

Differenze rispetto a PCF Scheduler

PCF Scheduler consente più pianificazioni per un singolo job, mentre Kf supporta solo una pianificazione per job. Puoi replicare il comportamento di PCF Scheduler creando più job, uno per ogni pianificazione.