בדף הזה מתוארות הגדרות החיוב בהנחה שאתם משתמשים בהתנהגות ברירת המחדל של התאמה לעומס (autoscaling) ב-Cloud Run. אם אתם משתמשים בהתאמה ידנית לעומס, כדאי לקרוא את המאמר התנהגות החיוב בהתאמה ידנית לעומס כדי להבין שיקולים נוספים.
יש שתי הגדרות חיוב בשירותי Cloud Run:
חיוב מבוסס-בקשה (ברירת המחדל): מכונות Cloud Run מחויבות רק כשהן מעבדות בקשות, כשהן מתחילות וכשהן נסגרות. לפרטים נוספים, ראו מחזור החיים של המכונה. בעבר ההגדרה הזו נקראה CPU only allocated during request processing.
חיוב מבוסס-מכונה: מכונות Cloud Run מחויבות על כל מחזור החיים של המכונות, גם כשאין בקשות נכנסות. חיוב לפי מכונה יכול להיות שימושי להרצת משימות קצרות ברקע ומשימות עיבוד אסינכרוניות אחרות. ההגדרה הזו נקראה בעבר CPU always allocated.
אם בוחרים בחיוב לפי בקשה, החיוב הוא לפי בקשה ורק כשהמופע מעבד בקשה. אם תבחרו בחיוב לפי מכונה, תחויבו על כל מחזור החיים של המכונה.
ההשפעה של הקצאת המעבד (CPU)
הגדרת החיוב שתבחרו משפיעה על אופן ההקצאה של המעבד (CPU).
- בחיוב לפי בקשות, המערכת מקצה מעבד (CPU) רק בזמן עיבוד הבקשות.
- בחיוב מבוסס-אינסטנס, המעבד מוקצה למשך כל מחזור החיים של אינסטנס המכולה.
תקציבים מקסימליים
כשמגדירים מגבלות הוצאה ב-Cloud Billing Budget במסוף חיוב ב-Cloud או באופן פרוגרמטי באמצעות Cloud Billing Budget API, המגבלות האלה חלות באופן אוטומטי על כל סוגי המשאבים ב-Cloud Run בפרויקט.
אתם יכולים לעקוב אחרי ההתקדמות של תקרת ההוצאות ישירות מדף הסקירה הכללית במסוף Cloud Run. כשמגיעים לתקרת ההוצאות, Cloud de Confiance by S3NS המערכת משהה את כל עומסי העבודה ב-Cloud Run כדי למנוע עלויות נוספות על המשאבים הבאים ב-Cloud Run:
- שירותים: כל שירות קיים לא יצליח להעביר תנועה ויחזיר שגיאות
5xx. - משימות: הפעלות של משימות חדשות נכשלות, ומשימות בתהליך לא מסתיימות.
- מאגרי עובדים: כל המכונות הקיימות מפסיקות לעבד משימות.
אם תחצו את תקרת ההוצאות, תקבלו התראה ויוצג באנר אכיפה במסוף Cloud Run. תקרות ההוצאות שנאכפות מתאפסות בתחילת כל חודש, ביום הראשון של מחזור החיוב הבא. כך העומסים שלכם לא נחסמים והסכום של ההוצאות מתאפס לאפס. אם חרגתם מתקרת ההוצאות ואתם רוצים להמשיך את הפעילות לפני האיפוס החודשי, אתם יכולים לשנות או להסיר את התקרה באופן ידני בדף הסקירה הכללית במסוף Cloud Run.
איך בוחרים את הגדרת החיוב המתאימה
בחירת הגדרת החיוב המתאימה לתרחיש השימוש שלכם תלויה בכמה גורמים, כמו דפוסי תעבורה, ביצוע ברקע ועלות. כל אחד מהגורמים האלה מתואר בקטעים הבאים.
שיקולים לגבי דפוסי תנועה
- חיוב מבוסס-בקשות מומלץ כשהתנועה הנכנסת היא ספורדית, מתפרצת או לא סדירה.
- מומלץ להשתמש בחיוב לפי מופע כשהתנועה הנכנסת יציבה ומשתנה לאט.
שיקולים לגבי הרצה ברקע
אם בוחרים באפשרות חיוב לפי מכונה, המערכת מקצה מעבד (CPU) גם מחוץ לעיבוד הבקשות, וכך אפשר להריץ משימות קצרות ברקע ועיבוד אסינכרוני אחר אחרי החזרת התגובות. לדוגמה:
- שימוש בסוכני מעקב כמו OpenTelemetry, שעשויים להניח שהם יכולים לפעול ברקע.
- שימוש ב-Goroutines של Go, ב-async של Node.js, ב-threads של Java וב-coroutines של Kotlin.
- שימוש במסגרות של אפליקציות שמסתמכות על פונקציות מובנות של תזמון או של פעילות ברקע.
אפשר לסגור בכל שלב מופעים לא פעילים, כולל מופעים שמופעלים באמצעות minimum instances. אם אתם צריכים לסיים משימות לפני שהקונטיינר נסגר, אתם יכולים להשתמש ב-SIGTERM כדי לתת למכונה 10 שניות לפני שהיא נעצרת.
שיקולי עלות
אם אתם משתמשים בחיוב לפי בקשות, חיוב לפי מכונות יכול להיות חסכוני יותר אם:
- שירות Cloud Run שלך מעבד מספר גבוה של בקשות נוכחיות בקצב יציב יחסית.
- כשמסתכלים על מדד מספר המופעים, לא רואים הרבה מופעים של 'idle'.
שיקולים לגבי התאמה אוטומטית לעומס (Autoscaling)
כברירת מחדל, ב-Cloud Run מתבצעת התאמה אוטומטית לעומס של מספר המכונות של הקונטיינרים.
בשירות שהוגדר לחיוב מבוסס-בקשה, המערכת ב-Cloud Run מתאימה אוטומטית את מספר המכונות בהתאם לניצול המעבד רק במהלך עיבוד הבקשות.
בשירות שמוגדר לחיוב לפי מכונה, מערכת Cloud Run משנה באופן אוטומטי את מספר המכונות בהתאם לניצול המעבד (CPU) לאורך כל מחזור החיים של מכונת הקונטיינר, חוץ ממקרים של שינוי קנה המידה לאפס ומאפס, שבהם היא משתמשת רק בבקשות.
אם אתם משתמשים בהתאמה ידנית לעומס במקום בתכונה של התאמה אוטומטית לעומס ב-Cloud Run, כדאי לעיין בשיקולים נוספים שמופיעים במאמר בנושא התאמה ידנית לעומס.
שיקולים לגבי חיוב לפי מופע
גם אם הגדרת החיוב היא חיוב לפי מכונה, ההתאמה האוטומטית לעומס ב-Cloud Run עדיין פועלת, ויכול להיות שהיא תסיים מכונות אם הן לא נדרשות לטיפול בתעבורת הנתונים הנכנסת או בניצול הנוכחי של המעבד (CPU) מחוץ לבקשות. מופע אף פעם לא יישאר במצב לא פעיל יותר מ-15 דקות אחרי עיבוד בקשה, אלא אם הוא נשאר פעיל באמצעות מופעים מינימליים.
שילוב של חיוב מבוסס-מכונות עם מספר מכונות מינימלי מאפשר להפעיל מספר מכונות עם גישה מלאה למשאבי המעבד (CPU), וכך להשתמש בעיבוד ברקע. כשמשתמשים בדפוס הזה, Cloud Run מפעיל התאמה אוטומטית של מספר האינסטנסים גם אם שירות משתמש במעבד מחוץ לכל הבקשות.
אם אתם משתמשים בבדיקות תקינות, אתם צריכים להשתמש בחיוב מבוסס-אינסטנס לכל בדיקה. לפרטים על החיוב, ראו בדיקות תקינות של קונטיינרים.
התפקידים הנדרשים
כדי לקבל את ההרשאות שנדרשות להגדרה ולפריסה של שירותי Cloud Run, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים:
- מפתח ב-Cloud Run (
roles/run.developer) בשירות Cloud Run - משתמש בחשבון שירות (
roles/iam.serviceAccountUser) בזהות השירות
אם אתם פורסים שירות או פונקציה מקוד מקור, אתם צריכים גם לקבל תפקידים נוספים בפרויקט ובחשבון השירות של Cloud Build.
רשימה של תפקידים והרשאות ב-IAM שמשויכים ל-Cloud Run מופיעה במאמרים תפקידי IAM ב-Cloud Run והרשאות IAM ב-Cloud Run. אם שירות Cloud Run שלכם מתקשר עםCloud de Confiance ממשקי API, כמו ספריות לקוח ב-Cloud, כדאי לעיין במדריך להגדרת זהות שירות. מידע נוסף על הקצאת תפקידים זמין במאמרים הרשאות פריסה וניהול הגישה.
הגדרה ועדכון של החיוב
כל שינוי בהגדרות יוצר גרסה חדשה. גם גרסאות עתידיות יקבלו את הגדרת התצורה הזו באופן אוטומטי, אלא אם תבצעו עדכונים מפורשים כדי לשנות אותה.
אם בוחרים בחיוב לפי מכונה, צריך לציין לפחות 512MiB של זיכרון.
אפשר לשנות את הגדרת החיוב באמצעות מסוף Cloud de Confiance , ה-CLI של gcloud או קובץ YAML כשיוצרים שירות חדש או פורסים עדכון חדש:
המסוף
נכנסים ל-Cloud Run במסוף Cloud de Confiance by S3NS :
בתפריט הניווט של Cloud Run, בוחרים באפשרות Services ולוחצים על Deploy container כדי להגדיר שירות חדש. אם אתם מגדירים שירות קיים, לוחצים על השירות.
אם אתם מגדירים שירות חדש, מלאו את דף הגדרות השירות הראשוניות.
אם אתם מגדירים שירות קיים, לוחצים על הכרטיסייה Scaling.
בקטע חיוב, בוחרים באפשרות על בסיס בקשות כדי שהחיוב על המופעים יתבצע רק במהלך עיבוד הבקשות, או באפשרות על בסיס מופעים כדי שהחיוב על המופעים יתבצע למשך כל משך החיים של המופעים.
כדי ליצור שירות חדש, לוחצים על יצירה. לוחצים על View diff & redeploy ואז על Deploy changes בשירות קיים.
gcloud
אפשר לעדכן את הגדרת החיוב. כדי להגדיר חיוב מבוסס-מכונה לשירות מסוים:
gcloud run services update SERVICE --no-cpu-throttling
מחליפים את SERVICE בשם השירות.
כדי להגדיר חיוב לפי בקשות:
gcloud run services update SERVICE --cpu-throttling
אפשר גם להגדיר את הגדרות החיוב במהלך הפריסה. כדי להגדיר את החיוב לפי מופע:
gcloud run deploy --image IMAGE_URL --no-cpu-throttling
כדי להגדיר את החיוב לפי בקשות:
gcloud run deploy --image IMAGE_URL --cpu-throttling
מחליפים את IMAGE_URL בהפניה לקובץ האימג' בקונטיינר, לדוגמה, us-docker.pkg.dev/cloudrun/container/hello:latest. אם אתם משתמשים ב-Artifact Registry, המאגר REPO_NAME כבר צריך להיות קיים. כתובת ה-URL היא בפורמט LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
.
YAML
אם אתם יוצרים שירות חדש, דלגו על השלב הזה. אם אתם מעדכנים שירות קיים, מורידים את הגדרות ה-YAML שלו:
gcloud run services describe SERVICE --format export > service.yaml
מעדכנים את המאפיין
cpu:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: metadata: annotations: run.googleapis.com/cpu-throttling: 'BOOLEAN' name: REVISION
מחליפים את מה שכתוב בשדות הבאים:
- SERVICE: השם של שירות Cloud Run
- BOOLEAN: הערך
trueכדי להגדיר חיוב לפי בקשה, או הערךfalseכדי להגדיר חיוב לפי מכונה. -
REVISION: שם חדש לגרסה או מחיקה של השם (אם קיים). אם מספקים שם חדש לגרסה, חובה שהוא יעמוד בקריטריונים הבאים:- מתחיל ב-
SERVICE- - מכיל רק אותיות קטנות, מספרים ו-
- - לא מסתיים ב-
- - לא חורג מ-63 תווים
- מתחיל ב-
יוצרים או מעדכנים את השירות באמצעות הפקודה הבאה:
gcloud run services replace service.yaml
כברירת מחדל, הפקודה
gcloud run services replaceמשתמשת בקובץservice.yamlאם הוא קיים.
Terraform
כדי ללמוד איך להחיל הגדרות ב-Terraform או להסיר אותן, ראו פקודות בסיסיות ב-Terraform.
מוסיפים את השורות הבאות למשאבgoogle_cloud_run_v2_service בתצורת Terraform:הצגת הגדרות החיוב
כדי לראות את הגדרות החיוב הנוכחיות של שירות Cloud Run:
המסוף
נכנסים לדף Services של Cloud Run במסוף Cloud de Confiance by S3NS :
לוחצים על השירות כדי לפתוח את הדף פרטי השירות.
לוחצים על הכרטיסייה Scaling כדי למצוא את ההגדרה Billing.
gcloud
מריצים את הפקודה הבאה כדי להציג את הגדרות החיוב:
gcloud run services describe SERVICE --format=yaml
בפלט של YAML, מחפשים את ההגדרה
run.googleapis.com/cpu-throttling. הערךfalseמציין חיוב לפי מכונה, ואם ההגדרה הזו חסרה, החיוב הוא לפי בקשה.