הגדרת מספר מופעים מקסימלי לשירותים

בדף הזה מוסבר איך להגדיר את המספר המקסימלי של מכונות שאפשר להשתמש בהן בשירות Cloud Run, באמצעות התנהגות ברירת המחדל של התאמה אוטומטית לעומס (automatic scaling) ב-Cloud Run. כדי לשנות את קנה המידה של השירות באופן ידני, קראו את המאמר שינוי קנה מידה באופן ידני.

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

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

למידע נוסף על המגבלות המקסימליות של מכונות שעשויות לחול על השירות שלכם, עיינו במאמר מגבלות מקסימליות של מכונות.

למידע נוסף על האופן שבו Cloud Run מבצע התאמה אוטומטית לעומס של מכונות קונטיינרים, קראו את המאמר התאמה אוטומטית לעומס של מכונות.

החלת מספר המופעים המקסימלי ברמת השירות לעומת רמת הגרסה

אפשר להגדיר את מספר המכונות המקסימלי ברמת השירות או ברמת הגרסה. ‫Google ממליצה להשתמש במספר המקסימלי של מכונות ברמת השירות כדי להגביל את מספר המכונות של שירות, אלא אם יש לכם צורך ספציפי להגביל את המכונות ברמת הגרסה. כברירת מחדל, Cloud Run מגדיר 100 מכונות לכל גרסה. כדי לאפשר לשירות להתרחב ליותר מכונות, צריך לשנות את הערך הזה.

כשמחילים את המספר המקסימלי של מכשירים, ההגדרות נכנסות לתוקף באופן הבא:

  • רמת השירות: מיידית
  • ברמת הגרסה: כשפורסים את הגרסה

גרסאות מתויגות ומספר המופעים המקסימלי ברמת השירות

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

התפקידים הנדרשים

כדי לקבל את ההרשאות שנדרשות להגדרה ולפריסה של שירותי Cloud Run, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים:

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

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

שיקולי עלות

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

למידע נוסף, אפשר לעיין בתמחור של Cloud Run או להעריך את העלויות באמצעות מחשבון עלויות. לכלים נוספים לבקרת עלויות, ראו מכסות להקצאת משאבים או תקציבים והתראות לחיוב.

הגדרת המספר המקסימלי של מכונות ברמת השירות

אפשר לשנות את ההגדרה של מספר המכונות המקסימלי באמצעות מסוף Google Cloud ,‏ Google Cloud CLI,‏ YAML או Terraform כשיוצרים שירות חדש או פורסים גרסה חדשה.

המסוף

  1. נכנסים ל-Cloud Run במסוף Google Cloud :

    כניסה ל-Cloud Run

  2. בתפריט הניווט של Cloud Run, לוחצים על Services:

    1. אם אתם מגדירים שירות חדש, לוחצים על Deploy container וממלאים את דף הגדרות השירות הראשוני.

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

  3. בקטע Service scaling, מאתרים את השדה Maximum number of instances ומציינים את המספר המקסימלי הנדרש של מכונות קונטיינר, באמצעות ערך של מספר שלם מ-1 ועד המגבלה המקסימלית האפשרית לשירות. כדי להסיר את המגבלה ברמת השירות, מוחקים את הערך שהגדרתם. הפעולה הזו מחזירה את ההגדרה לברירת המחדל שלה.

  4. כדי ליצור שירות חדש, לוחצים על יצירה. לוחצים על View diff & redeploy ואז על Deploy changes בשירות קיים.

gcloud

כדי לעדכן את המספר המקסימלי של המכונות בשירות מסוים, משתמשים בפקודה הבאה:

gcloud run services update SERVICE --max MAX-VALUE

מחליפים את מה שכתוב בשדות הבאים:

  • ‫SERVICE: שם השירות.
  • ‫MAX-VALUE: המספר המקסימלי הנדרש של מכונות קונטיינר, באמצעות כל ערך של מספר שלם מ-1 עד המגבלה המקסימלית האפשרית לשירות. כדי להסיר את המגבלה ברמת השירות, מוחקים את הערך שהגדרתם. הפעולה הזו מחזירה את ההגדרה לברירת המחדל שלה.

אפשר גם להגדיר את המספר המקסימלי של המכונות במהלך הפריסה באמצעות הפקודה הבאה:

gcloud run deploy --image IMAGE_URL --max MAX-VALUE

מחליפים את מה שכתוב בשדות הבאים:

  • ‫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.
  • ‫MAX-VALUE: המספר המקסימלי הנדרש של מכונות קונטיינר, באמצעות כל ערך של מספר שלם מ-1 עד המגבלה המקסימלית.

YAML

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

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

    gcloud run services describe SERVICE --format export > service.yaml
  2. מעדכנים את המאפיין run.googleapis.com/maxScale::

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
      annotations:
        run.googleapis.com/maxScale: 'MAX-INSTANCE'

    מחליפים את מה שכתוב בשדות הבאים:

    • ‫SERVICE: השם של שירות Cloud Run
    • ‫MAX-INSTANCE: המספר המקסימלי הנדרש של מכונות קונטיינר, באמצעות כל ערך של מספר שלם מ-1 עד המגבלה המקסימלית האפשרית לשירות. כדי להסיר את המגבלה ברמת השירות, מוחקים את הערך שהגדרתם. הפעולה הזו מחזירה את ההגדרה לברירת המחדל שלה.
  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     = "SERVICE"
location = "REGION"

scaling {
  max_instance_count = MAX_INSTANCE
}

template {
  containers {
    image = "IMAGE_URL"
  }
}
}

מחליפים את מה שכתוב בשדות הבאים:

  • ‫SERVICE: השם של שירות Cloud Run.
  • ‫REGION: האזור ב- Google Cloud . לדוגמה: europe-west1.
  • ‫MAX_INSTANCE: המספר המקסימלי הנדרש של מכונות קונטיינר, באמצעות כל ערך של מספר שלם מ-1 עד המגבלה המקסימלית.
  • ‫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

הצגת המספר המקסימלי של מכונות ברמת השירות

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

המסוף

  1. נכנסים לדף Services של Cloud Run במסוף Google Cloud :

    כניסה ל-Cloud Run

  2. לוחצים על השירות כדי לפתוח את החלונית Service details.

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

gcloud

  1. משתמשים בפקודה הבאה:

    gcloud run services describe SERVICE
  2. מאתרים את הערך של Scaling: Auto (Min: MIN_VALUE, Max: MAX_VALUE) בהגדרות שמוחזרות.

הגדרת המספר המקסימלי של מכונות ברמת הגרסה

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

כברירת מחדל, הגרסאות של Cloud Run מוגדרות להתאמה לעומס (scaling) עד למקסימום של 100 מכונות.

אפשר לשנות את קנה המידה ברמת הגרסה רק בשירותים שבהם התכונה הוגדרה בעבר.

המסוף

  1. נכנסים ל-Cloud Run במסוף Google Cloud :

    כניסה ל-Cloud Run

  2. בתפריט הניווט של Cloud Run, לוחצים על Services:

    1. אם אתם מגדירים שירות חדש, לוחצים על Deploy container וממלאים את דף הגדרות השירות הראשוני. לאחר מכן לוחצים על Containers, Networking, Security כדי להרחיב את דף הגדרת השירות.

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

  3. בקטע Revision scaling, מציינים את המספר המקסימלי של מכונות קונטיינר בשדה Maximum number of instances.

  4. כדי ליצור שירות חדש, לוחצים על יצירה. לוחצים על View diff & redeploy ואז על Deploy changes בשירות קיים.

gcloud

כדי לעדכן את המספר המקסימלי של המכונות בשירות מסוים, משתמשים בפקודה הבאה:

gcloud run services update SERVICE --max-instances MAX-VALUE

מחליפים את מה שכתוב בשדות הבאים:

  • ‫SERVICE: שם השירות.
  • ‫MAX-VALUE: המספר המקסימלי הנדרש של מכונות קונטיינרים, באמצעות כל ערך של מספר שלם מ-1 עד המגבלה המקסימלית.

YAML

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

    gcloud run services describe SERVICE --format export > service.yaml
  2. מעדכנים את המאפיין autoscaling.knative.dev/maxScale::

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        metadata:
          annotations:
            autoscaling.knative.dev/maxScale: 'MAX-INSTANCE'
          name: REVISION

    מחליפים את מה שכתוב בשדות הבאים:

    • ‫SERVICE: השם של שירות Cloud Run
    • ‫MAX-INSTANCE: המספר המקסימלי הנדרש של מכונות קונטיינר, באמצעות כל ערך של מספר שלם מ-1 עד המגבלה המקסימלית.
    • ‫REVISION: שם גרסה חדש או מחיקה של השם (אם הוא קיים). אם אתם מספקים שם חדש לגרסה, הוא חייב לעמוד בקריטריונים הבאים:
      • מתחיל ב-SERVICE-
      • מכיל רק אותיות קטנות, מספרים ו--
      • לא מסתיים ב--
      • לא חורג מ-63 תווים
  3. יוצרים או מעדכנים את השירות באמצעות הפקודה הבאה:

    gcloud run services replace service.yaml

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

הצגת ההגדרות של מספר המכונות המקסימלי ברמת הגרסה

אפשר לשנות את קנה המידה ברמת הגרסה רק בשירותים שבהם התכונה הוגדרה בעבר.

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

המסוף

  1. נכנסים לדף Services של Cloud Run במסוף Google Cloud :

    כניסה ל-Cloud Run

  2. לוחצים על השירות כדי לפתוח את החלונית Service details.

  3. לוחצים על הכרטיסייה Scaling.

  4. בקטע Revision scaling, בודקים את הערך של Maximum number of instances.

gcloud

  1. משתמשים בפקודה הבאה:

    gcloud run services describe SERVICE
  2. מאתרים את הערך של Max instances:‎ בהגדרות שמוחזרות.

שימוש במספר מינימלי או מקסימלי של מכונות ברמת השירות וברמת הגרסה

בטבלה הבאה מוצגת ההתנהגות אם משלבים מספר מקסימלי של מכונות ברמת השירות עם מספר מינימלי או מקסימלי של מכונות ברמת הגרסה:

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

שימוש במספר המקסימלי של מכונות ברמת השירות עם חלוקת תנועה

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

הגדרה לדוגמה ההתנהגות שמתקבלת
מספר המופעים המקסימלי שהוגדר ברמת השירות (תרחיש שבו אין הגדרות ברמת הגרסה): 100
  • חלוקת התנועה לגרסה א': 10%
  • חלוקת התנועה לגרסה ב': 10%
  • חלוקת התנועה לגרסה ג': 80%
חלק מהמספר המקסימלי של המכונות ברמת השירות מוקצה לכל גרסה. המספר המקסימלי של המכונות בפועל לכל גרסה קבוע על סמך חלוקת התנועה. מספר המכונות המקסימלי לגרסה א' הוא 10, לגרסה ב' הוא 10 ולגרסה ג' הוא 80.