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

כברירת מחדל, כל משימה פועלת למשך 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 הבאים:

רשימת ההרשאות והתפקידים ב-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 ובוחרים באפשרות second בתור Time unit.
  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. מאתרים את הגדרת הזמן הקצוב לתפוגה של המשימה בתצורה שמוחזרת.