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 solução de problemas do KubernetesExecutor
Para solucionar problemas com uma tarefa executada com KubernetesExecutor, faça as seguintes ações na ordem listada:
Verifique os registros da tarefa na interface do DAG ou na interface do Airflow.
Verifique os registros do programador no console do Google Cloud :
No console Google Cloud , acesse a página Ambientes.
Na lista de ambientes, clique no nome do seu ambiente. A página Detalhes do ambiente é aberta.
Acesse a guia Registros e verifique a seção Registros do Airflow > Programador.
Para um determinado período, inspecione o pod de worker do KubernetesExecutor que estava executando a tarefa. Se o pod não existir mais, pule esta etapa. O pod tem o prefixo
airflow-k8s-workere um DAG ou um nome de tarefa no nome. Procure problemas informados, como uma tarefa com falha ou que não pode ser programada.
Cenários comuns de solução de problemas para o KubernetesExecutor
Esta seção lista cenários comuns de solução de problemas que você pode encontrar com o KubernetesExecutor.
A tarefa chega ao estado Running e falha durante a execução.
Sintomas:
- Há registros da tarefa na interface do Airflow e na guia Registros da seção Workers.
Solução: os registros de tarefas indicam o problema.
A instância de tarefa entra no estado queued e, depois de algum tempo, é marcada como UP_FOR_RETRY ou FAILED.
Sintomas:
- Não há registros para a tarefa na interface do Airflow e na guia Registros da seção Workers.
- Há registros na guia Registros da seção Scheduler com uma mensagem informando que a tarefa está marcada como
UP_FOR_RETRYouFAILED.
Solução:
- Inspecione os registros do programador para ver detalhes do problema.
Possíveis causas:
- Se os registros do programador contiverem a mensagem
Adopted tasks were still pending after...seguida pela instância de tarefa impressa, verifique se o CeleryKubernetesExecutor está ativado no seu ambiente.
A instância de tarefa entra no estado Queued e é marcada imediatamente como UP_FOR_RETRY ou FAILED.
Sintomas:
- Não há registros da tarefa na interface do Airflow e na guia Registros da seção Workers.
- Os registros do programador na guia Registros da seção Programador têm a mensagem
Pod creation failed with reason ... Failing taske a mensagem de que a tarefa está marcada comoUP_FOR_RETRYouFAILED.
Solução:
- Verifique os registros do programador para conferir a resposta exata e o motivo da falha.
Possível motivo:
Se a mensagem de erro for quantities must match the regular expression ...,
o problema provavelmente será causado por um conjunto de valores personalizados para recursos
do k8s (solicitações/limites) de pods de worker de tarefas.
As tarefas do KubernetesExecutor falham sem registros quando um grande número de tarefas é executado
Quando o 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 atuais sejam concluídas. As tarefas extras são marcadas como com falha, e o Airflow tenta novamente mais tarde, se você definir novas tentativas para as tarefas (o Airflow faz isso por padrão).
Sintoma:as tarefas executadas com KubernetesExecutor ou KubernetesPodOperator falham sem registros de tarefas na interface do Airflow ou na interface do DAG. Nos registros do programador, você pode ver mensagens de erro semelhantes a estas:
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 maneira mais uniforme ao longo do tempo.
- Reduza o número de tarefas consolidando as pequenas.
Alternativa:
Se você preferir que as tarefas permaneçam no estado programado até que o ambiente possa executá-las, defina um pool do Airflow com o número limitado de slots na interface do Airflow e associe todas as tarefas baseadas em contêineres a esse pool. Recomendamos definir o número de slots no pool como 50 ou menos. As tarefas extras vão permanecer no estado programado até que o pool do Airflow tenha um slot livre para executá-las. Se você usar essa solução alternativa sem aplicar as soluções possíveis, ainda poderá ter uma grande fila de tarefas no pool do Airflow.
A seguir
- Usar CeleryKubernetesExecutor
- Usar o KubernetesPodOperator
- Solução de problemas de programação
- Como resolver problemas de DAGs