Memecahkan masalah tugas KubernetesExecutor

Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1

Halaman ini menjelaskan cara memecahkan masalah terkait tugas yang dijalankan oleh KubernetesExecutor dan memberikan solusi untuk masalah umum.

Pendekatan umum untuk memecahkan masalah KubernetesExecutor

Untuk memecahkan masalah terkait tugas yang dijalankan dengan KubernetesExecutor, lakukan tindakan berikut dalam urutan yang tercantum:

  1. Periksa log tugas di UI DAG atau UI Airflow.

  2. Periksa log penjadwal di konsol Google Cloud:

    1. Di konsol Google Cloud, buka halaman Environments.

      Buka Lingkungan

    2. Di daftar lingkungan, klik nama lingkungan Anda. Halaman Environment details akan terbuka.

    3. Buka tab Logs dan periksa bagian Airflow logs > Scheduler.

    4. Untuk rentang waktu tertentu, periksa pod pekerja KubernetesExecutor yang menjalankan tugas. Jika pod tidak ada lagi, lewati langkah ini. Pod memiliki awalan airflow-k8s-worker dan DAG atau nama tugas dalam namanya. Cari masalah yang dilaporkan seperti tugas yang gagal atau tugas yang tidak dapat dijadwalkan.

Skenario pemecahan masalah umum untuk KubernetesExecutor

Bagian ini mencantumkan skenario pemecahan masalah umum yang mungkin Anda alami dengan KubernetesExecutor.

Tugas akan mencapai status Running, lalu gagal selama eksekusi.

Gejala:

  • Ada log untuk tugas di UI Airflow dan di tab Logs di bagian Workers.

Solusi: Log tugas menunjukkan masalahnya.

Instance tugas akan mencapai status queued, lalu ditandai sebagai UP_FOR_RETRY atau FAILED setelah beberapa waktu.

Gejala:

  • Tidak ada log untuk tugas di UI Airflow dan di tab Logs di bagian Workers.
  • Ada log di tab Logs di bagian Scheduler dengan pesan bahwa tugas ditandai sebagai UP_FOR_RETRY atau FAILED.

Solusi:

  • Periksa log penjadwal untuk mengetahui detail masalah.

Kemungkinan penyebab:

  • Jika log penjadwal berisi pesan Adopted tasks were still pending after..., diikuti dengan instance tugas yang dicetak, pastikan CeleryKubernetesExecutor diaktifkan di lingkungan Anda.

Instance tugas mencapai status Queued dan langsung ditandai sebagai UP_FOR_RETRY atau FAILED

Gejala:

  • Tidak ada log untuk tugas di UI Airflow dan di tab Logs di bagian Workers.
  • Log penjadwal di tab Logs di bagian Scheduler memiliki pesan Pod creation failed with reason ... Failing task, dan pesan bahwa tugas ditandai sebagai UP_FOR_RETRY atau FAILED.

Solusi:

  • Periksa log penjadwal untuk mengetahui respons dan alasan kegagalan yang tepat.

Kemungkinan penyebab:

Jika pesan errornya adalah quantities must match the regular expression ..., kemungkinan besar masalahnya disebabkan oleh nilai kustom yang ditetapkan untuk resource k8s (permintaan/batas) pod pekerja tugas.

Tugas KubernetesExecutor gagal tanpa log saat sejumlah besar tugas dijalankan

Saat lingkungan Anda menjalankan sejumlah besar tugas dengan KubernetesExecutor atau KubernetesPodOperator secara bersamaan, Cloud Composer 3 tidak akan menerima tugas baru hingga beberapa tugas yang ada selesai. Tugas tambahan ditandai sebagai gagal, dan Airflow akan mencobanya lagi nanti, jika Anda menentukan percobaan ulang untuk tugas (Airflow melakukannya secara default).

Gejala: Tugas yang dijalankan dengan KubernetesExecutor atau KubernetesPodOperator gagal tanpa log tugas di UI Airflow atau UI DAG. Di log penjadwal, Anda dapat melihat pesan error yang mirip dengan yang berikut ini:

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

Kemungkinan solusi:

  • Sesuaikan jadwal operasi DAG sehingga tugas didistribusikan secara lebih merata dari waktu ke waktu.
  • Kurangi jumlah tugas dengan menggabungkan tugas-tugas kecil.

Solusi:

Jika Anda ingin tugas tetap dalam status terjadwal hingga lingkungan dapat menjalankannya, Anda dapat menentukan kumpulan Airflow dengan jumlah slot terbatas di UI Airflow, lalu mengaitkan semua tugas berbasis penampung dengan kumpulan ini. Sebaiknya tetapkan jumlah slot dalam kumpulan ke 50 atau kurang. Tugas tambahan akan tetap dalam status terjadwal hingga kumpulan Airflow memiliki slot kosong untuk menjalankannya. Jika Anda menggunakan solusi ini tanpa menerapkan solusi yang mungkin, Anda masih dapat mengalami antrean tugas yang besar di kumpulan Airflow.

Langkah selanjutnya