Resolução de problemas de tarefas do KubernetesExecutor

Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1

Esta página descreve como resolver problemas com tarefas executadas pelo KubernetesExecutor e oferece soluções para problemas comuns.

Abordagem geral para a resolução de problemas do KubernetesExecutor

Para resolver problemas com uma tarefa executada com o KubernetesExecutor, faça o seguinte pela ordem indicada:

  1. Verifique os registos da tarefa na IU do DAG ou na IU do Airflow.

  2. Verifique os registos do agendador na Google Cloud consola:

    1. Na Google Cloud consola, aceda à página Ambientes.

      Aceder a Ambientes

    2. Na lista de ambientes, clique no nome do seu ambiente. É apresentada a página Detalhes do ambiente.

    3. Aceda ao separador Registos e verifique os Registos do Airflow > secção Agendador.

    4. Para um determinado intervalo de tempo, inspecione o pod de trabalho do KubernetesExecutor que estava a executar a tarefa. Se o pod já não existir, ignore este passo. O pod tem o prefixo airflow-k8s-worker e um DAG ou um nome de tarefa no respetivo nome. Procure problemas comunicados, como uma tarefa com falha ou uma tarefa que não pode ser agendada.

Cenários comuns de resolução de problemas para o KubernetesExecutor

Esta secção apresenta cenários de resolução de problemas comuns que pode encontrar com o KubernetesExecutor.

A tarefa atinge o estado Running e, em seguida, falha durante a execução.

Sintomas:

  • Existem registos da tarefa na IU do Airflow e no separador Registos na secção Trabalhadores.

Solução: os registos de tarefas indicam o problema.

A instância da tarefa atinge o estado queued e, em seguida, é marcada como UP_FOR_RETRY ou FAILED após algum tempo.

Sintomas:

  • Não existem registos para a tarefa na IU do Airflow e no separador Registos na secção Trabalhadores.
  • Existem registos no separador Registos na secção Agendador com uma mensagem a indicar que a tarefa está marcada como UP_FOR_RETRY ou FAILED.

Solução:

  • Inspeccione os registos do programador para ver detalhes do problema.

Causas possíveis:

  • Se os registos do agendador contiverem a mensagem Adopted tasks were still pending after... seguida da instância da tarefa impressa, verifique se o CeleryKubernetesExecutor está ativado no seu ambiente.

A instância da tarefa atinge o estado Queued e é imediatamente marcada como UP_FOR_RETRY ou FAILED

Sintomas:

  • Não existem registos para a tarefa na IU do Airflow e no separador Registos na secção Trabalhadores.
  • O programador inicia sessão no separador Registos na secção Programador com a mensagem Pod creation failed with reason ... Failing task e a mensagem de que a tarefa está marcada como UP_FOR_RETRY ou FAILED.

Solução:

  • Verifique os registos do programador para ver a resposta exata e o motivo da falha.

Motivo possível:

Se a mensagem de erro for quantities must match the regular expression ..., o problema é provavelmente causado por valores personalizados definidos para recursos k8s (pedidos/limites) de pods de trabalhadores de tarefas.

As tarefas do KubernetesExecutor falham sem registos quando é executado um grande número de tarefas

Quando o seu ambiente executa um grande número de tarefas com KubernetesExecutor ou KubernetesPodOperator ao mesmo tempo, o Cloud Composer 3 não aceita novas tarefas até que algumas das tarefas existentes estejam concluídas. As tarefas adicionais são marcadas como falhadas e o Airflow repete-as mais tarde, se definir repetições para as tarefas (o Airflow faz isto por predefinição).

Sintoma: as tarefas executadas com KubernetesExecutor ou KubernetesPodOperator falham sem registos de tarefas na IU do Airflow ou na IU do DAG. Nos registos do agendador, pode ver mensagens de erro semelhantes às seguintes:

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

Possíveis soluções:

  • Ajuste a programação de execução do DAG para que as tarefas sejam distribuídas de forma mais uniforme ao longo do tempo.
  • Reduza o número de tarefas consolidando tarefas pequenas.

Solução alternativa:

Se preferir que as tarefas permaneçam no estado agendado até que o seu ambiente as possa executar, pode definir um conjunto do Airflow com o número limitado de vagas na IU do Airflow e, em seguida, associar todas as tarefas baseadas em contentores a este conjunto. Recomendamos que defina o número de vagas no conjunto como 50 ou menos. As tarefas adicionais permanecem no estado agendado até que o conjunto do Airflow tenha uma vaga livre para as executar. Se usar esta solução alternativa sem aplicar possíveis soluções, ainda pode ter uma grande fila de tarefas no conjunto do Airflow.

O que se segue?