הגדרות חיוב לשירותים

בדף הזה מתוארות הגדרות החיוב בהנחה שאתם משתמשים בהתנהגות ברירת המחדל של התאמה לעומס (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 Build.

רשימה של תפקידים והרשאות ב-IAM שמשויכים ל-Cloud Run מופיעה במאמרים תפקידי IAM ב-Cloud Run והרשאות IAM ב-Cloud Run. אם שירות Cloud Run שלכם מתקשר עםCloud de Confiance ממשקי API, כמו ספריות לקוח ב-Cloud, כדאי לעיין במדריך להגדרת זהות שירות. מידע נוסף על הקצאת תפקידים זמין במאמרים הרשאות פריסה וניהול הגישה.

הגדרה ועדכון של החיוב

כל שינוי בהגדרות יוצר גרסה חדשה. גם גרסאות עתידיות יקבלו את הגדרת התצורה הזו באופן אוטומטי, אלא אם תבצעו עדכונים מפורשים כדי לשנות אותה.

אם בוחרים בחיוב לפי מכונה, צריך לציין לפחות 512MiB של זיכרון.

אפשר לשנות את הגדרת החיוב באמצעות מסוף Cloud de Confiance , ה-CLI של gcloud או קובץ YAML כשיוצרים שירות חדש או פורסים עדכון חדש:

המסוף

  1. נכנסים ל-Cloud Run במסוף Cloud de Confiance by S3NS :

    כניסה ל-Cloud Run

  2. בתפריט הניווט של Cloud Run, בוחרים באפשרות Services ולוחצים על Deploy container כדי להגדיר שירות חדש. אם אתם מגדירים שירות קיים, לוחצים על השירות.

  3. אם אתם מגדירים שירות חדש, מלאו את דף הגדרות השירות הראשוניות.

  4. אם אתם מגדירים שירות קיים, לוחצים על הכרטיסייה Scaling.

  5. בקטע חיוב, בוחרים באפשרות על בסיס בקשות כדי שהחיוב על המופעים יתבצע רק במהלך עיבוד הבקשות, או באפשרות על בסיס מופעים כדי שהחיוב על המופעים יתבצע למשך כל משך החיים של המופעים.

  6. כדי ליצור שירות חדש, לוחצים על יצירה. לוחצים על 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

  1. אם אתם יוצרים שירות חדש, דלגו על השלב הזה. אם אתם מעדכנים שירות קיים, מורידים את הגדרות ה-YAML שלו:

    gcloud run services describe SERVICE --format export > service.yaml
  2. מעדכנים את המאפיין 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 תווים
  3. יוצרים או מעדכנים את השירות באמצעות הפקודה הבאה:

    gcloud run services replace service.yaml

    כברירת מחדל, הפקודה gcloud run services replace משתמשת בקובץ service.yaml אם הוא קיים.

Terraform

כדי ללמוד איך להחיל הגדרות ב-Terraform או להסיר אותן, ראו פקודות בסיסיות ב-Terraform.

מוסיפים את השורות הבאות למשאב google_cloud_run_v2_service בתצורת Terraform:

resource "google_cloud_run_v2_service" "default" {
  name     = "cloudrun-service-cpu-allocation"
  location = "us-central1"

  deletion_protection = false # set to "true" in production

  template {
    containers {
      image = "us-docker.pkg.dev/cloudrun/container/hello"
      resources {
        # If true, garbage-collect CPU when once a request finishes
        cpu_idle = false
      }
    }
  }
}

הצגת הגדרות החיוב

כדי לראות את הגדרות החיוב הנוכחיות של שירות Cloud Run:

המסוף

  1. נכנסים לדף Services של Cloud Run במסוף Cloud de Confiance by S3NS :

    כניסה ל-Cloud Run

  2. לוחצים על השירות כדי לפתוח את הדף פרטי השירות.

  3. לוחצים על הכרטיסייה Scaling כדי למצוא את ההגדרה Billing.

gcloud

  1. מריצים את הפקודה הבאה כדי להציג את הגדרות החיוב:

    gcloud run services describe SERVICE --format=yaml
  2. בפלט של YAML, מחפשים את ההגדרה run.googleapis.com/cpu-throttling. הערך false מציין חיוב לפי מכונה, ואם ההגדרה הזו חסרה, החיוב הוא לפי בקשה.