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:
- Esegui il push di un'app per eseguire le attività con il comando
kf push APP_NAME --task
. - 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. - Kf crea una PipelineRun Tekton con valori dell'app e parametri del comando
run-task
. - Tekton PipelineRun crea un pod Kubernetes che avvia un container in base alle configurazioni nell'app e nell'attività.
- 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
. - 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).
- 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 e cronologia delle esecuzioni delle attività
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.
Pianificazione delle attività
Come descritto in precedenza, Tasks può essere eseguito in modo asincrono utilizzando il comando kf run-task APP_NAME
.
In alternativa, puoi pianificare l'esecuzione di Tasks creando prima un job con il comando kf create-job
, quindi 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 l'esecuzione dell'attività. Un job descrive l'attività da eseguire e gestisce automaticamente la sua creazione.
Le attività vengono create nella pianificazione anche se le esecuzioni precedenti dell'attività sono ancora in esecuzione. Se per qualsiasi motivo viene persa una o più esecuzioni, al momento del ripristino del sistema vengono eseguite solo le esecuzioni meno recenti.
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 eseguite fino al completamento.
Le attività create da un job pianificato sono comunque soggette al criterio di conservazione delle attività.
Differenze rispetto allo scheduler PCF
PCF Scheduler consente più pianificazioni per un singolo job, mentre Kf supporta solo una singola pianificazione per job. Puoi replicare il comportamento dello scheduler PCF creando più job, uno per ogni pianificazione.