כברירת מחדל, כל משימה פועלת למשך 10 דקות לכל היותר. אפשר לשנות את משך הזמן הזה לזמן קצר יותר או ארוך יותר, עד 168 שעות (7 ימים). במשימות שמשתמשות במעבדי GPU, הזמן הקצוב לתפוגה המקסימלי הוא שעה אחת.
אפשר להגדיר את הזמן הקצוב לתפוגה של המשימה כמו שמתואר בדף הזה. אין הגדרת זמן קצוב (timeout) מפורשת להרצת פעולה: כשהפעולה מסתיימת, ההרצה מסתיימת.
היחידות מציינות משך זמן. אפשר לציין את משך הזמן הקצוב לתפוגה כמספר שלם בשניות, בדקות או בשעות. לדוגמה, כדי להגדיר את משך הזמן הקצוב לתפוגה כ-10 דקות ו-5 שניות, צריך לציין את הערך 605 שניות.
אם מופעלים ניסיונות חוזרים בעבודה, הגדרת הזמן הקצוב לתפוגה חלה על כל ניסיון של משימה. אם ניסיון ההפעלה של המשימה לא יושלם בפרק הזמן הזה, הוא ייפסק. ככל שמשימה פועלת זמן רב יותר, כך גדל הסיכוי שתיתקלו בבעיות שיגרמו לה להיכשל, כמו תקלות בתלות במורד הזרם, שגיאות שקשורות למחסור בזיכרון או בעיות בתשתית. מומלץ להפעיל ניסיונות חוזרים לכל המשימות, ובמיוחד למשימות שפועלות לאורך זמן.
אירועי תחזוקה
משרות עוברות מדי פעם אירועי תחזוקה. במהלך אירוע תחזוקה, כל המשימות שמתבצעות כרגע מועברות מהמכונה הנוכחית למכונה אחרת. יש השהיה קצרה בעיבוד בזמן העברת המשימה.
תהליך ההעברה שומר על מצב המשימה, עם יוצא מן הכלל אחד: חיבורים יוצאים לרשת VPC נקטעים במהלך אירועי תחזוקה. מומלץ להשתמש בספריות לקוח שיכולות לטפל באיפוסים מדי פעם של החיבור.
ב-Cloud Run מוצגת הודעה ביומן בכל פעם שמשימה מתחילה ומסיימת את ההעברה.
בנוסף, אם רוצים לעקוב אחרי אירועי תחזוקה או לטפל בהם בצורה ספציפית, אפשר לקבל את האות SIGTSTP שנשלח 10 שניות לפני העברת משימה. אחרי ההעברה, המשימה מקבלת אות SIGCONT מיד אחרי שהיא מופעלת מחדש.
בדוגמה הבאה של Go מוצגת פונקציה שתופסת את האותות האלה ומדפיסה רשומה ביומן:
func testSignals() { sigs := make(chan os.Signal, 1) signal.Notify(sigs, syscall.SIGTSTP, syscall.SIGCONT) go func() { for { sig := <-sigs log.Printf("Got Signal: %v", sig) } }() }
התפקידים הנדרשים
כדי לקבל את ההרשאות שדרושות להגדרת משימות של Cloud Run, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים:
- Cloud Run Developer (
roles/run.developer) במשימה ב-Cloud Run - משתמש בחשבון שירות (
roles/iam.serviceAccountUser) בזהות השירות
רשימת ההרשאות והתפקידים ב-IAM שמשויכים ל-Cloud Run מופיעה במאמרים תפקידי IAM ב-Cloud Run והרשאות IAM ב-Cloud Run. אם עבודת Cloud Run שלכם מתקשרת עםGoogle Cloud ממשקי API, כמו ספריות לקוח ב-Cloud, כדאי לעיין במדריך להגדרת זהות שירות. מידע נוסף על מתן תפקידים זמין במאמרים הרשאות פריסה וניהול גישה.
הגדרת זמן קצוב לתפוגת משימות
כדי לציין זמן קצוב לתפוגה של משימה במשימת Cloud Run:
המסוף
נכנסים לדף Jobs ב-Cloud Run במסוף Google Cloud :
לוחצים על Deploy container (פריסת מאגר תגים) כדי למלא את דף ההגדרות הראשוניות של המשימה. אם מגדירים משימה קיימת, בוחרים את המשימה ולוחצים על View and edit job configuration (הצגה ועריכה של הגדרת המשימה).
לוחצים על Containers, Connections, Security (מאגרי תגים, חיבורים, אבטחה) כדי להרחיב את דף מאפייני העבודה.
לוחצים על הכרטיסייה General.
- בשדה Task timeout (פסק זמן למשימה), מציינים את משך הזמן המקסימלי למשימות של העבודה בעבודה הנוכחית, ובוחרים Time unit (יחידת זמן). אפשר לציין את משך הזמן הקצוב לתפוגה רק כערך מספרי של שנייה, דקה או שעה. לדוגמה, כדי להגדיר משך זמן של 10 דקות ו-5 שניות, בשדה Task timeout מציינים
605ובוחרים באפשרות second בתור Time unit.
- בשדה Task timeout (פסק זמן למשימה), מציינים את משך הזמן המקסימלי למשימות של העבודה בעבודה הנוכחית, ובוחרים Time unit (יחידת זמן). אפשר לציין את משך הזמן הקצוב לתפוגה רק כערך מספרי של שנייה, דקה או שעה. לדוגמה, כדי להגדיר משך זמן של 10 דקות ו-5 שניות, בשדה Task timeout מציינים
לוחצים על יצירה או על עדכון.
gcloud
למשרה שאתם יוצרים:
gcloud run jobs create JOB_NAME --image IMAGE_URL --task-timeout TIMEOUT
החלפה
- JOB_NAME בשם של המשימה.
- IMAGE_URL: הפניה לקובץ אימג' בקונטיינר, לדוגמה
us-docker.pkg.dev/cloudrun/container/job:latest. - TIMEOUT עם משך הזמן המקסימלי של משימות העבודה, תוך ציון משך הזמן והיחידות: לדוגמה,
10m5sהוא עשר דקות וחמש שניות.
כדי לעדכן משרה:
gcloud run jobs update JOB_NAME --task-timeout TIMEOUT
YAML
אם אתם יוצרים משרה חדשה, דלגו על השלב הזה. אם אתם מעדכנים משימה קיימת, אתם צריכים להוריד את הגדרת ה-YAML שלה:
gcloud run jobs describe JOB_NAME --format export > job.yaml
מעדכנים את המאפיין
timeoutSeconds::apiVersion: run.googleapis.com/v1 kind: Job metadata: name: JOB spec: template: spec: template: spec: containers: - image: IMAGE timeoutSeconds: TIMEOUT
מחליפים את:
- JOB_NAME בשם של המשימה.
- IMAGE_URL: הפניה לקובץ אימג' בקונטיינר, לדוגמה
us-docker.pkg.dev/cloudrun/container/job:latest. - TIMEOUT עם משך הזמן המקסימלי למשימות של העבודה, תוך ציון כמות הזמן והיחידות. אפשר לציין את הזמן רק כערך מספרי שלם בשניות, בדקות או בשעות. לדוגמה, כדי להגדיר משך זמן של 10 דקות ו-5 שניות, מציינים
605.
אפשר גם לציין פרטים נוספים של הגדרה, כמו משתני סביבה או מגבלות זיכרון.
מעדכנים את ההגדרה הקיימת של העבודה:
gcloud run jobs replace job.yaml
Terraform
כדי ללמוד איך להחיל הגדרות ב-Terraform או להסיר אותן, ראו פקודות בסיסיות ב-Terraform.
מוסיפים את השורות הבאות למשאבgoogle_cloud_run_v2_job בתצורת Terraform:הצגת הגדרות הזמן הקצוב לתפוגה של משימות
כדי לראות את הגדרות הזמן הקצוב לתפוגה של המשימה הנוכחית בעבודת Cloud Run:
המסוף
במסוף Google Cloud , נכנסים לדף Cloud Run jobs:
לוחצים על המשרה שמעניינת אתכם כדי לפתוח את הדף פרטי המשרה.
לוחצים על View and Edit job configuration (הצגה ועריכה של הגדרות העבודה).
מאתרים את הגדרת הזמן הקצוב לתפוגה של המשימה בפרטי ההגדרה.
gcloud
משתמשים בפקודה הבאה:
gcloud run jobs describe JOB_NAME
מאתרים את הגדרת הזמן הקצוב לתפוגה של המשימה בתצורה שמוחזרת.