Attività

Informazioni su Tasks

A differenza delle app (processi a lunga esecuzione), Tasks viene eseguito per un periodo di tempo limitato e poi si arresta. Le attività vengono eseguite nei rispettivi container in base alla configurazione nell'app padre e possono essere configurate per utilizzare risorse limitate (ad esempio, spazio di archiviazione su disco CPU, memoria o disco permanente).

Casi d'uso di 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 ed eseguito in modo indipendente dall'app principale o da altre attività in esecuzione sulla stessa app. In un'app creata per eseguire Tasks non sono state create o assegnate route e il ciclo di vita di Esegui viene ignorato. I cicli di vita del caricamento del codice sorgente e della creazione continuano e generano un'immagine container utilizzata per l'esecuzione di Tasks dopo il push dell'app (vedi cicli di vita delle app in Deployment di un'applicazione).

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

  1. Esegui il push di un'app per eseguire le 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 una PipelineRun Tekton con valori dell'app e parametri del comando run-task.
  4. Tekton PipelineRun crea un pod Kubernetes che avvia un container in base alle configurazioni nell'app e nell'attività.
  5. L'esecuzione dell'attività si interrompe (l'attività esce o viene terminata manualmente), il pod sottostante viene arrestato o arrestato. I pod delle attività arrestate vengono conservati, pertanto i log delle attività sono accessibili tramite il comando kf logs APP_NAME --task.
  6. Se interrompi un'attività prima che venga interrotta, Tekton PipelineRun viene annullato (vedi Annullamento di una PipelineRun), il pod sottostante e i log vengono eliminati. I log delle attività terminate vengono inviati ai flussi di logging a livello di cluster, se configurati (ad esempio Stackdriver, Fluentd).
  7. Se il numero di attività eseguite su un'app è maggiore di 500, le attività meno recenti 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. Quando il numero di attività raggiunge 500, le attività meno recenti (insieme ai pod e ai log sottostanti) vengono eliminate automaticamente.

Logging delle attività e cronologia di esecuzione

Tutti i dati o i messaggi inviati dall'attività a STDOUT o STDERR sono disponibili utilizzando il comando kf logs APP_NAME --task. Il meccanismo di logging a livello di cluster (come Stackdriver, Fluentd) invia i log delle attività alla destinazione di logging configurata.