הגדרת פסק זמן למשימות בעבודות

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

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

היחידות מציינות משך זמן. ניתן לציין את משך הזמן הקצוב כערך שלם בשניות, דקות או שעות. לדוגמה, כדי להגדיר את משך הזמן הקצוב ל-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 הבאים:

רשימת ההרשאות והתפקידים ב-IAM שמשויכים ל-Cloud Run מופיעה במאמרים תפקידי IAM ב-Cloud Run והרשאות IAM ב-Cloud Run. אם עבודת Cloud Run שלכם מתקשרת עםGoogle Cloud ממשקי API, כמו ספריות לקוח ב-Cloud, כדאי לעיין במדריך להגדרת זהות שירות. מידע נוסף על מתן תפקידים זמין במאמרים הרשאות פריסה וניהול גישה.

הגדרת זמן קצוב לתפוגת משימות

כדי לציין זמן קצוב לתפוגה של משימה במשימת Cloud Run:

המסוף

  1. נכנסים לדף Jobs ב-Cloud Run במסוף Google Cloud :

    כניסה ל-Cloud Run

  2. לוחצים על Deploy container (פריסת מאגר תגים) כדי למלא את דף ההגדרות הראשוניות של המשימה. אם אתם מגדירים משימה קיימת, בוחרים את המשימה ולוחצים על View and edit job configuration (הצגה ועריכה של הגדרת המשימה).

  3. לוחצים על Containers, Connections, Security (מאגרי תגים, חיבורים, אבטחה) כדי להרחיב את דף מאפייני העבודה.

  4. לוחצים על הכרטיסייה General.

    • בשדה Task timeout (פסק זמן למשימה), מציינים את משך הזמן המקסימלי למשימות של העבודה בעבודה הנוכחית, ובוחרים Time unit (יחידת זמן). אפשר לציין את משך הזמן הקצוב לתפוגה רק כערך מספרי של שנייה, דקה או שעה. לדוגמה, כדי להגדיר משך זמן של 10 דקות ו-5 שניות, בשדה Task timeout מציינים 605, ובשדה Time unit בוחרים באפשרות second.
  5. לוחצים על יצירה או על עדכון.

gcloud

  1. למשרה שאתם יוצרים:

    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 הוא עשר דקות וחמש שניות.
  2. עבור משרה שאתה מעדכן:

    gcloud run jobs update JOB_NAME --task-timeout TIMEOUT

YAML

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

    gcloud run jobs describe JOB_NAME --format export > job.yaml
  2. מעדכנים את המאפיין 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.

    ניתן גם לציין פרטי תצורה נוספים, כגון משתני סביבה או מגבלות זיכרון.

  3. מעדכנים את ההגדרה הקיימת של העבודה:

    gcloud run jobs replace job.yaml

Terraform

כדי ללמוד איך להחיל הגדרות ב-Terraform או להסיר אותן, ראו פקודות בסיסיות ב-Terraform.

מוסיפים את השורות הבאות למשאב google_cloud_run_v2_job בתצורת Terraform:

resource "google_cloud_run_v2_job" "default" {
  name     = "cloud-run-job-timeout"
  location = "us-central1"

  deletion_protection = false # set to "true" in production

  template {
    template {
      timeout = "3.500s"

      containers {
        image = "us-docker.pkg.dev/cloudrun/container/job:latest"
      }
    }
  }
}

הצג הגדרות זמן קצוב למשימה

כדי להציג את הגדרות הזמן הקצוב הנוכחיות של המשימה עבור משימת Cloud Run שלך:

המסוף

  1. במסוף Google Cloud , נכנסים לדף Cloud Run jobs:

    כניסה לדף Cloud Run jobs

  2. לוחצים על המשרה שמעניינת אתכם כדי לפתוח את הדף פרטי המשרה.

  3. לוחצים על View and Edit job configuration (הצגה ועריכה של הגדרות העבודה).

  4. אתר את הגדרת זמן הקצוב למשימה בפרטי התצורה.

gcloud

  1. משתמשים בפקודה הבאה:

    gcloud run jobs describe JOB_NAME
  2. אתר את הגדרת זמן הקצוב של המשימה בתצורה המוחזרת.