Risoluzione dei problemi relativi alle attività KubernetesExecutor

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, esegui le seguenti azioni nell'ordine indicato:

  1. Controlla i log dell'attività nell'interfaccia utente DAG o nell'interfaccia utente Airflow.

  2. Controlla i log dello scheduler nella console Google Cloud :

    1. Nella console Google Cloud , vai alla pagina Ambienti.

      Vai ad Ambienti

    2. Nell'elenco degli ambienti, fai clic sul nome del tuo ambiente. Viene visualizzata la pagina Dettagli ambiente.

    3. Vai alla scheda Log e controlla la sezione Log di Airflow > Pianificatore.

    4. 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-worker e un DAG o un nome 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 scenari comuni di risoluzione dei problemi che potresti riscontrare con KubernetesExecutor.

L'attività raggiunge lo stato Running, poi non riesce durante l'esecuzione.

Sintomi:

  • Esistono log per l'attività nella UI di Airflow e nella scheda Log della sezione Worker.

Soluzione: i log dell'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 o FAILED.

Soluzione:

  • Controlla 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à raggiunge lo stato Queued e viene immediatamente contrassegnata come UP_FOR_RETRY o FAILED

Sintomi:

  • Non sono presenti log per l'attività nella UI di Airflow e nella scheda Log della sezione Worker.
  • Il log di pianificazione nella scheda Log della sezione Pianificazione contiene il messaggio Pod creation failed with reason ... Failing task e il messaggio che indica che l'attività è contrassegnata come UP_FOR_RETRY o FAILED.

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 di lavoro.

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, Cloud Composer 3 non accetta nuove attività finché alcune di quelle esistenti non sono terminate. 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 DAG. Nei log dello scheduler, puoi visualizzare messaggi di errore simili a quelli riportati di seguito:

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 quelle piccole.

Soluzione temporanea:

Se preferisci che le attività rimangano nello stato pianificato finché l'ambiente non può eseguirle, puoi definire un pool 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 Airflow non avrà uno slot libero per eseguirle. Se utilizzi questa soluzione alternativa senza applicare le possibili soluzioni, potresti comunque riscontrare una lunga coda di attività nel pool Airflow.

Passaggi successivi