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 habituales.

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 de DAG o en la IU de Airflow.

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

    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 revisa la sección Registros de Airflow > Programador.

    4. Para un período determinado, inspecciona el pod de trabajador 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 que falló o que no se puede programar.

Situaciones comunes de solución de problemas de 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 Logs de la sección Workers.

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 tareas en la IU de Airflow ni en la pestaña Logs de la sección Workers.
  • Hay registros en la pestaña Registros de la sección Programador con un mensaje que indica que la tarea está marcada como UP_FOR_RETRY o FAILED.

Solución:

  • Inspecciona los registros del programador para ver si hay detalles del 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 Logs de la sección Workers.
  • Los registros del programador en la pestaña Registros de la sección Programador tienen el mensaje Pod creation failed with reason ... Failing task y el mensaje de que la tarea está marcada como UP_FOR_RETRY o FAILED.

Solución:

  • Verifica los registros del programador para obtener la respuesta exacta y el motivo de la falla.

Motivo posible:

Si el mensaje de error es quantities must match the regular expression ..., es probable que el problema se deba a valores personalizados establecidos para los recursos de k8s (solicitudes o 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 se terminan algunas de las tareas existentes. Las tareas adicionales se marcan como fallidas, y Airflow las vuelve a intentar más adelante, 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 de 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 el programa de ejecución de DAG para que las tareas se distribuyan de manera más uniforme con el tiempo.
  • Consolida las tareas pequeñas para reducir la cantidad de tareas.

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 ranuras en el grupo en 50 o menos. Las tareas adicionales permanecerán en el estado programado hasta que el grupo de Airflow tenga un espacio libre para ejecutarlas. Si usas esta solución alternativa sin aplicar posibles soluciones, es posible que experimentes una gran cola de tareas en el grupo de Airflow.

¿Qué sigue?