Dokumen ini memberikan petunjuk untuk memecahkan masalah yang mungkin terjadi saat menggunakan penampung kustom dengan Dataflow. Codelab ini berfokus pada masalah terkait penampung atau pekerja yang tidak dimulai. Jika pekerja Anda dapat memulai dan pekerjaan berjalan, ikuti panduan umum untuk Memecahkan masalah pipeline.
Sebelum menghubungi dukungan, pastikan Anda telah mengesampingkan masalah yang terkait dengan image container Anda:
- 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 image penampung kustom Anda.
- Jika menggunakan Java, pastikan versi utama Java yang Anda gunakan untuk meluncurkan pipeline cocok dengan versi yang diinstal di image penampung Anda.
- Jika menggunakan Python, pastikan versi utama-minor Python yang Anda gunakan untuk
meluncurkan pipeline cocok dengan versi yang diinstal di image container,
dan image tidak memiliki dependensi yang bertentangan. Anda dapat menjalankan
pip check
untuk mengonfirmasi.
Menemukan log pekerja yang terkait dengan penampung kustom
Temukan log pekerja Dataflow untuk pesan error terkait penampung dapat menggunakan Logs Explorer:
Pilih nama log. Error startup penampung kustom kemungkinan besar berada di salah satu dari hal berikut:
dataflow.googleapis.com/kubelet
dataflow.googleapis.com/docker
dataflow.googleapis.com/worker-startup
dataflow.googleapis.com/harness-startup
Pilih resource
Dataflow Step
dan tentukanjob_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 penampung kustom.
Tugas mengalami error atau gagal karena image penampung tidak dapat diambil
Pekerja Dataflow harus dapat mengakses image container kustom. Jika pekerja tidak dapat mengambil gambar karena URL tidak valid, kredensial yang salah dikonfigurasi, atau akses jaringan tidak ada, pekerja akan gagal dimulai.
Untuk tugas batch yang tidak memiliki pekerjaan yang dimulai dan beberapa pekerja tidak dapat dimulai secara berurutan, Dataflow akan gagal menjalankan tugas. Jika tidak, Dataflow akan mencatat error ke dalam log, 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 penampung 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 level [topologymanager] RemoveContainer
INFO
di dataflow.googleapis.com/kubelet
, log ini menunjukkan bahwa
image penampung 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 penampung SDK dimulai. 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 masalah ini meliputi:
- Masalah terkait penginstalan paket, seperti error penginstalan
pip
karena masalah dependensi. Lihat Error syncing pod ... failed to "StartContainer". - Jika penampung 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 dalam Dockerfile. Misalnya,ENTRYPOINT
kustom tidak memulai skrip booting default/opt/apache/beam/boot
atau tidak meneruskan argumen dengan benar ke skrip ini. Untuk informasi selengkapnya, lihat Mengubah titik entri penampung. - Error saat versi Apache Beam SDK tidak cocok antara lingkungan
peluncuran dan lingkungan runtime. Dalam satu mode kegagalan, nilai default
yang ditetapkan di 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')
dalam log pekerja. Untuk mengatasinya, instal Apache Beam SDK versi yang sama di image penampung seperti yang Anda gunakan untuk meluncurkan pipeline. Untuk informasi selengkapnya, lihat Membuat lingkungan peluncuran kompatibel dengan lingkungan runtime.