Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1
Auf dieser Seite wird beschrieben, wie Sie Probleme mit von KubernetesExecutor ausgeführten Aufgaben beheben. Außerdem finden Sie Lösungen für häufige Probleme.
Allgemeiner Ansatz zur Fehlerbehebung bei KubernetesExecutor
Führen Sie die folgenden Schritte in der angegebenen Reihenfolge aus, um Probleme mit einer Aufgabe zu beheben, die mit KubernetesExecutor ausgeführt wird:
Prüfen Sie die Logs der Aufgabe in der DAG-Benutzeroberfläche oder in der Airflow-Benutzeroberfläche.
Scheduler-Logs in der Google Cloud Console prüfen:
Rufen Sie in der Google Cloud Console die Seite Umgebungen auf.
Klicken Sie in der Liste der Umgebungen auf den Namen Ihrer Umgebung. Die Seite Umgebungsdetails wird geöffnet.
Rufen Sie den Tab Protokolle auf und prüfen Sie den Bereich Airflow-Protokolle > Planer.
Prüfen Sie für einen bestimmten Zeitraum den KubernetesExecutor-Worker-Pod, in dem die Aufgabe ausgeführt wurde. Wenn der Pod nicht mehr vorhanden ist, überspringen Sie diesen Schritt. Der Pod hat das Präfix
airflow-k8s-worker
und einen DAG- oder Aufgabennamen. Suchen Sie nach gemeldeten Problemen, z. B. einer fehlgeschlagenen Aufgabe oder einer nicht planbaren Aufgabe.
Häufige Fehlerbehebungsszenarien für KubernetesExecutor
In diesem Abschnitt werden häufige Szenarien zur Fehlerbehebung aufgeführt, die bei KubernetesExecutor auftreten können.
Die Aufgabe erreicht den Status Running
und schlägt dann während der Ausführung fehl.
Symptome:
- Es gibt Logs für die Aufgabe in der Airflow-Benutzeroberfläche und auf dem Tab Logs im Bereich Worker.
Lösung: Das Problem wird in den Aufgabenprotokollen angezeigt.
Die Aufgabeninstanz erhält den Status queued
und wird nach einiger Zeit als UP_FOR_RETRY
oder FAILED
markiert.
Symptome:
- In der Airflow-Benutzeroberfläche und auf dem Tab Logs im Bereich Worker sind keine Logs für die Aufgabe vorhanden.
- Auf dem Tab Protokolle im Bereich Planer sind Protokolle mit der Meldung zu sehen, dass die Aufgabe als
UP_FOR_RETRY
oderFAILED
gekennzeichnet ist.
Lösung:
- Prüfen Sie die Scheduler-Protokolle auf Details zum Problem.
Mögliche Ursachen:
- Wenn die Scheduler-Protokolle die Meldung
Adopted tasks were still pending after...
gefolgt von der ausgedruckten Aufgabeninstanz enthalten, prüfen Sie, ob CeleryKubernetesExecutor in Ihrer Umgebung aktiviert ist.
Die Aufgabeninstanz erreicht den Status Queued
und wird sofort als UP_FOR_RETRY
oder FAILED
gekennzeichnet.
Symptome:
- In der Airflow-Benutzeroberfläche und auf dem Tab Logs im Bereich Worker sind keine Logs für die Aufgabe vorhanden.
- Die Logs des Schedulers auf dem Tab Protokolle im Bereich Scheduler enthalten die Nachricht
Pod creation failed with reason ... Failing task
und die Nachricht, dass die Aufgabe alsUP_FOR_RETRY
oderFAILED
gekennzeichnet ist.
Lösung:
- Prüfen Sie die Scheduler-Logs auf die genaue Antwort und den Grund für den Fehler.
Mögliche Ursache:
Wenn die Fehlermeldung quantities must match the regular expression ...
lautet, wird das Problem höchstwahrscheinlich durch benutzerdefinierte Werte verursacht, die für K8s-Ressourcen (Anfragen/Limits) von Task-Worker-Pods festgelegt wurden.
KubernetesExecutor-Aufgaben schlagen bei Ausführung einer großen Anzahl von Aufgaben ohne Protokolle fehl
Wenn in Ihrer Umgebung gleichzeitig eine große Anzahl von Aufgaben mit KubernetesExecutor oder KubernetesPodOperator ausgeführt wird, akzeptiert Cloud Composer 3 erst dann neue Aufgaben, wenn einige der vorhandenen Aufgaben abgeschlossen sind. Zusätzliche Aufgaben werden als fehlgeschlagen markiert und von Airflow später noch einmal ausgeführt, wenn Sie Wiederholungen für die Aufgaben definieren. Airflow führt dies standardmäßig aus.
Symptom: Aufgaben, die mit KubernetesExecutor oder KubernetesPodOperator ausgeführt werden, schlagen fehl, ohne dass Aufgabenprotokolle in der Airflow-UI oder DAG-UI angezeigt werden. In den Logs des Schedulers werden möglicherweise Fehlermeldungen wie die folgende angezeigt:
pods \"airflow-k8s-worker-*\" is forbidden: exceeded quota: k8s-resources-quota,
requested: pods=1, used: pods=*, limited: pods=*","reason":"Forbidden"
Mögliche Lösungen:
- Passen Sie den Zeitplan für die DAG-Ausführung so an, dass die Aufgaben gleichmäßiger über die Zeit verteilt werden.
- Reduzieren Sie die Anzahl der Aufgaben, indem Sie kleine Aufgaben zusammenfassen.
Workaround:
Wenn Aufgaben im geplanten Status bleiben sollen, bis sie in Ihrer Umgebung ausgeführt werden können, können Sie einen Airflow-Pool mit einer begrenzten Anzahl von Slots in der Airflow-Benutzeroberfläche definieren und dann alle containerbasierten Aufgaben mit diesem Pool verknüpfen. Wir empfehlen, die Anzahl der Slots im Pool auf maximal 50 festzulegen. Zusätzliche Aufgaben bleiben im Status „Geplant“, bis im Airflow-Pool ein freier Slot für die Ausführung verfügbar ist. Wenn Sie diese Umgehung verwenden, ohne mögliche Lösungen anzuwenden, kann es trotzdem zu einer großen Aufgabenwarteschlange im Airflow-Pool kommen.
Nächste Schritte
- CeleryKubernetesExecutor verwenden
- KubernetesPodOperator verwenden
- Fehlerbehebung bei der Planung
- Fehlerbehebung bei DAGs