Managed Airflow (terza generazione) | Managed Airflow (seconda generazione) | Managed Airflow (prima generazione legacy)
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, esegui le seguenti azioni nell'ordine indicato:
Controlla i log dell'attività nell'interfaccia utente DAG o Airflow.
Controlla i log dello scheduler nella Google Cloud console:
Nella Google Cloud console, vai alla pagina Ambienti.
Nell'elenco degli ambienti, fai clic sul nome del tuo ambiente. Viene visualizzata la pagina Dettagli ambiente.
Vai alla scheda Log e controlla la sezione Log di Airflow > Scheduler.
Per un determinato intervallo di tempo, esamina il pod worker KubernetesExecutor che stava eseguendo l'attività. Se il pod non esiste più, salta questo passaggio. Il pod ha il prefisso
airflow-k8s-workere un nome di DAG o di attività nel nome. Cerca eventuali problemi segnalati, ad esempio un'attività non riuscita o non pianificabile.
Scenari comuni di risoluzione dei problemi per KubernetesExecutor
Questa sezione elenca gli scenari comuni di risoluzione dei problemi che potresti riscontrare con KubernetesExecutor.
L'attività passa allo stato Running, quindi non riesce durante l'esecuzione.
Sintomi:
- Sono presenti log per l'attività nell'interfaccia utente di Airflow e nella scheda Log della sezione Worker.
Soluzione: i log delle attività indicano il problema.
L'istanza dell'attività passa allo 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 Scheduler sono presenti log con un messaggio che indica che l'attività è contrassegnata come
UP_FOR_RETRYoFAILED.
Soluzione:
- Esamina i log dello scheduler per eventuali dettagli del problema.
Cause possibili:
- Se i log dello scheduler contengono il messaggio
Adopted tasks were still pending after...seguito dall'istanza dell'attività stampata, verifica che CeleryKubernetesExecutor sia abilitato nel tuo ambiente.
L'istanza dell'attività passa allo 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 dello scheduler nella scheda Log della sezione Scheduler contengono il messaggio
Pod creation failed with reason ... Failing taske il messaggio che indica che l'attività è contrassegnata comeUP_FOR_RETRYoFAILED.
Soluzione:
- Controlla i log dello scheduler per la risposta esatta e il motivo dell'errore.
Possibile motivo:
Se il messaggio di errore è quantities must match the regular expression ..., il problema è molto probabilmente causato da un insieme di valori personalizzati per le risorse k8s (richieste/limiti) dei pod worker delle attività.
Le attività KubernetesExecutor non riescono senza log quando viene eseguito un numero elevato di attività
Quando il tuo ambiente esegue un numero elevato di attività con KubernetesExecutor o KubernetesPodOperator contemporaneamente, Managed Airflow (terza generazione) non accetta nuove attività finché alcune delle attività esistenti non sono state completate. Le attività aggiuntive vengono contrassegnate come non riuscite e Airflow le riprova in un secondo momento, se definisci i tentativi per le attività (Airflow lo fa per impostazione predefinita).
Sintomo: le attività eseguite con KubernetesExecutor o KubernetesPodOperator non riescono senza log delle attività nell'interfaccia utente di Airflow o nell'interfaccia utente DAG. Nei log dello scheduler, puoi visualizzare messaggi di errore simili ai seguenti:
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à siano distribuite in modo più uniforme nel tempo.
- Riduci il numero di attività consolidando le attività di piccole dimensioni.
Soluzione temporanea:
Se preferisci che le attività rimangano nello stato pianificato finché il tuo ambiente non è in grado di eseguirle, puoi definire un pool di Airflow con il numero limitato di slot nell'interfaccia utente di Airflow e poi associare tutte le attività basate su container a questo pool. Ti consigliamo di impostare il numero di slot nel pool su 50 o meno. Le attività aggiuntive rimarranno nello stato pianificato finché il pool di Airflow non avrà uno slot libero per eseguirle. Se utilizzi questa soluzione temporanea senza applicare le possibili soluzioni, potresti comunque riscontrare una coda di attività di grandi dimensioni nel pool di Airflow.
Passaggi successivi
- Utilizzare CeleryKubernetesExecutor
- Utilizzare KubernetesPodOperator
- Risoluzione dei problemi di pianificazione
- Risoluzione dei problemi dei DAG