Fehlerbehebung bei KubernetesExecutor-Aufgaben

Managed Airflow (Gen 3) | Managed Airflow (Gen 2) | Managed Airflow (Legacy Gen 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

So beheben Sie Probleme mit einer Aufgabe, die mit KubernetesExecutor ausgeführt wird:

  1. Prüfen Sie die Logs der Aufgabe in der DAG-UI oder Airflow-UI.

  2. Prüfen Sie die Planerlogs in der Google Cloud console:

    1. Rufen Sie in der Google Cloud console die Seite Umgebungen auf.

      Zu Umgebungen

    2. Klicken Sie in der Liste der Umgebungen auf den Namen Ihrer Umgebung. Die Seite Umgebungsdetails wird geöffnet.

    3. Rufen Sie den Logs Tab auf und prüfen Sie den Bereich Airflow-Logs > Planer.

    4. Prüfen Sie für einen bestimmten Zeitraum den KubernetesExecutor-Worker-Pod, der die Aufgabe ausgeführt hat. 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 im Namen. Suchen Sie nach gemeldeten Problemen wie einer fehlgeschlagenen Aufgabe oder einer Aufgabe, die nicht geplant werden kann.

Häufige Szenarien zur Fehlerbehebung bei KubernetesExecutor

In diesem Abschnitt werden häufige Szenarien zur Fehlerbehebung beschrieben, die bei KubernetesExecutor auftreten können.

Die Aufgabe wechselt in den Status Running und schlägt dann während der Ausführung fehl.

Symptome:

  • In der Airflow-UI und auf dem Tab Logs im Bereich Worker sind Logs für die Aufgabe vorhanden.

Lösung: Die Aufgabenlogs geben das Problem an.

Die Aufgabeninstanz wechselt in den Status queued und wird nach einiger Zeit als UP_FOR_RETRY oder FAILED markiert.

Symptome:

  • In der Airflow-UI und auf dem Tab Logs im Bereich Worker sind keine Logs für die Aufgabe vorhanden.
  • Auf dem Tab Logs im Bereich Planer sind Logs mit einer Meldung vorhanden, dass die Aufgabe als UP_FOR_RETRY oder FAILED markiert wurde.

Lösung:

  • Prüfen Sie die Planerlogs auf Details zum Problem.

Mögliche Ursachen:

  • Wenn die Planerlogs die Meldung Adopted tasks were still pending after... gefolgt von der gedruckten Aufgabeninstanz enthalten, prüfen Sie, ob CeleryKubernetesExecutor in Ihrer Umgebung aktiviert ist.

Die Aufgabeninstanz wechselt in den Status Queued und wird sofort als UP_FOR_RETRY oder FAILED markiert.

Symptome:

  • In der Airflow-UI und auf dem Tab Logs im Bereich Worker sind keine Logs für die Aufgabe vorhanden.
  • Die Planerlogs auf dem Tab Logs im Bereich Planer enthalten die Meldung Pod creation failed with reason ... Failing task und die Meldung, dass die Aufgabe als UP_FOR_RETRY oder FAILED markiert wurde.

Lösung:

  • Prüfen Sie die Planerlogs 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 die Kubernetes-Ressourcen (Anfragen/Limits) der Aufgaben-Worker-Pods festgelegt wurden.

KubernetesExecutor-Aufgaben schlagen ohne Logs fehl, wenn eine große Anzahl von Aufgaben ausgeführt wird

Wenn in Ihrer Umgebung gleichzeitig eine große Anzahl von Aufgaben mit KubernetesExecutor oder KubernetesPodOperator ausgeführt wird, akzeptiert Managed Airflow (Gen 3) keine neuen Aufgaben, bis einige der vorhandenen Aufgaben abgeschlossen sind. Zusätzliche Aufgaben werden als fehlgeschlagen markiert und später von Airflow wiederholt, wenn Sie Wiederholungen für die Aufgaben definieren (dies ist in Airflow standardmäßig der Fall).

Symptom:Aufgaben, die mit KubernetesExecutor oder KubernetesPodOperator ausgeführt werden, schlagen ohne Aufgabenlogs in der Airflow-UI oder DAG-UI fehl. In den Planerlogs sehen Sie möglicherweise Fehlermeldungen wie die folgenden:

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 Aufgaben im Status „Geplant“ bleiben sollen, bis sie in Ihrer Umgebung ausgeführt werden können, können Sie in der Airflow-UI einen Airflow-Pool mit einer begrenzten Anzahl von Slots definieren und dann alle containerbasierten Aufgaben diesem Pool zuordnen. Wir empfehlen, die Anzahl der Slots im Pool auf maximal 50 festzulegen. Zusätzliche Aufgaben bleiben im Status „Geplant“, bis im Airflow-Pool ein kostenloser Slot für die Ausführung verfügbar ist. Wenn Sie diesen Workaround verwenden, ohne mögliche Lösungen anzuwenden, kann es trotzdem zu einer großen Warteschlange von Aufgaben im Airflow-Pool kommen.

Nächste Schritte