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 ejecutadas por KubernetesExecutor y se ofrecen soluciones para problemas habituales.

Enfoque general para solucionar problemas de KubernetesExecutor

Para solucionar problemas con una tarea ejecutada con KubernetesExecutor, haz lo siguiente en el orden indicado:

  1. Consulta los registros de la tarea en la interfaz de usuario de DAG o en la interfaz de usuario de Airflow.

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

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

      Ir a Entornos

    2. En la lista de entornos, haz clic en el nombre del 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. En un periodo determinado, inspecciona el pod de trabajador de KubernetesExecutor que estaba ejecutando la tarea. Si el pod ya no existe, sáltate este paso. El pod tiene el prefijo airflow-k8s-worker y un DAG o un nombre de tarea en su nombre. Busca los problemas que se hayan notificado, como una tarea fallida o una tarea que no se pueda programar.

Situaciones habituales de solución de problemas de KubernetesExecutor

En esta sección se enumeran los problemas habituales que pueden surgir con KubernetesExecutor.

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

Síntomas:

  • Hay registros de la tarea en la interfaz de usuario 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 pasa al estado queued y, después de un tiempo, se marca como UP_FOR_RETRY o FAILED.

Síntomas:

  • No hay registros de la tarea en la interfaz de usuario 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 se ha marcado como UP_FOR_RETRY o FAILED.

Solución:

  • Consulta los registros del programador para obtener información sobre el problema.

Posibles motivos:

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

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

Síntomas:

  • No hay registros de la tarea en la interfaz de usuario de Airflow ni en la pestaña Registros de la sección Trabajadores.
  • Los registros del programador de la pestaña Registros de la sección Programador tienen el mensaje Pod creation failed with reason ... Failing task y el mensaje que indica que la tarea se ha marcado como UP_FOR_RETRY o FAILED.

Solución:

  • Consulta los registros del programador para ver la respuesta exacta y el motivo del fallo.

Posible motivo:

Si el mensaje de error es quantities must match the regular expression ..., lo más probable es que el problema se deba a un conjunto de valores personalizados para los recursos de k8s (solicitudes o límites) de los pods de los trabajadores de tareas.

Las tareas de KubernetesExecutor fallan sin registros cuando se ejecuta un gran número de tareas

Cuando tu entorno ejecuta un gran número de tareas con KubernetesExecutor o KubernetesPodOperator al mismo tiempo, Cloud Composer 3 no acepta nuevas tareas hasta que se completen 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 ejecutadas con KubernetesExecutor o KubernetesPodOperator fallan sin registros de tareas en la interfaz de usuario de Airflow o en la interfaz de usuario 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"

Posibles soluciones:

  • Ajusta la programación de la ejecución del DAG para que las tareas se distribuyan de forma más uniforme a lo largo del tiempo.
  • Reduce el número 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 el número limitado de ranuras en la interfaz de usuario de Airflow y, a continuación, asociar todas las tareas basadas en contenedores con este grupo. Recomendamos que el número de espacios del grupo sea de 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 las posibles soluciones, es posible que sigas experimentando una larga cola de tareas en el grupo de Airflow.

Siguientes pasos