Memecahkan masalah penampung kustom di Dataflow

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

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

  • Ikuti langkah-langkah untuk menguji image container Anda secara lokal.
  • Cari 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 image container 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-minor 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 container kustom

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

  1. Pilih nama log. Error startup container kustom kemungkinan besar berada di salah satu 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 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 container kustom.

Tugas memiliki error atau gagal karena image container tidak dapat ditarik

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

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

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

Pekerja tidak memulai atau pekerjaan tidak berjalan

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

Jika tidak ada error yang jelas, tetapi Anda melihat log tingkat INFO [topologymanager] RemoveContainer 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 telah berhasil dimulai, tetapi tidak ada pekerjaan yang terjadi, error mungkin mencegah container SDK dimulai. Dalam hal ini, error berikut akan muncul dalam 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 masalah ini mencakup hal berikut:

  • Masalah dengan penginstalan paket, seperti error penginstalan pip karena masalah dependensi. Lihat Error syncing pod ... failed to "StartContainer".
  • Jika container yang digunakan tidak kompatibel dengan arsitektur CPU VM pekerja, Anda mungkin melihat error seperti exec format error. Untuk mengetahui informasi selengkapnya, lihat Error syncing pod ... failed to "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 tidak dikenali. 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 mengatasinya, instal versi Apache Beam SDK yang sama di image container seperti yang Anda gunakan untuk meluncurkan pipeline. Untuk mengetahui informasi selengkapnya, lihat Membuat lingkungan peluncuran kompatibel dengan lingkungan runtime.

Menjalankan sebagai pengguna non-root tidak didukung

Secara umum, Anda tidak dapat menjalankan image container SDK kustom atau image container template kustom untuk Template Fleksibel sebagai pengguna non-root. Jika Anda mencoba menjalankan container sebagai pengguna non-root, pipeline akan gagal.

Untuk mengetahui informasi selengkapnya, lihat Lingkungan runtime, atau hubungi tim akun Anda.