Tasks

מידע על Tasks

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

תרחישי שימוש ב-Tasks

  • העברה של מסד נתונים
  • הפעלת משימה באצווה (מתוזמנת או לא מתוזמנת)
  • שליחת אימייל
  • טרנספורמציה של נתונים (ETL)
  • עיבוד נתונים (העלאה, גיבוי, הורדה)

איך Tasks עובד

המשימות מבוצעות באופן אסינכרוני ופועלות באופן עצמאי מהאפליקציה הראשית או ממשימות אחרות שפועלות באותה אפליקציה. לא נוצרים או מוקצים נתיבים לאפליקציה שנוצרה להרצת משימות, ומחזור החיים של הפעלה מדלג על השלב הזה. מחזורי החיים של העלאת קוד המקור ושל ה-build עדיין מתבצעים ומסתיימים ביצירת קובץ אימג' של קונטיינר שמשמש להרצת משימות אחרי דחיפת האפליקציה (אפשר לעיין במחזורי החיים של האפליקציה במאמר פריסת אפליקציה).

מחזור החיים של משימה הוא כזה:

  1. מריצים את הפקודה kf push APP_NAME --task כדי להפעיל אפליקציה לביצוע משימות.
  2. מריצים משימה באפליקציה באמצעות הפקודה kf run-task APP_NAME. המשימה מקבלת בירושה את משתני הסביבה, את הקישורים לשירותים, את הקצאת המשאבים, את פקודת ההפעלה ואת קבוצות האבטחה שמקושרות לאפליקציה.
  3. ‫Kf יוצר PipelineRun של Tekton עם ערכים מהאפליקציה ופרמטרים מהפקודה run-task.
  4. ה-Tekton PipelineRun יוצר Kubernetes Pod שמפעיל קונטיינר על סמך ההגדרות באפליקציה ובמשימה.
  5. הביצוע של המשימה מופסק (המשימה יוצאת או מסתיימת באופן ידני), ה-Pod הבסיסי מופסק או מסתיים. ה-Pods של משימות שהופסקו נשמרים, ולכן אפשר לגשת ליומני המשימות באמצעות הפקודה kf logs APP_NAME --task.
  6. אם מסיימים משימה לפני שהיא מסתיימת, ה-PipelineRun של Tekton מבוטל (ראו ביטול PipelineRun), וה-Pod הבסיסי נמחק יחד עם היומנים. היומנים של משימות שהסתיימו מועברים לזרמי הרישום ברמת האשכול אם הם מוגדרים (למשל, Stackdriver,‏ Fluentd).
  7. אם מספר המשימות שמופעלות באפליקציה גדול מ-500, המשימות הכי ישנות נמחקות באופן אוטומטי.

מדיניות שמירת נתונים של משימות

המשימות נוצרות כמשאבים מותאמים אישית באשכול Kubernetes, ולכן חשוב לא לנצל את כל המקום במסד הנתונים הבסיסי etcd. כברירת מחדל, Kf שומרת רק את 500 המשימות האחרונות לכל אפליקציה. כשהמספר מגיע ל-500, המשימות הכי ישנות (יחד עם ה-Pods והיומנים הבסיסיים) נמחקות אוטומטית.

רישום משימות ביומן והיסטוריית הביצוע

כל הנתונים או ההודעות שהמשימה מוציאה ל-STDOUT או ל-STDERR זמינים באמצעות הפקודה kf logs APP_NAME --task. מנגנון רישום ביומן ברמת האשכול (כמו Stackdriver, ‏ Fluentd) יעביר את יומני המשימות ליעד הרישום ביומן שהוגדר.