הרצת משימות

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

העברת אפליקציה להפעלת משימות

עוברים לספרייה של קובץ המניפסט של האפליקציה או של קוד המקור ויוצרים אפליקציה להפעלת משימות באמצעות הפקודה kf push APP_NAME --task. הדגל --task מציין שהאפליקציה מיועדת להרצת משימות, ולכן לא ייווצרו מסלולים באפליקציה והיא לא תופעל כאפליקציה שפועלת לאורך זמן.

$ kf push helloworld --task

כדי לוודא שלא נוצרו מופעים או מסלולים של האפליקציה, מציגים את רשימת האפליקציות.

$ kf apps
Listing Apps in Space: test-space
Name                     Instances  Memory  Disk  CPU   URLs
helloworld               stopped    1Gi     1Gi   100m  <nil>

הרצת משימה באפליקציה

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

$ kf run-task helloworld --command "printenv"
Task helloworld-gd8dv is submitted successfully for execution.

שם המשימה נוצר באופן אוטומטי בשרת Kubernetes API. הוא מתחיל בקידומת של שם האפליקציה ומסתיים בתוספת של מחרוזת שרירותית. שם המשימה הוא מזהה ייחודי של משימות באותו אשכול.

ציון מכסות למשאבי משימות

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

כדי לציין מגבלות על משאבים באפליקציה, אפשר להשתמש בדגלים --cpu-cores, --memory-limit ו---disk-quota בפקודה kf push.

$ kf push helloworld --command "printenv" --cpu-cores=0.5 --memory-limit=2G --disk-quota=5G --task

כדי לעקוף את המגבלות האלה באפליקציה, אפשר להשתמש בדגלים --cpu-cores, --memory-limit ו---disk-quota בפקודה kf run-task.

$ kf run-task helloworld --command "printenv" --cpu-cores=0.5 --memory-limit=2G --disk-quota=5G

הגדרת שם תצוגה מותאם אישית למשימה

אפשר להשתמש בדגל --name כדי לציין שם לתצוגה בהתאמה אישית למשימה, כדי שיהיה קל יותר לזהות אותה או לקבץ אותה.

$ kf run-task helloworld --command "printenv" --name foo
Task helloworld-6swct is submitted successfully for execution.

$ kf tasks helloworld
Listing Tasks in Space: test space
Name              ID  DisplayName        Age    Duration  Succeeded  Reason
helloworld-6swct  3   foo                1m     21s       True       <nil>

ניהול משימות

אפשר להשתמש בפקודה kf tasks APP_NAME כדי לראות את כל המשימות של אפליקציה.

$ kf tasks helloworld
Listing Tasks in Space: test space
Name              ID  DisplayName        Age    Duration  Succeeded  Reason
helloworld-gd8dv  1   helloworld-gd8dv   1m     21s       True       <nil>

ביטול משימה

מבטלים משימה פעילה באמצעות הפקודה kf terminate-task.

ביטול משימה לפי שם המשימה.

$ kf terminate-task helloworld-6w6mz
Task "helloworld-6w6mz" is successfully submitted for termination

או לבטל משימה באמצעות APP_NAME + Task ID.

$ kf terminate-task helloworld 2
Task "helloworld-6w6mz" is successfully submitted for termination
  • הערה: אפשר לבטל רק משימות בהמתנה או משימות שפועלות. אי אפשר לבטל משימות שהושלמו.

למשימות שבוטלו יש סטטוס PipelineRunCancelled.

$ kf tasks helloworld
Listing Tasks in Space: test space
Name              ID  DisplayName        Age    Duration  Succeeded  Reason
helloworld-gd8dv  1   helloworld-gd8dv   1m     21s       True       <nil>
helloworld-6w6mz  2   helloworld-6w6mz   38s    11s       False      PipelineRunCancelled

צפייה ביומני המשימות

כדי להציג את היומנים של משימה, משתמשים בפקודה kf logs APP_NAME --task.

$ kf logs helloworld --task