פתרון בעיות בקונטיינרים מותאמים אישית ב-Dataflow

במסמך הזה מפורטות הוראות לפתרון בעיות שעלולות להתרחש כשמשתמשים בקונטיינרים בהתאמה אישית עם Dataflow. הוא מתמקד בבעיות שקשורות למאגרי מידע או לעובדים שלא מופעלים. אם העובדים שלכם מצליחים להתחיל לעבוד והעבודה מתקדמת, כדאי לפעול לפי ההנחיות הכלליות לפתרון בעיות בצינור העיבוד.

לפני שפונים לתמיכה, חשוב לוודא שאין בעיות שקשורות לקובץ אימג' של קונטיינר:

  • פועלים לפי השלבים כדי לבדוק את קובץ האימג' של הקונטיינר באופן מקומי.
  • מחפשים שגיאות ביומני המשימות או ביומני העובדים, ומשווים את השגיאות שנמצאו להנחיות בנושא שגיאות נפוצות.
  • צריך לוודא שגרסת ה-SDK של Apache Beam וגרסת השפה שבהן אתם משתמשים כדי להפעיל את צינור העברת הנתונים תואמות לגרסת ה-SDK בתמונת מאגר ה-Docker המותאם אישית.
  • אם משתמשים ב-Java, צריך לוודא שהגרסה הראשית של Java שמשמשת להפעלת צינור העיבוד זהה לגרסה שמותקנת בקובץ האימג' של הקונטיינר.
  • אם משתמשים ב-Python, צריך לוודא שגרסת ה-Python major-minor שבה משתמשים כדי להפעיל את צינור העיבוד תואמת לגרסה שמותקנת בקובץ האימג' של הקונטיינר, ושלתמונה אין תלות שגורמת לקונפליקט. כדי לאשר, אפשר להריץ את הפקודה pip check.

איך מוצאים יומני עובדים שקשורים למאגרי תגים בהתאמה אישית

אפשר למצוא את יומני העובדים של Dataflow כדי לראות הודעות שגיאה שקשורות לקונטיינרים באמצעות Logs Explorer:

  1. בוחרים שמות של יומנים. סביר להניח ששגיאות בהפעלת מאגר מותאם אישית יופיעו באחד מהמקומות הבאים:

    • dataflow.googleapis.com/kubelet
    • dataflow.googleapis.com/docker
    • dataflow.googleapis.com/worker-startup
    • dataflow.googleapis.com/harness-startup
  2. בוחרים את משאב 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 של ה-worker שפועל לאורך זמן.

אם העובדים התחילו לפעול בהצלחה אבל לא מתבצעת עבודה, יכול להיות ששגיאה מונעת את הפעלת מאגר ה-SDK. במקרה כזה, השגיאה הבאה מופיעה בהמלצות לאבחון:

Failed to start container

בנוסף, יומני העובדים לא מכילים שורות כמו:

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

אפשר למצוא שגיאות ספציפיות ביומני Worker ולבדוק את ההנחיות לפתרון שגיאות נפוצות.

הסיבות הנפוצות לבעיות האלה כוללות:

  • בעיות בהתקנת חבילות, כמו pip שגיאות בהתקנה בגלל בעיות בתלות. ראו Error syncing pod ... failed to "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 בקובץ אימג' של קונטיינר שבה משתמשים להפעלת פייפליין. מידע נוסף זמין במאמר בנושא התאמת סביבת ההשקה לסביבת זמן הריצה.

אין תמיכה בהרצה כמשתמש שאינו משתמש על

באופן כללי, אי אפשר להריץ קובצי אימג' של קונטיינרים של SDK בהתאמה אישית או קובצי אימג' של קונטיינרים של תבניות בהתאמה אישית עבור תבניות Flex כמשתמשים שאינם משתמשי root. אם מנסים להריץ קונטיינרים כמשתמש לא-בסיסי, הצינור נכשל.

מידע נוסף זמין במאמר בנושא סביבת זמן ריצה, או שאפשר לפנות אל צוות התמיכה בחשבון.