כברירת מחדל, כל משימה פועלת למשך 10 דקות לכל היותר. אפשר לשנות את משך הזמן הזה לזמן קצר יותר או ארוך יותר, עד 168 שעות (7 ימים). במשימות שמשתמשות במעבדי GPU, הזמן הקצוב לתפוגה המקסימלי הוא שעה אחת.
אפשר להגדיר את הזמן הקצוב לתפוגה של המשימה כמו שמתואר בדף הזה. אין הגבלת זמן מפורשת לביצוע של עבודה: כשהעבודה מסתיימת, הביצוע שלה מסתיים.
היחידות מציינות משך זמן. אפשר לציין את משך הזמן הקצוב לתפוגה כמספר שלם בשניות, בדקות או בשעות. לדוגמה, כדי להגדיר את משך הזמן הקצוב לתפוגה כ-10 דקות ו-5 שניות, צריך לציין את הערך 605 שניות.
אם הפעלתם ניסיונות חוזרים בעבודה, הגדרת הזמן הקצוב לתפוגה חלה על כל ניסיון של משימה. אם ניסיון ההפעלה של המשימה לא יושלם בפרק הזמן הזה, הוא ייפסק. ככל שהמשימה פועלת זמן רב יותר, כך גדל הסיכוי שתיתקלו בבעיות שיגרמו לכשלונה, כמו תקלות בתלות במורד הזרם, שגיאות של אין זיכרון פנוי (OOM) או בעיות בתשתית. מומלץ להפעיל ניסיונות חוזרים לכל העבודות, אבל במיוחד לעבודות עם משימות שפועלות לאורך זמן.
אירועי תחזוקה
מדי פעם מתבצעים אירועי תחזוקה בעבודות. במהלך אירוע תחזוקה, כל המשימות שמתבצעות מועברות מהמכונה הנוכחית למכונה אחרת. תהיה הפסקה קצרה בעיבוד בזמן העברת המשימה.
תהליך ההעברה שומר על מצב המשימה, עם יוצא מן הכלל אחד: חיבורים יוצאים לרשת 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 באמצעותGoogle Cloud המסוף, ה-CLI של gcloud, YAML או Terraform:
המסוף
במסוף Google Cloud , נכנסים לדף Cloud Run:
בתפריט הניווט של Cloud Run, לוחצים על Jobs (משימות):
אם יוצרים משימה חדשה, לוחצים על Deploy container (פריסת מאגר תגים) כדי למלא את דף ההגדרות הראשוני של המשימה.
אם מגדירים עבודה קיימת, בוחרים את העבודה ולוחצים על View and edit job configuration (הצגה ועריכה של הגדרת העבודה).
לוחצים על Containers, Connections, Security (מאגרי תגים, חיבורים, אבטחה) כדי להרחיב את דף מאפייני העבודה.
בשדה Task timeout (פסק זמן למשימה), מציינים את משך הזמן המקסימלי למשימות של העבודה בעבודה הנוכחית, ובוחרים Time unit (יחידת זמן). אפשר לציין את משך הזמן הקצוב לתפוגה רק כערך שלם בשניות, בדקות או בשעות. לדוגמה, כדי להגדיר משך זמן של 10 דקות ו-5 שניות, בשדה Task timeout מציינים
605ובוחרים באפשרות second בתור Time unit.לוחצים על יצירה או על עדכון.
gcloud
כדי להגדיר את הזמן הקצוב לתפוגה של המשימה כשיוצרים משימה חדשה, מריצים את הפקודה הבאה:
gcloud run jobs create JOB --image IMAGE_URL --task-timeout TIMEOUT
מחליפים את מה שכתוב בשדות הבאים:
-
JOB: השם של המשימה ב-Cloud Run. -
IMAGE_URL: הפניה לקובץ אימג' של קונטיינר, לדוגמהus-docker.pkg.dev/cloudrun/container/job:latest. -
TIMEOUT: משך הזמן המקסימלי של משימות העבודה, שמוגדר לפי כמות הזמן והיחידות. לדוגמה,10m5sהוא עשר דקות וחמש שניות.
-
כדי לעדכן את הזמן הקצוב לתפוגה של משימה בעבודה קיימת, מריצים את הפקודה הבאה:
gcloud run jobs update JOB --task-timeout TIMEOUT
YAML
אם אתם יוצרים משרה חדשה, דלגו על השלב הזה. אם אתם מעדכנים משימה קיימת, אתם צריכים להוריד את הגדרת ה-YAML שלה:
gcloud run jobs describe JOB --format export > job.yaml
מעדכנים את מאפיין
timeoutSeconds::apiVersion: run.googleapis.com/v1 kind: Job metadata: name: JOB spec: template: spec: template: spec: containers: - image: IMAGE_URL timeoutSeconds: TIMEOUT
מחליפים את מה שכתוב בשדות הבאים:
-
JOB: השם של המשימה ב-Cloud Run. -
IMAGE_URL: הפניה לקובץ אימג' של קונטיינר, לדוגמהus-docker.pkg.dev/cloudrun/container/job:latest. -
TIMEOUT: משך הזמן המקסימלי של משימות העבודה, שמוגדר לפי כמות הזמן והיחידות. אפשר לציין זמן רק כמספר שלם בשניות, בדקות או בשעות. לדוגמה, כדי להגדיר משך של 10 דקות ו-5 שניות, מציינים605.
אפשר גם לציין פרטים נוספים של הגדרה, כמו משתני סביבה או מגבלות זיכרון.
-
יוצרים או מעדכנים את העבודה באמצעות הפקודה הבאה:
gcloud run jobs replace job.yaml
אם קיים קובץ
job.yaml, הפקודהgcloud run jobs replaceמשתמשת בו כברירת מחדל.
Terraform
כדי ללמוד איך להחיל הגדרות ב-Terraform או להסיר אותן, ראו פקודות בסיסיות ב-Terraform.
מוסיפים את השורות הבאות למשאבgoogle_cloud_run_v2_job בתצורת Terraform:הצגת הגדרות הזמן הקצוב לתפוגה של משימות
כדי לראות את הגדרות הזמן הקצוב לתפוגה של המשימה הנוכחית ב-Cloud Run, משתמשים במסוף Google Cloud או ב-Google Cloud CLI:
המסוף
במסוף Google Cloud , נכנסים לדף Cloud Run jobs:
לוחצים על המשרה כדי לפתוח את הדף פרטי המשרה.
לוחצים על הצגה ועריכה של הגדרות העבודה.
מחפשים את הגדרת הזמן הקצוב לתפוגה של המשימה בפרטי ההגדרה.
gcloud
מריצים את הפקודה הבאה:
gcloud run jobs describe JOB
מחפשים את הגדרת הזמן הקצוב לתפוגה של המשימה בתצורה שמוחזרת.