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

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

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

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

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

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

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

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

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

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

מצבי מידרוג אוטומטי

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

סילומיות אופקית (scale out) וצמצום (scale in)

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

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

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

הגדלה בלבד

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

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

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

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

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

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

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

זמינות

אפשר להשתמש ב-sole-tenant node autoscaler רק באזורים שתומכים בצמתים של דייר יחיד.

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

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

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

    המסוף

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

    gcloud

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

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

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

      התקינו את ה-CLI של Google Cloud ואז היכנסו ל-CLI של gcloud באמצעות הזהות המאוחדת שלכם.

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

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

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

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: מאפשר רק הגדלה אופקית. חובה להשתמש במצב הזה אם קבוצות הצמתים מוגדרות להפעלה מחדש של מכונות וירטואליות שמתארחות בהן בשרתים מינימליים.
  • 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",
      "min_nodes": min-nodes,
      "max_nodes": 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: מאפשר רק הגדלה אופקית. חובה להשתמש במצב הזה אם קבוצות הצמתים מוגדרות להפעלה מחדש של מכונות וירטואליות שמתארחות בהן בשרתים מינימליים.
  • 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",
    "minSize": min-nodes,
    "maxSize": 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.

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

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

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

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

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

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

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

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 כדי להשבית את המידרוג האוטומטי בקבוצת הצמתים הזו.

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

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

המסוף

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

    כניסה לדף Sole-tenant nodes

  2. לוחצים על Node groups (קבוצות צמתים).

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

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