Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1
Questa pagina descrive come risolvere i problemi relativi alle attività eseguite da KubernetesExecutor e fornisce soluzioni per i problemi comuni.
Approccio generale alla risoluzione dei problemi di KubernetesExecutor
Per risolvere i problemi relativi a un'attività eseguita con KubernetesExecutor, svolgi le seguenti azioni nell'ordine elencato:
Controlla i log dell'attività nell'interfaccia utente DAG o nell'interfaccia utente di Airflow.
Controlla i log di Scheduler nella console Google Cloud:
Nella console Google Cloud, vai alla pagina Ambienti.
Nell'elenco degli ambienti, fai clic sul nome dell'ambiente. Viene visualizzata la pagina Dettagli dell'ambiente.
Vai alla scheda Log e controlla la sezione Log Airflow > Scheduler.
Per un determinato intervallo di tempo, controlla il pod di lavoro KubernetesExecutor che stava eseguendo l'attività. Se il pod non esiste più, salta questo passaggio. Il pod contiene il prefisso
airflow-k8s-worker
e il nome di un DAG o di un'attività. Cerca eventuali problemi segnalati, ad esempio un'attività non riuscita o non programmabile.
Scenari di risoluzione dei problemi comuni per KubernetesExecutor
Questa sezione elenca gli scenari di risoluzione dei problemi comuni che potresti riscontrare con KubernetesExecutor.
L'attività raggiunge lo stato Running
, quindi non riesce durante l'esecuzione.
Sintomi:
- I log dell'attività sono disponibili nell'interfaccia utente di Airflow e nella scheda Log della sezione Worker.
Soluzione: i log delle attività indicano il problema.
L'istanza dell'attività raggiunge lo stato queued
, quindi viene contrassegnata come UP_FOR_RETRY
o FAILED
dopo un po' di tempo.
Sintomi:
- Non sono presenti log per l'attività nell'interfaccia utente di Airflow e nella scheda Log della sezione Worker.
- Nella scheda Log della sezione Pianificatore sono presenti log con un messaggio che indica che l'attività è contrassegnata come
UP_FOR_RETRY
oFAILED
.
Soluzione:
- Controlla i log del programmatore per eventuali dettagli sul problema.
Possibili cause:
- Se i log dello scheduler contengono il messaggio
Adopted tasks were still pending after...
seguito dall'istanza dell'attività stampata, verifica che CeleryKubernetesExecutor sia attivato nel tuo ambiente.
L'istanza dell'attività raggiunge lo stato Queued
e viene immediatamente contrassegnata come UP_FOR_RETRY
o FAILED
Sintomi:
- Non sono presenti log per l'attività nell'interfaccia utente di Airflow e nella scheda Log della sezione Worker.
- I log dell'utilità di pianificazione nella scheda Log della sezione Utilità di pianificazione contengono il messaggio
Pod creation failed with reason ... Failing task
e il messaggio che indica che l'attività è contrassegnata comeUP_FOR_RETRY
oFAILED
.
Soluzione:
- Controlla i log dello scheduler per trovare la risposta esatta e il motivo dell'errore.
Possibile motivo:
Se il messaggio di errore è quantities must match the regular expression ...
,
è molto probabile che il problema sia causato da valori personalizzati impostati per le risorse k8s (richieste/limiti) dei pod di worker di attività.
Le attività KubernetesExecutor non riescono senza log quando viene eseguito un numero elevato di attività
Quando l'ambiente esegue contemporaneamente un numero elevato di attività con KubernetesExecutor o KubernetesPodOperator, Cloud Composer 3 non accetta nuove attività finché alcune delle attività esistenti non sono state completate. Le attività aggiuntive vengono contrassegnate come non riuscite e Airflow lo fa nuovamente più tardi, se definisci i nuovi tentativi per le attività (Airflow lo fa per impostazione predefinita).
Sintomo: le attività eseguite con KubernetesExecutor o KubernetesPodOperator non vanno a buon fine senza log delle attività nell'interfaccia utente di Airflow o DAG. Nei log del programmatore, puoi vedere messaggi di errore simili a quanto segue:
pods \"airflow-k8s-worker-*\" is forbidden: exceeded quota: k8s-resources-quota,
requested: pods=1, used: pods=*, limited: pods=*","reason":"Forbidden"
Possibili soluzioni:
- Modifica la pianificazione dell'esecuzione del DAG in modo che le attività vengano distribuite in modo più uniforme nel tempo.
- Riduci il numero di attività raggruppando quelle di piccole dimensioni.
Soluzione:
Se preferisci che le attività rimangano nello stato pianificato finché l'ambiente non può eseguire, puoi definire un pool Airflow con il numero limitato di slot nell'interfaccia utente di Airflow e poi associare tutte le attività basate su contenitori a questo pool. Ti consigliamo di impostare il numero di slot nel pool su un massimo di 50. Le attività extra rimarranno nello stato pianificato finché il pool Airflow non avrà uno spazio libero per eseguirle. Se utilizzi questa soluzione alternativa senza applicare possibili soluzioni, potresti comunque riscontrare una lunga coda di attività nel pool Airflow.
Passaggi successivi
- Utilizzare CeleryKubernetesExecutor
- Utilizzare KubernetesPodOperator
- Risoluzione dei problemi di pianificazione
- Risoluzione dei problemi dei DAG