התאמה אוטומטית של קבוצות צמתים לעומס

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

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

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

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

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

בתרשים הבא מוצג:

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

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

הגדלת או הקטנת מספר הצמתים בקבוצת הצמתים באמצעות Node group autoscaler.

מצבי Autoscaler

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

הרחבת הקיבולת והקטנת הקיבולת

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

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

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

הגדלת הקיבולת בלבד

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

חובה להשתמש במצב הזה אם קבוצות הצמתים מוגדרות עם מדיניות התחזוקה Migrate within node group.

טווח הגדלים של קבוצת צמתים

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

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

צריך לציין ערך לגודל המקסימלי של קבוצת הצמתים. הערך צריך להיות מספר שלם שגדול מ-0 או שווה לו, וקטן מ-100 או שווה לו. 100 הוא הגודל המקסימלי המותר לקבוצת שרתים לדייר יחיד (sole-tenant). בנוסף, הערך צריך להיות גדול מהערך המינימלי שצוין או שווה לו.

כדי להתאים לעומסי עבודה שעשויים לחרוג מהגודל המקסימלי של 100 לקבוצת צמתים, יוצרים כמה קבוצות צמתים עם תוויות שיוך תואמות, למשל, workload:in:my-autoscaled-node-groups. לאחר מכן, מתזמנים מכונות וירטואליות באמצעות תווית הקרבה הזו, ומפעילים את התכונה 'שינוי גודל אוטומטי' בכל קבוצה כדי ליצור קבוצה של קבוצות צמתים שמשנה את הגודל שלה באופן דינמי.

זמינות

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

לפני שמתחילים

  • אם עדיין לא עשיתם את זה, תצטרכו להגדיר אימות. אימות הוא תהליך שבו מאמתים את הזהות שלכם כדי לקבל גישה לממשקי API ולשירותים של Google Cloud . כדי להריץ קוד או דוגמאות מסביבת פיתוח מקומית, אפשר לבצע אימות ל-Compute Engine באחת מהדרכים הבאות:

    צריך לבחור את הכרטיסייה הרלוונטית לאופן שבו תכננתם להשתמש בדוגמאות בדף הזה:

    המסוף

    כשמשתמשים במסוף Google Cloud כדי לגשת לשירותים Google Cloud ולממשקי ה-API, לא צריך להגדיר אימות.

    gcloud

    1. התקינו את ה-CLI של Google Cloud. אחר כך, מאתחלים את ה-CLI של Google Cloud באמצעות הפקודה הבאה:

      gcloud init

      אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.

  • הגדרת אזור ותחום כברירת מחדל
  • REST

    כדי להשתמש בסביבת פיתוח מקומית בדוגמאות של API בארכיטקטורת REST שבדף הזה, צריך להשתמש בפרטי הכניסה שאתם נותנים ל-CLI של gcloud.

      התקינו את ה-CLI של Google Cloud.

      אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.

    מידע נוסף מופיע במאמר אימות לשימוש ב-REST במסמכי האימות של Google Cloud .

הפעלת קנה מידה אוטומטי של קבוצת הצמתים

הגדרת שינוי גודל אוטומטי בקבוצת צמתים חדשה.

gcloud

בדוגמה הבאה מוצג שימוש בפקודה node-groups create כדי להפעיל את קנה המידה האוטומטי כשיוצרים קבוצת צמתים. כדי להוסיף כלי לשינוי גודל אוטומטי לקבוצת צמתים קיימת, משתמשים בפקודה node-groups update.

gcloud compute sole-tenancy node-groups create group-name \
    --node-template template-name \
    --target-size size \
    --maintenance-policy maintenance-policy \
    --zone zone \
    --autoscaler-mode mode \
    --max-nodes max-nodes \
    --min-nodes min-nodes

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

  • ‫group-name: השם של קבוצת הצמתים שרוצים ליצור.
  • ‫template-name: השם של תבנית הצומת שממנה רוצים ליצור את קבוצת הצמתים.
  • ‫size: מספר הצמתים הראשוני היעד בקבוצת הצמתים.
  • ‫maintenance-policy: מציין אם המכונות הווירטואליות עוברות מיגרציה ואם הן מופעלות מחדש במהלך אירועי תחזוקה של המארח. מגדירים אותו לאחד מהערכים הבאים:
    • ‫default: המכונות הווירטואליות עוברות מיגרציה פעילה לצומת חדש.
    • ‫migrate-within-node-group: המכונות הווירטואליות עוברות מיגרציה פעילה לצומת אחר בקבוצת הצמתים.
    • ‫restart-in-place: המכונות הווירטואליות מופעלות מחדש באותו צומת אחרי שהן מסיימות את הפעולה בגלל אירוע תחזוקה.
  • ‫zone: האזור שבו יוצרים את קבוצת הצמתים.
  • ‫mode: מצב של קנה מידה אוטומטי בקבוצת הצמתים הזו. מגדירים לאחד מהערכים הבאים:
    • ‫off: משבית את שינוי הגודל האוטומטי.
    • ‫on: מאפשרת הגדלה והקטנה של הקיבולת.
    • ‫only-scale-out: מאפשר רק הגדלה אופקית. חובה להשתמש במצב הזה אם קבוצות הצמתים מוגדרות להפעלה מחדש של מכונות וירטואליות (VM) שמתארחות בהן בשרתים מינימליים.
  • ‫max-nodes: הגודל המקסימלי של קבוצת הצמתים. צריך להגדיר ערך שקטן מ-100 או שווה לו, וגדול מ-min-nodes או שווה לו.
  • ‫min-nodes: הגודל המינימלי של קבוצת הצמתים, והוא חייב להיות מספר שלם שקטן או שווה ל-max-nodes. ערך ברירת המחדל הוא 0.

REST

בדוגמה הבאה מוצג שימוש בפקודה nodeGroups.insert כדי להפעיל את קנה המידה האוטומטי כשיוצרים קבוצת צמתים. כדי להוסיף קנה מידה אוטומטי לקבוצת צמתים קיימת, משתמשים בפקודה nodeGroups.patch.

POST https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/nodeGroups?initialNodeCount=initial-node-count

  {
    "name": "group-name",
    "nodeTemplate": "template-name",
    "autoscalingPolicy": {
      "mode": "mode",
      "minNodes": min-nodes,
      "maxNodes": max-nodes
    },
    "maintenancePolicy": "maintenance-policy"
  }

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

  • ‫project-id: מזהה הפרויקט שאליו רוצים להוסיף קבוצת צמתים עם קנה מידה אוטומטי.
  • ‫zone: האזור שבו ייצור מאגר הצמתים החדש.
  • ‫initial-node-count: חובה כשיוצרים את קבוצת הצמתים. המאפיין הזה מציין את המספר הראשוני של הצמתים בקבוצת הצמתים. אם הערך של min-nodes גדול ממספר הצמתים ההתחלתי, גודל קבוצת הצמתים יוגדל לערך של min-nodes.
  • ‫group-name: השם של קבוצת הצמתים החדשה.
  • ‫template-name: השם של תבנית הצומת שממנה רוצים ליצור את קבוצת הצמתים.
  • ‫mode: מצב של קנה מידה אוטומטי בקבוצת הצמתים הזו. מגדירים את אחת מהאפשרויות הבאות:
    • ‫OFF: משבית את שינוי הגודל האוטומטי.
    • ‫ON: מאפשרת הגדלה והקטנה של הקיבולת.
    • ‫ONLY_SCALE_OUT: מאפשר רק הגדלה אופקית. חובה להשתמש במצב הזה אם קבוצות הצמתים מוגדרות להפעלה מחדש של מכונות וירטואליות (VM) שמתארחות בהן בשרתים מינימליים.
  • ‫max-nodes: הגודל המקסימלי של קבוצת הצמתים. צריך להגדיר ערך שקטן מ-100 או שווה לו, וגדול מ-min-nodes או שווה לו.
  • ‫min-nodes: הגודל המינימלי של קבוצת הצמתים, והוא חייב להיות מספר שלם שקטן או שווה ל-max-nodes. ערך ברירת המחדל הוא 0.
  • ‫maintenance-policy: מציין אם המכונות הווירטואליות עוברות מיגרציה ואם הן מופעלות מחדש במהלך אירועי תחזוקה של המארח. מגדירים את הערך הזה לאחד מהערכים הבאים:
    • ‫DEFAULT: המכונות הווירטואליות עוברות מיגרציה פעילה לצומת חדש.
    • ‫MIGRATE_WITHIN_NODE_GROUP: המכונות הווירטואליות עוברות מיגרציה פעילה לצומת אחר בקבוצת הצמתים.
    • ‫RESTART_IN_PLACE: המכונות הווירטואליות מופעלות מחדש באותו צומת אחרי שהן מסיימות את הפעולה בגלל אירוע תחזוקה.

עדכון ההגדרות של שינוי הגודל האוטומטי

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

gcloud

בדוגמה הבאה מוצג שימוש בפקודה node-groups update כדי לשנות את המצב של קנה המידה האוטומטי בקבוצת צמתים.

gcloud compute sole-tenancy node-groups update name \
    --autoscaler-mode mode \
    --max-nodes max-nodes \
    --min-nodes min-nodes

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

  • ‫name: שם קבוצת הצמתים שרוצים לשנות בה את מצב שינוי הגודל האוטומטי.
  • ‫mode: מצב של קנה מידה אוטומטי בקבוצת הצמתים הזו. מגדירים את אחת מהאפשרויות הבאות:
    • ‫off: משבית את שינוי הגודל האוטומטי.
    • ‫on: מאפשרת הגדלה והקטנה של הקיבולת.
    • ‫only-scale-out: מאפשר רק הגדלה אופקית. אתם צריכים להשתמש במצב הזה אם קבוצות הצמתים שלכם מוגדרות להפעלה מחדש של מכונות וירטואליות (VM) שמתארחות בהן בשרתים מינימליים.
  • ‫max-nodes: הגודל המקסימלי של קבוצת הצמתים. צריך להגדיר ערך שקטן מ-100 או שווה לו, וגדול מ-min-nodes או שווה לו.
  • ‫min-nodes: הגודל המינימלי של קבוצת הצמתים, והוא חייב להיות מספר שלם שקטן או שווה ל-max-nodes. ערך ברירת המחדל הוא 0.

REST

בדוגמה הבאה מוצג שימוש בפקודה nodeGroups.patch כדי לשנות את המצב של קנה מידה אוטומטי בקבוצת צמתים.

PATCH https://compute.googleapis.com/compute/beta/projects/project-id/zones/group-zone/nodeGroups/group-name

{
  "nodeTemplate": "template-name",
  "autoscalingPolicy": {
    "mode": "mode",
    "minNodes": min-nodes,
    "maxNodes": max-nodes
  }
}

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

  • ‫project-id: מזהה הפרויקט שמכיל את קבוצת הצמתים שרוצים לשנות את מצב ההתאמה האוטומטית שלה.
  • ‫group-zone: האזור שמכיל את קבוצת הצמתים שעבורה רוצים לשנות את מצב המידרוג האוטומטי.
  • ‫group-name: שם קבוצת הצמתים שרוצים לשנות את מצב הסקיילר האוטומטי שלה.
  • ‫template-name: השם של תבנית הצומת שממנה נוצרה קבוצת הצמתים.
  • ‫mode: מצב של קנה מידה אוטומטי בקבוצת הצמתים הזו. הגדרת אחת מהאפשרויות הבאות:

    • ‫OFF: משבית את שינוי הגודל האוטומטי.
    • ‫ON: מאפשרת הגדלה והקטנה של הקיבולת.

    • ‫ONLY_SCALE_OUT: מאפשר רק הגדלה אופקית. חובה להשתמש במצב הזה אם קבוצות הצמתים מוגדרות עם מדיניות התחזוקה העברה בתוך קבוצת הצמתים.

  • ‫max-nodes: הגודל המקסימלי של קבוצת הצמתים. צריך להגדיר ערך שקטן מ-100 או שווה לו, וגדול מ-min-nodes או שווה לו.

  • ‫min-nodes: הגודל המינימלי של קבוצת הצמתים, והוא חייב להיות מספר שלם שקטן או שווה ל-max-nodes. ערך ברירת המחדל הוא 0.

עדכון ידני של הגודל של קבוצות צמתים עם שינוי גודל אוטומטי

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

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

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

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

השבתת שינוי הגודל האוטומטי

אם אתם לא צריכים יותר להשתמש בשינוי הגודל האוטומטי כדי לנהל אוטומטית את הגדלים של קבוצות הצמתים, או אם אתם צריכים לנהל ידנית את הגדלים של קבוצות הצמתים, אתם יכולים להשבית את שינוי הגודל האוטומטי.

gcloud

gcloud compute sole-tenancy node-groups update name \
    --autoscaler-mode OFF

מחליפים את name בשם של קבוצת הצמתים שממנה רוצים להסיר את מדיניות שינוי הגודל האוטומטי.

REST

בדוגמה הבאה מוצג איך להשתמש בפקודה nodeGroups.patch כדי להשבית את קנה המידה האוטומטי בקבוצת צמתים.

PATCH https://compute.googleapis.com/compute/beta/projects/project-id/zones/group-zone/nodeGroups/group-name

{
  "nodeTemplate": "template-name",
  "autoscalingPolicy": {
    "mode": "mode"
  }
}

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

  • ‫project-id: מזהה הפרויקט שמכיל את קבוצת הצמתים שרוצים לשנות את מצב ההתאמה האוטומטית שלה.
  • ‫group-zone: האזור שמכיל את קבוצת הצמתים שעבורה רוצים לשנות את מצב המידרוג האוטומטי.
  • ‫group-name: שם קבוצת הצמתים שרוצים לשנות את מצב הסקיילר האוטומטי שלה.
  • ‫template-name: השם של תבנית הצומת שממנה נוצרה קבוצת הצמתים.
  • ‫mode: מצב של קנה מידה אוטומטי בקבוצת הצמתים הזו. מגדירים את הערך OFF כדי להשבית את המידרוג האוטומטי בקבוצת הצמתים הזו.

צפייה בפעילות של שינוי גודל אוטומטי

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

המסוף

  1. נכנסים לדף Sole-tenant nodes במסוף Google Cloud .

    מעבר לשרתים לדייר יחיד

  2. לוחצים על קבוצות צמתים.

  3. אפשר לראות את מספר הצמתים בכל קבוצת צמתים, ואם Compute Engine משנה את גודל קבוצת הצמתים, אפשר לראות גם את מספר הצמתים הרצוי.

המאמרים הבאים