Memecahkan masalah container kustom di Dataflow

Dokumen ini memberikan petunjuk untuk memecahkan masalah yang mungkin terjadi saat menggunakan container kustom dengan Dataflow. Contoh ini berfokus pada masalah terkait container atau pekerja yang tidak memulai. Jika pekerja Anda dapat memulai dan pekerjaan sedang berjalan, ikuti panduan umum untuk Memecahkan masalah pipeline.

Sebelum menghubungi dukungan, pastikan Anda telah mengesampingkan masalah yang terkait dengan image container:

  • Ikuti langkah-langkah untuk menguji image container secara lokal.
  • Telusuri error di Log tugas atau di Log Pekerja, dan bandingkan error yang ditemukan dengan panduan error umum.
  • Pastikan versi Apache Beam SDK dan versi bahasa yang Anda gunakan untuk meluncurkan pipeline cocok dengan versi SDK pada gambar penampung kustom Anda.
  • Jika menggunakan Java, pastikan versi utama Java yang Anda gunakan untuk meluncurkan pipeline cocok dengan versi yang diinstal di image container Anda.
  • Jika menggunakan Python, pastikan versi utama Python yang Anda gunakan untuk meluncurkan pipeline cocok dengan versi yang diinstal di image container Anda, dan image tersebut tidak memiliki dependensi yang bertentangan. Anda dapat menjalankan pip check untuk mengonfirmasi.

Menemukan log pekerja yang terkait dengan penampung kustom

Baik log pekerja Dataflow untuk pesan error terkait container dapat menggunakan Logs Explorer:

  1. Pilih nama log. Error startup container kustom kemungkinan besar terjadi pada salah satu dari hal berikut:

    • dataflow.googleapis.com/kubelet
    • dataflow.googleapis.com/docker
    • dataflow.googleapis.com/worker-startup
    • dataflow.googleapis.com/harness-startup
  2. Pilih resource Dataflow Step dan tentukan job_id.

Jika Anda melihat pesan log Error Syncing pod..., ikuti panduan error yang umum. Anda dapat membuat kueri untuk pesan log ini di log pekerja Dataflow menggunakan Logs Explorer dengan kueri berikut:

resource.type="dataflow_step" AND jsonPayload.message:("IMAGE_URI") AND severity="ERROR"

Masalah Umum

Berikut adalah beberapa masalah umum saat menggunakan penampung kustom.

Tugas mengalami error atau gagal karena image container tidak dapat diambil

Pekerja Dataflow harus dapat mengakses image container kustom. Jika pekerja tidak dapat mengambil image karena URL yang tidak valid, kredensial yang salah dikonfigurasi, atau akses jaringan tidak ada, pekerja akan gagal dimulai.

Untuk tugas batch di mana tidak ada tugas yang dimulai dan beberapa pekerja tidak dapat memulai secara berurutan, Dataflow akan menggagalkan tugas tersebut. Jika tidak, Dataflow akan mencatat error, tetapi tidak akan mengambil tindakan lebih lanjut untuk menghindari pemusnahan status tugas yang berjalan lama.

Untuk mengetahui informasi tentang cara memperbaiki masalah ini, lihat Permintaan pull gambar gagal dengan error di halaman Memecahkan masalah error Dataflow.

Pekerja tidak memulai atau pekerjaan tidak berjalan

Terkadang, jika penampung SDK gagal dimulai karena error, Dataflow tidak dapat menentukan apakah error tersebut permanen atau fatal. Dataflow kemudian terus mencoba memulai ulang pekerja.

Jika tidak ada error yang jelas, tetapi Anda melihat log level [topologymanager] RemoveContainer INFO di dataflow.googleapis.com/kubelet, log ini menunjukkan bahwa image container kustom keluar lebih awal dan tidak memulai proses SDK pekerja yang berjalan lama.

Jika pekerja berhasil dimulai, tetapi tidak ada pekerjaan yang terjadi, error mungkin mencegah dimulainya penampung SDK. Dalam hal ini, error berikut akan muncul di rekomendasi diagnostik:

Failed to start container

Selain itu, log pekerja tidak berisi baris seperti berikut:

Executing: python -m apache_beam.runners.worker.sdk_worker_main or Executing: java ... FnHarness

Temukan error tertentu di log Pekerja dan periksa panduan error umum.

Penyebab umum untuk masalah ini mencakup hal berikut:

  • Masalah dengan penginstalan paket, seperti error penginstalan pip karena masalah dependensi. Lihat Error saat menyinkronkan pod ... gagal ke "StartContainer".
  • Jika container yang digunakan tidak kompatibel dengan arsitektur CPU VM pekerja, Anda mungkin melihat error seperti exec format error. Untuk informasi selengkapnya, lihat Error saat menyinkronkan pod ... gagal ke "StartContainer".
  • Error dengan argumen perintah kustom atau dengan ENTRYPOINT yang ditetapkan di Dockerfile. Misalnya, ENTRYPOINT kustom tidak memulai skrip booting default /opt/apache/beam/boot atau tidak meneruskan argumen dengan tepat ke skrip ini. Untuk mengetahui informasi selengkapnya, lihat Mengubah titik entri container.
  • Error saat versi Apache Beam SDK tidak cocok antara lingkungan peluncuran dan lingkungan runtime. Dalam satu mode kegagalan, nilai default yang ditetapkan dalam opsi pipeline Apache Beam SDK mungkin menjadi tidak dikenal. Misalnya, Anda mungkin melihat error seperti sdk_worker_main.py: error: argument --flink_version: invalid choice: '1.16' (choose from '1.12', '1.13', '1.14', '1.15') di log pekerja. Untuk memperbaiki, instal versi Apache Beam SDK yang sama di image container seperti yang Anda gunakan untuk meluncurkan pipeline. Untuk mengetahui informasi selengkapnya, lihat Menjadikan lingkungan peluncuran kompatibel dengan lingkungan runtime.