Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1
Auf dieser Seite wird beschrieben, wie Sie Probleme mit Aufgaben beheben, die von KubernetesExecutor ausgeführt werden, und es werden Lösungen für häufige Probleme bereitgestellt.
Allgemeiner Ansatz zur Fehlerbehebung bei KubernetesExecutor
Wenn Sie Probleme mit einer Aufgabe beheben möchten, die mit KubernetesExecutor ausgeführt wird, führen Sie die folgenden Aktionen in der angegebenen Reihenfolge aus:
Sehen Sie sich die Logs der Aufgabe in der DAG-UI oder der Airflow-UI an.
Prüfen Sie die Scheduler-Logs in der Google Cloud -Konsole:
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 Logs auf und sehen Sie sich den Abschnitt Airflow-Logs > Scheduler an.
Sehen Sie sich für einen bestimmten Zeitraum den KubernetesExecutor-Worker-Pod an, auf 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 in seinem Namen. Suchen Sie nach gemeldeten Problemen wie einer fehlgeschlagenen Aufgabe oder einer Aufgabe, die nicht geplant werden kann.
Häufige Fehlerbehebungsszenarien für KubernetesExecutor
In diesem Abschnitt werden häufige Szenarien zur Fehlerbehebung aufgeführt, die bei der Verwendung von 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-UI und auf dem Tab Logs im Abschnitt Worker.
Lösung: Die Aufgabenlogs weisen auf das Problem hin.
Die Aufgabeninstanz erreicht den Status queued
und wird nach einiger Zeit als UP_FOR_RETRY
oder FAILED
markiert.
Symptome:
- Es gibt keine Logs für die Aufgabe in der Airflow-UI und auf dem Tab Logs im Bereich Worker.
- Auf dem Tab Logs im Bereich Scheduler sind Logs mit einer Meldung vorhanden, dass die Aufgabe als
UP_FOR_RETRY
oderFAILED
gekennzeichnet ist.
Lösung:
- Prüfen Sie die Planerlogs auf Details zum Problem.
Mögliche Ursachen:
- Wenn die Scheduler-Logs die Meldung
Adopted tasks were still pending after...
gefolgt von der ausgegebenen 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-UI und auf dem Tab Logs im Bereich Worker sind keine Logs für die Aufgabe vorhanden.
- Die Scheduler-Logs auf dem Tab Logs im Bereich Scheduler enthalten die Meldung
Pod creation failed with reason ... Failing task
und die Meldung, dass die Aufgabe alsUP_FOR_RETRY
oderFAILED
gekennzeichnet ist.
Lösung:
- Sehen Sie in den Scheduler-Logs nach, um die genaue Antwort und den Grund für den Fehler zu ermitteln.
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 die K8s-Ressourcen (Anforderungen/Limits) von Task-Worker-Pods festgelegt wurden.
KubernetesExecutor-Aufgaben schlagen ohne Logs fehl, wenn eine große Anzahl von Aufgaben ausgeführt wird
Wenn in Ihrer Umgebung eine große Anzahl von Aufgaben gleichzeitig mit KubernetesExecutor oder KubernetesPodOperator ausgeführt wird, akzeptiert Cloud Composer 3 keine neuen Aufgaben, bis einige der vorhandenen Aufgaben abgeschlossen sind. Zusätzliche Aufgaben werden als fehlgeschlagen markiert und Airflow wiederholt sie später, wenn Sie Wiederholungen für die Aufgaben definieren (Airflow führt dies standardmäßig aus).
Symptom:Mit KubernetesExecutor oder KubernetesPodOperator ausgeführte Aufgaben schlagen fehl, ohne dass in der Airflow-UI oder DAG-UI Aufgabenlogs angezeigt werden. In den Logs des Schedulers werden möglicherweise Fehlermeldungen wie die folgenden 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 DAG-Ausführungszeitplan 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 Sie möchten, dass Aufgaben im geplanten Status bleiben, bis sie in Ihrer Umgebung ausgeführt werden können, können Sie in der Airflow-UI einen Airflow-Pool mit der begrenzten Anzahl von Slots 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 diesen Workaround verwenden, ohne mögliche Lösungen anzuwenden, kann es weiterhin zu einer großen Warteschlange von Aufgaben im Airflow-Pool kommen.
Nächste Schritte
- CeleryKubernetesExecutor verwenden
- KubernetesPodOperator verwenden
- Fehlerbehebung bei der Planung
- Fehlerbehebung bei DAGs