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

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

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

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