במסמך הזה מפורטות הוראות לפתרון בעיות שעלולות להתרחש כשמשתמשים בקונטיינרים בהתאמה אישית עם Dataflow. הוא מתמקד בבעיות שקשורות למאגרי מידע או לעובדים שלא מופעלים. אם העובדים שלכם מצליחים להתחיל לעבוד והעבודה מתקדמת, כדאי לפעול לפי ההנחיות הכלליות לפתרון בעיות בצינור העיבוד.
לפני שפונים לתמיכה, חשוב לוודא שאין בעיות שקשורות לקובץ אימג' של קונטיינר:
- פועלים לפי השלבים כדי לבדוק את קובץ האימג' של הקונטיינר באופן מקומי.
- מחפשים שגיאות ביומני המשימות או ביומני העובדים, ומשווים את השגיאות שנמצאו להנחיות בנושא שגיאות נפוצות.
- צריך לוודא שגרסת ה-SDK של Apache Beam וגרסת השפה שבהן אתם משתמשים כדי להפעיל את צינור העברת הנתונים תואמות לגרסת ה-SDK בתמונת מאגר ה-Docker המותאם אישית.
- אם משתמשים ב-Java, צריך לוודא שהגרסה הראשית של Java שבה משתמשים כדי להפעיל את צינור עיבוד הנתונים זהה לגרסה שמותקנת בקובץ האימג' של הקונטיינר.
- אם משתמשים ב-Python, צריך לוודא שגרסת ה-Python major-minor שבה משתמשים כדי להפעיל את צינור העיבוד תואמת לגרסה שמותקנת בקובץ האימג' של הקונטיינר, ושלתמונה אין תלות שגורמת להתנגשות. אפשר להריץ את הפקודה
pip checkכדי לאשר.
איך מוצאים יומני עובדים שקשורים למאגרי תגים בהתאמה אישית
אפשר למצוא את יומני העובדים של Dataflow כדי לראות הודעות שגיאה שקשורות לקונטיינר באמצעות Logs Explorer:
בוחרים שמות של יומנים. סביר להניח ששגיאות בהפעלת מאגר מותאם אישית יופיעו באחד מהמקומות הבאים:
dataflow.googleapis.com/kubeletdataflow.googleapis.com/dockerdataflow.googleapis.com/worker-startupdataflow.googleapis.com/harness-startup
בוחרים את המשאב
Dataflow Stepומציינים אתjob_id.
אם מופיעות Error Syncing pod... הודעות יומן,
פועלים לפי ההנחיות לפתרון שגיאות.
אפשר לשלוח שאילתה לגבי הודעות היומן האלה ביומני העובדים של Dataflow באמצעות Logs Explorer עם השאילתה הבאה:
resource.type="dataflow_step" AND jsonPayload.message:("IMAGE_URI") AND severity="ERROR"
בעיות נפוצות
ריכזנו כאן כמה בעיות נפוצות שקשורות לשימוש במאגרי תגים בהתאמה אישית.
יש שגיאות בעבודה או שהיא נכשלה כי אי אפשר למשוך את קובץ האימג' של הקונטיינר
לעובדי Dataflow צריכה להיות גישה לתמונות קונטיינר מותאמות אישית. אם העובד לא מצליח לשלוף את התמונה בגלל כתובות URL לא תקינות, פרטי כניסה לא מוגדרים או חוסר גישה לרשת, העובד לא יופעל.
במשימות באצווה שבהן לא התחילה עבודה וכמה עובדים לא מצליחים להתחיל ברצף, המשימה נכשלת ב-Dataflow. אחרת, Dataflow מתעד שגיאות ביומנים אבל לא מבצע פעולות נוספות כדי למנוע הרס של מצב עבודה לטווח ארוך.
מידע על פתרון הבעיה הזו מופיע במאמר בקשת משיכת תמונה נכשלה עם שגיאה בדף פתרון בעיות ב-Dataflow.
העובדים לא מתחילים לעבוד או שהעבודה לא מתקדמת
לפעמים, אם קונטיינר ה-SDK לא מופעל בגלל שגיאה, Dataflow לא יכול לקבוע אם השגיאה היא קבועה או קריטית. לאחר מכן, Dataflow מנסה להפעיל מחדש את העובד באופן רציף.
אם לא מופיעות שגיאות ברורות אבל מופיעים יומנים ברמה [topologymanager] RemoveContainer
INFO ב-dataflow.googleapis.com/kubelet, היומנים האלה מציינים שקובץ אימג' של קונטיינר המותאם אישית יוצא מוקדם ולא מתחיל את תהליך ה-SDK של העובד שפועל לאורך זמן.
אם העובדים התחילו לפעול בהצלחה אבל לא מתבצעת עבודה, יכול להיות ששגיאה מונעת את ההפעלה של מאגר ה-SDK. במקרה כזה, השגיאה הבאה מופיעה בהמלצות לאבחון:
Failed to start container
בנוסף, יומני העובדים לא מכילים שורות כמו אלה:
Executing: python -m apache_beam.runners.worker.sdk_worker_main or Executing: java ... FnHarness
אפשר למצוא שגיאות ספציפיות ביומני העובדים ולבדוק את ההנחיות לפתרון שגיאות נפוצות.
הסיבות הנפוצות לבעיות האלה הן:
- בעיות בהתקנת חבילות, כמו
pipשגיאות בהתקנה בגלל בעיות בתלות. אפשר לעיין בשגיאה בסינכרון של הפוד ... הפעולה 'StartContainer' נכשלה. - אם הקונטיינר שבו נעשה שימוש לא תואם לארכיטקטורת ה-CPU של המכונה הווירטואלית של העובד, יכול להיות שיופיעו שגיאות כמו
exec format error. מידע נוסף זמין במאמר בנושא שגיאה בסנכרון של pod ... נכשל ב-StartContainer. - שגיאות בארגומנטים של הפקודה המותאמת אישית או ב-
ENTRYPOINTשהוגדר ב-Dockerfile. לדוגמה, סקריפט אתחול מותאם אישיתENTRYPOINTלא מפעיל את סקריפט האתחול/opt/apache/beam/bootשמוגדר כברירת מחדל, או לא מעביר ארגומנטים לסקריפט הזה בצורה מתאימה. מידע נוסף זמין במאמר בנושא שינוי נקודת הכניסה של מאגר התגים. - שגיאות כשגרסת Apache Beam SDK לא תואמת בין סביבת ההפעלה לבין סביבת זמן הריצה. במצב כשל אחד, יכול להיות שהערכים שמוגדרים באפשרויות של צינור ה-SDK של Apache Beam לא יזוהו.
לדוגמה, יכול להיות שתראו שגיאות כמו
sdk_worker_main.py: error: argument --flink_version: invalid choice: '1.16' (choose from '1.12', '1.13', '1.14', '1.15')ביומני העובדים. כדי לפתור את הבעיה, צריך להתקין את אותה גרסה של Apache Beam SDK בקובץ האימג' של הקונטיינר שבה השתמשתם כדי להפעיל את צינור הנתונים. מידע נוסף זמין במאמר בנושא התאמת סביבת ההשקה לסביבת זמן הריצה.
אי אפשר להגדיר את הקונטיינר להפעלה כמשתמש בהתאמה אישית
המשתמש להרצת הקונטיינר נבחר על ידי שירות Dataflow. מידע נוסף זמין במאמר בנושא סביבת זמן ריצה.