התאמה אוטומטית לעומס (autoscaling) באשכול

בדף הזה מוסבר איך להגדיר התאמה אוטומטית לעומס באשכולות Standard של Google Kubernetes Engine‏ (GKE). מידע על אופן הפעולה של המידרוג האוטומטי של האשכול מופיע במאמר בנושא המידרוג האוטומטי של האשכול.

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

שימוש במידרוג האוטומטי של האשכול

בקטעים הבאים מוסבר איך להשתמש ב-Cluster Autoscaler.

יצירת אשכול עם התאמה אוטומטית לעומס

אפשר ליצור אשכול עם התאמה אוטומטית לעומס מופעלת באמצעות Google Cloud CLI או המסוף Google Cloud .

gcloud

כדי ליצור אשכול עם התאמה אוטומטית לעומס, משתמשים בדגל --enable-autoscaling ומציינים את --min-nodes ואת --max-nodes:

gcloud container clusters create CLUSTER_NAME \
    --enable-autoscaling \
    --num-nodes NUM_NODES \
    --min-nodes MIN_NODES \
    --max-nodes MAX_NODES \
    --location=CONTROL_PLANE_LOCATION

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

  • CLUSTER_NAME: השם של האשכול שרוצים ליצור.
  • NUM_NODES: מספר הצמתים שייווצרו בכל מיקום.
  • MIN_NODES: המספר המינימלי של הצמתים שניתן להגדיל או להקטין באופן אוטומטי עבור מאגר הצמתים שצוין בכל אזור. כדי לציין את המספר המינימלי של צמתים לכל מאגר הצמתים ב-GKE מגרסה 1.24 ואילך, משתמשים ב---total-min-nodes. הדגלים --total-min-nodes ו---total-max-nodes בלעדיים באופן הדדי לדגלים --min-nodes ו---max-nodes.
  • MAX_NODES: המספר המקסימלי של הצמתים שניתן להרחבה אוטומטית עבור מאגר הצמתים שצוין לכל אזור. כדי לציין את המספר המקסימלי של צמתים לכל מאגר הצמתים ב-GKE מגרסה 1.24 ואילך, משתמשים ב---total-max-nodes. הדגלים --total-min-nodes ו---total-max-nodes בלעדיים באופן הדדי לדגלים --min-nodes ו---max-nodes.
  • CONTROL_PLANE_LOCATION: המיקום של מישור הבקרה של האשכול ב-Compute Engine. מציינים אזור לאשכולות אזוריים או אזור זמין לאשכולות אזוריים.

דוגמה: יצירת אשכול עם התאמה אוטומטית לעומס (automatic scaling) של צמתים מופעלת וצמתים מינימליים ומקסימליים

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

gcloud container clusters create my-cluster --enable-autoscaling \
    --num-nodes=30 \
    --min-nodes=15 --max-nodes=50 \
    --location=us-central1

דוגמה: יצירת אשכול עם התאמה אוטומטית של צמתים לעומס (node autoscaling) ומספר כולל של צמתים

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

gcloud container clusters create my-cluster --enable-autoscaling \
    --num-nodes 10 \
    --location us-central1 \
    --total-min-nodes 10  --total-max-nodes 60

המסוף

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

  1. נכנסים לדף Create a Kubernetes cluster במסוף Google Cloud .

    מעבר אל יצירת אשכול Kubernetes

  2. מגדירים את האשכול לפי הצורך.

  3. בחלונית הניווט, בקטע Node Pools (מאגרי צמתים), לוחצים על default-pool (מאגר ברירת המחדל).

  4. מסמנים את תיבת הסימון הפעלת שינוי גודל אוטומטי.

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

  6. לוחצים על יצירה.

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

אפשר ליצור מאגר צמתים עם הפעלה של התאמה אוטומטית לעומס באמצעות ה-CLI של gcloud או המסוף Google Cloud .

gcloud

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

gcloud container node-pools create POOL_NAME \
    --cluster=CLUSTER_NAME \
    --enable-autoscaling \
    --min-nodes=MIN_NODES \
    --max-nodes=MAX_NODES \
    --location=CONTROL_PLANE_LOCATION

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

  • POOL_NAME: השם של מאגר הצמתים הרצוי.
  • CLUSTER_NAME: השם של האשכול שבו נוצר מאגר הצמתים.
  • MIN_NODES: המספר המינימלי של הצמתים שניתן להגדיל או להקטין באופן אוטומטי עבור מאגר הצמתים שצוין בכל אזור. כדי לציין את המספר המינימלי של צמתים לכל מאגר הצמתים ב-GKE מגרסה 1.24 ואילך, משתמשים ב---total-min-nodes. הדגלים --total-min-nodes ו---total-max-nodes בלעדיים באופן הדדי לדגלים --min-nodes ו---max-nodes.
  • MAX_NODES: המספר המקסימלי של הצמתים שניתן להרחבה אוטומטית עבור מאגר הצמתים שצוין לכל אזור. כדי לציין את המספר המקסימלי של צמתים לכל מאגר הצמתים ב-GKE מגרסה 1.24 ואילך, משתמשים ב---total-max-nodes. הדגלים --total-min-nodes ו---total-max-nodes בלעדיים באופן הדדי לדגלים --min-nodes ו---max-nodes.
  • CONTROL_PLANE_LOCATION: המיקום של מישור הבקרה של האשכול ב-Compute Engine. מציינים אזור לאשכולות אזוריים או אזור זמין לאשכולות אזוריים.

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

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

gcloud container node-pools create my-node-pool \
    --cluster my-cluster \
    --enable-autoscaling \
    --min-nodes 1 --max-nodes 5 \
    --location us-central1-c

המסוף

כדי להוסיף מאגר צמתים עם התאמה אוטומטית לעומס לאשכול קיים:

  1. נכנסים לדף Google Kubernetes Engine במסוף Google Cloud .

    מעבר אל Google Kubernetes Engine

  2. ברשימת האשכולות, לוחצים על שם האשכול שרוצים לשנות.

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

  4. לוחצים על Create user-managed node pool (יצירת מאגר צמתים בניהול המשתמש).

  5. מגדירים את מאגר הצמתים לפי הצורך.

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

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

  8. לוחצים על יצירה.

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

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

gcloud

כדי להפעיל התאמה אוטומטית לעומס (automatic scaling) של מאגר צמתים קיים, משתמשים בפקודה הבאה:

gcloud container clusters update CLUSTER_NAME \
    --enable-autoscaling \
    --node-pool=POOL_NAME \
    --min-nodes=MIN_NODES \
    --max-nodes=MAX_NODES \
    --location=CONTROL_PLANE_LOCATION

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

  • CLUSTER_NAME: השם של האשכול שרוצים לעדכן.
  • POOL_NAME: השם של מאגר הצמתים הרצוי. אם יש לכם רק מאגר צמתים אחד, צריך לציין את הערך default-pool.
  • MIN_NODES: המספר המינימלי של הצמתים שניתן להגדיל או להקטין באופן אוטומטי עבור מאגר הצמתים שצוין בכל אזור. כדי לציין את המספר המינימלי של צמתים לכל מאגר הצמתים ב-GKE מגרסה 1.24 ואילך, משתמשים ב---total-min-nodes. הדגלים --total-min-nodes ו---total-max-nodes בלעדיים באופן הדדי לדגלים --min-nodes ו---max-nodes.
  • MAX_NODES: המספר המקסימלי של הצמתים שניתן להרחבה אוטומטית עבור מאגר הצמתים שצוין לכל אזור. כדי לציין את המספר המקסימלי של צמתים לכל מאגר הצמתים ב-GKE מגרסה 1.24 ואילך, משתמשים ב---total-max-nodes. הדגלים --total-min-nodes ו---total-max-nodes בלעדיים באופן הדדי לדגלים --min-nodes ו---max-nodes.
  • CONTROL_PLANE_LOCATION: המיקום של מישור הבקרה של האשכול ב-Compute Engine. מציינים אזור לאשכולות אזוריים או אזור זמין לאשכולות אזוריים.

המסוף

כדי להפעיל התאמה אוטומטית לעומס (autoscaling) במאגר צמתים קיים:

  1. נכנסים לדף Google Kubernetes Engine במסוף Google Cloud .

    מעבר אל Google Kubernetes Engine

  2. ברשימת האשכולות, לוחצים על שם האשכול שרוצים לשנות.

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

  4. בקטע Node Pools (מאגרי צמתים), לוחצים על השם של מאגר הצמתים שרוצים לשנות ואז לוחצים על Edit (עריכה).

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

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

  7. לוחצים על Save.

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

כדי לוודא שהאשכול משתמש בהתאמת גודל אוטומטית, משתמשים ב-Google Cloud CLI או במסוף Google Cloud .

gcloud

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

gcloud container node-pools describe NODE_POOL_NAME --cluster=CLUSTER_NAME |grep autoscaling -A 1

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

  • NODE_POOL_NAME: השם של מאגר הצמתים החדש שבוחרים.
  • CLUSTER_NAME: שם האשכול.

אם ההרחבה האוטומטית מופעלת, הפלט דומה לזה:

autoscaling:
  enabled: true

המסוף

  1. נכנסים לדף Google Kubernetes Engine במסוף Google Cloud .

    מעבר אל Google Kubernetes Engine

  2. ברשימת האשכולות, לוחצים על שם האשכול שרוצים לאמת.

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

  4. בקטע Node Pools (מאגרי צמתים), בודקים את הסטטוס של מאגר הצמתים Autoscalling.

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

כשיוצרים מאגר צמתים, אפשר להשתמש בדגל --location-policy=ANY כדי להנחות את הכלי לשינוי גודל האשכול באופן אוטומטי לתת עדיפות לניצול של שריוני משאבים שלא נעשה בהם שימוש:

gcloud container node-pools create POOL_NAME \
    --cluster=CLUSTER_NAME \
    --location-policy=ANY

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

  • POOL_NAME: השם של מאגר הצמתים החדש שבוחרים.
  • CLUSTER_NAME: שם האשכול.

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

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

gcloud

כדי להשבית את שינוי הגודל האוטומטי של מאגר צמתים ספציפי, משתמשים בדגל --no-enable-autoscaling:

gcloud container clusters update CLUSTER_NAME \
    --no-enable-autoscaling \
    --node-pool=POOL_NAME \
    --location=CONTROL_PLANE_LOCATION

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

  • CLUSTER_NAME: השם של האשכול שרוצים לעדכן.
  • POOL_NAME: השם של מאגר הצמתים הרצוי.
  • CONTROL_PLANE_LOCATION: המיקום של מישור הבקרה של האשכול ב-Compute Engine. מציינים אזור לאשכולות אזוריים או אזור זמין לאשכולות אזוריים.

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

המסוף

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

  1. נכנסים לדף Google Kubernetes Engine במסוף Google Cloud .

    מעבר אל Google Kubernetes Engine

  2. ברשימת האשכולות, לוחצים על שם האשכול שרוצים לשנות.

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

  4. בקטע Node Pools (מאגרי צמתים), לוחצים על השם של מאגר הצמתים שרוצים לשנות ואז לוחצים על Edit (עריכה).

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

  6. לוחצים על Save.

שינוי הגודל של מאגר צמתים

בקטגוריות של צמתים שמופעלת בהן התאמה אוטומטית לעומס, הכלי להתאמה אוטומטית לעומס של אשכולות משנה משנה את הגודל של קטגוריות הצמתים באופן אוטומטי, במסגרת הגבולות שצוינו בערכים של הגודל המינימלי (--min-nodes) והגודל המקסימלי (--max-nodes), או של הגודל הכולל המינימלי (--total-min-nodes) והגודל הכולל המקסימלי (--total-max-nodes). אי אפשר להשתמש בשני סוגי הערכים האלה בו-זמנית. אי אפשר לשנות את הגודל של מאגר הצמתים באופן ידני על ידי שינוי הערכים האלה.

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

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

מניעת תזמון של Pods בצמתים נבחרים

אתם יכולים להשתמש ב-taints‏ startup או status כדי למנוע תזמון של Pods בצמתים נבחרים, בהתאם לתרחיש השימוש.

התכונה הזו זמינה ב-GKE בגרסה 1.28 ואילך.

הפעלת כתמים

משתמשים ב-startup taints כשיש פעולה שצריכה להסתיים לפני שניתן להפעיל Pods בצומת. לדוגמה, לא מפעילים את ה-Pods עד שהתקנת הדרייברים בצומת מסתיימת.

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

ההגדרות של taints בהפעלה מוגדרות ככל ה-taints עם הקידומת startup-taint.cluster-autoscaler.kubernetes.io/

הכתמות סטטוס

משתמשים ב-status taints כשלא רוצים ש-GKE ישתמש בצומת מסוים כדי להריץ Pods.

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

ההגדרה של taints של סטטוס היא כל ה-taints עם הקידומת status-taint.cluster-autoscaler.kubernetes.io/

התעלמות מכתמי רעל

התעלמות מהכתמים מוגדרת כהתעלמות מכל הכתמים עם הקידומת ignore-taint.cluster-autoscaler.kubernetes.io/

פתרון בעיות

הנחיות לפתרון בעיות זמינות בדפים הבאים:

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