Cómo solucionar problemas de tareas de KubernetesExecutor

Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1

En esta página, se describe cómo solucionar problemas con las tareas que ejecuta KubernetesExecutor y se proporcionan soluciones para problemas comunes.

Enfoque general para solucionar problemas de KubernetesExecutor

Para solucionar problemas con una tarea ejecutada con KubernetesExecutor, realiza las siguientes acciones en el orden indicado:

  1. Consulta los registros de la tarea en la IU del DAG o la IU de Airflow.

  2. Verifica los registros del programador en la Google Cloud consola:

    1. En la consola de Google Cloud , ve a la página Entornos.

      Ir a Entornos

    2. En la lista de entornos, haz clic en el nombre de tu entorno. Se abrirá la página Detalles del entorno.

    3. Ve a la pestaña Registros y consulta la sección Registros de Airflow > Programador.

    4. Para un período determinado, inspecciona el pod de trabajador de KubernetesExecutor que ejecutaba la tarea. Si el Pod ya no existe, omite este paso. El pod tiene el prefijo airflow-k8s-worker y un DAG o un nombre de tarea en su nombre. Busca cualquier problema informado, como una tarea fallida o una tarea que no se puede programar.

Situaciones comunes de solución de problemas para KubernetesExecutor

En esta sección, se enumeran las situaciones comunes de solución de problemas que puedes encontrar con KubernetesExecutor.

La tarea llega al estado Running y, luego, falla durante la ejecución.

Síntomas:

  • Hay registros de la tarea en la IU de Airflow y en la pestaña Registros de la sección Trabajadores.

Solución: Los registros de tareas indican el problema.

La instancia de la tarea llega al estado queued y, luego, se marca como UP_FOR_RETRY o FAILED después de un tiempo.

Síntomas:

  • No hay registros de la tarea en la IU de Airflow ni en la pestaña Registros de la sección Trabajadores.
  • En la pestaña Registros de la sección Programador, hay registros con un mensaje que indica que la tarea está marcada como UP_FOR_RETRY o FAILED.

Solución:

  • Inspecciona los registros del programador para obtener detalles sobre el problema.

Causas posibles:

  • Si los registros del programador contienen el mensaje Adopted tasks were still pending after... seguido de la instancia de tarea impresa, verifica que CeleryKubernetesExecutor esté habilitado en tu entorno.

La instancia de la tarea llega al estado Queued y se marca de inmediato como UP_FOR_RETRY o FAILED.

Síntomas:

  • No hay registros de la tarea en la IU de Airflow ni en la pestaña Registros de la sección Trabajadores.
  • En los registros del programador de la pestaña Registros de la sección Programador, se incluye el mensaje Pod creation failed with reason ... Failing task y el mensaje que indica que la tarea se marcó como UP_FOR_RETRY o FAILED.

Solución:

  • Revisa los registros del programador para conocer la respuesta exacta y el motivo del error.

Posible motivo:

Si el mensaje de error es quantities must match the regular expression ..., es muy probable que el problema se deba a un conjunto de valores personalizados establecidos para los recursos de k8s (solicitudes/límites) de los Pods de trabajadores de tareas.

Las tareas de KubernetesExecutor fallan sin registros cuando se ejecuta una gran cantidad de tareas

Cuando tu entorno ejecuta una gran cantidad de tareas con KubernetesExecutor o KubernetesPodOperator al mismo tiempo, Cloud Composer 3 no acepta tareas nuevas hasta que finalicen algunas de las tareas existentes. Las tareas adicionales se marcan como con errores y Airflow las reintenta más tarde si defines reintentos para las tareas (Airflow lo hace de forma predeterminada).

Síntoma: Las tareas que se ejecutan con KubernetesExecutor o KubernetesPodOperator fallan sin registros de tareas en la IU de Airflow o la IU del DAG. En los registros del programador, puedes ver mensajes de error similares a los siguientes:

pods \"airflow-k8s-worker-*\" is forbidden: exceeded quota: k8s-resources-quota,
requested: pods=1, used: pods=*, limited: pods=*","reason":"Forbidden"

Soluciones posibles:

  • Ajusta la programación de ejecución del DAG para que las tareas se distribuyan de manera más uniforme con el tiempo.
  • Reduce la cantidad de tareas consolidando las pequeñas.

Solución alternativa:

Si prefieres que las tareas permanezcan en el estado programado hasta que tu entorno pueda ejecutarlas, puedes definir un grupo de Airflow con la cantidad limitada de ranuras en la IU de Airflow y, luego, asociar todas las tareas basadas en contenedores con este grupo. Recomendamos establecer la cantidad de espacios en el grupo en 50 o menos. Las tareas adicionales permanecerán en el estado programado hasta que el grupo de Airflow tenga una ranura libre para ejecutarlas. Si usas esta solución alternativa sin aplicar las posibles soluciones, es posible que sigas experimentando una gran cola de tareas en el grupo de Airflow.

¿Qué sigue?