במאמר הזה מוסבר איך להגדיר את הזמן שבו שירותי Knative צריכים להחזיר תשובה לבקשה. אם לא מוחזרת תשובה בתוך הזמן שצוין, הבקשה מסתיימת ומוחזרת השגיאה 504.
מגבלות זמן קצוב
מגבלת הזמן הקצוב לתפוגה משתנה בהתאם לגרסה של אשכול GKE.
| גרסת GKE | מכסת ברירת מחדל | מגבלת הזמן הקצוב לתפוגה המרבי |
|---|---|---|
| 0.16.0-gke.1 ואילך | 300 שניות | 24 שעות |
| 0.15.0-gke.3 ומגרסאות קודמות | 300 שניות | 900 שניות |
בנוסף לשינוי הזמן הקצוב לתפוגה של בקשת Knative Serving, כדאי לבדוק את מסגרת השפה כדי לראות אם יש לה הגדרה משלה של זמן קצוב לתפוגה של בקשה שצריך לעדכן גם אותה.
הגדרה ועדכון של זמן קצוב לתפוגה של בקשה
כל שינוי בהגדרות מוביל ליצירה של גרסה חדשה. גם גרסאות עתידיות יקבלו את הגדרת התצורה הזו באופן אוטומטי, אלא אם תבצעו עדכונים מפורשים כדי לשנות אותה.
אפשר להגדיר את הזמן הקצוב לתפוגה של בקשה באמצעות מסוף Google Cloud, Google Cloud CLI או קובץ YAML כשפורסים שירות חדש או מעדכנים שירות קיים ופורסים עדכון: Google Cloud
המסוף
נכנסים אל Knative serving במסוף Google Cloud :
אם אתם מגדירים שירות חדש שאתם פורסים, לוחצים על יצירת שירות. אם אתם מגדירים שירות קיים, לוחצים על השירות ואז על Edit & Deploy New Revision (עריכה ופריסה של עדכון חדש).
בקטע הגדרות מתקדמות, לוחצים על מאגר תגים.
בשדה Request timeout, מזינים את ערך הזמן הקצוב לתפוגה שרוצים להשתמש בו. הערך שאתם מציינים צריך להיות קטן ממגבלת הזמן הקצוב לתפוגה של גרסת ה-GKE של האשכול.
לוחצים על הבא כדי להמשיך לקטע הבא.
בקטע Configure how this service is triggered (הגדרה של אופן הפעלת השירות), בוחרים את סוג הקישוריות שרוצים להשתמש בו כדי להפעיל את השירות.
לוחצים על יצירה כדי לפרוס את התמונה ב-Knative serving ומחכים עד שהפריסה תסתיים.
שורת הפקודה
בשירותים קיימים, מריצים את הפקודה
gcloud run services updateעם הפרמטר--timeoutכדי להגדיר את הזמן הקצוב לתפוגת הבקשה:gcloud run services update SERVICE --timeout TIMEOUT
מחליפים את:
- SERVICE בשם של השירות.
- TIMEOUT עם הזמן הרצוי, באמצעות ערך מסוג מספר שלם בשניות, או ערך משך מוחלט, לדוגמה
1m20sששווה לדקה ו-20 שניות. הערך שאתם מציינים חייב להיות קטן ממגבלת הזמן הקצוב לתפוגה של גרסת ה-GKE של האשכול. מציינים0כדי להגדיר את הזמן הקצוב לתפוגה לערך ברירת המחדל.
בשירותים חדשים, מגדירים את הזמן הקצוב לתפוגה של הבקשה באמצעות הפקודה
gcloud run deployעם הפרמטר--timeout:gcloud run deploy SERVICE --image=IMAGE_URL --timeout TIMEOUT
מחליפים את:
- SERVICE בשם של השירות.
- IMAGE_URL עם הפניה לקובץ אימג' של קונטיינר, לדוגמה,
gcr.io/cloudrun/hello. - TIMEOUT עם הזמן הרצוי, באמצעות ערך מסוג מספר שלם בשניות, או ערך משך מוחלט, לדוגמה
1m20sששווה לדקה ו-20 שניות. הערך שאתם מציינים חייב להיות קטן ממגבלת הזמן הקצוב לתפוגה של גרסת ה-GKE של האשכול. מציינים0כדי להגדיר את הזמן הקצוב לתפוגה לערך ברירת המחדל.
YAML
אפשר להוריד את ההגדרה של שירות קיים לקובץ YAML באמצעות הפקודה gcloud run services describe והדגל --format=export.
אחר כך תוכלו לשנות את קובץ ה-YAML ולפרוס את השינויים האלה באמצעות הפקודה gcloud run services replace.
חשוב לוודא שמשנים רק את המאפיינים שצוינו.
מורידים את ההגדרה של השירות לקובץ בשם
service.yamlבסביבת העבודה המקומית:gcloud run services describe SERVICE --format export > service.yaml
מחליפים את SERVICE בשם של שירות Knative serving.
מעדכנים את המאפיין
timeoutSecondsבקובץ המקומי:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: spec: containers: - image: IMAGE timeoutSeconds: TIMEOUT
מחליפים את:
- SERVICE בשם של שירות Knative serving
- IMAGE_URL עם הפניה לקובץ אימג' של קונטיינר, לדוגמה,
gcr.io/cloudrun/hello. - TIMEOUT עם ערך הזמן הקצוב לתפוגה הרצוי, בשניות.
מחליפים את השירות בהגדרה החדשה שלו באמצעות הפקודה הבאה:
gcloud run services replace service.yaml