בדף הזה מוסבר איך להגדיר קנה מידה אוטומטי באשכולות Standard של Google Kubernetes Engine (GKE). מידע על אופן הפעולה של המידרוג האוטומטי של האשכול מופיע במאמר בנושא המידרוג האוטומטי של האשכול.
באשכולות Autopilot, אין צורך לדאוג להקצאת צמתים או לניהול מאגרי צמתים, כי מאגרי הצמתים מוקצים באופן אוטומטי באמצעות הקצאת צמתים אוטומטית (NAP), ומתבצעת התאמה אוטומטית לעומס (automatic scaling) כדי לעמוד בדרישות של עומסי העבודה.
שימוש במידרוג אוטומטי של אשכולות
בקטעים הבאים מוסבר איך להשתמש ב-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. מציינים אזור לאשכולות אזוריים או אזור זמין לאשכולות אזוריים.
דוגמה: יצירת אשכול עם התאמה אוטומטית לעומס של צמתים מופעל ומספר מינימלי ומקסימלי של צמתים
הפקודה הבאה יוצרת אשכול עם 90 צמתים, או 30 צמתים בכל אחד מ-3 האזורים שקיימים באזור. התאמה אוטומטית של מספר הצמתים מופעלת ומשנה את מספר הצמתים בהתאם לעומס האשכול. הכלי Cluster Autoscaler יכול להקטין את הגודל של מאגר הצמתים שמוגדר כברירת מחדל ל-15 צמתים או להגדיל את מאגר הצמתים למקסימום של 50 צמתים לכל אזור.
gcloud container clusters create my-cluster --enable-autoscaling \
--num-nodes=30 \
--min-nodes=15 --max-nodes=50 \
--location=us-central
דוגמה: יצירת אשכול עם התאמה אוטומטית לעומס של צמתים מופעל ומספר צמתים כולל
הפקודה הבאה יוצרת אשכול עם 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
המסוף
כדי ליצור אשכול חדש שבו מופעלת התאמה אוטומטית לעומס במאגר הצמתים שמוגדר כברירת מחדל:
נכנסים לדף Create a Kubernetes cluster במסוף Google Cloud .
מגדירים את האשכול לפי הצורך.
בחלונית הניווט, בקטע Node Pools (מאגרי צמתים), לוחצים על default-pool (מאגר ברירת המחדל).
מסמנים את התיבה הפעלת שינוי גודל אוטומטי.
משנים את הערכים בשדות מספר הצמתים המינימלי ומספר הצמתים המקסימלי לפי הצורך.
לוחצים על יצירה.
הוספת מאגר צמתים עם שינוי גודל אוטומטי
אפשר ליצור מאגר צמתים עם הפעלה של התאמה אוטומטית לעומס באמצעות ה-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
המסוף
כדי להוסיף מאגר צמתים עם שינוי גודל אוטומטי לאשכול קיים:
נכנסים לדף Google Kubernetes Engine במסוף Google Cloud .
ברשימת האשכולות, לוחצים על שם האשכול שרוצים לשנות.
לוחצים על add_box הוספת מאגר צמתים.
מגדירים את מאגר הצמתים לפי הצורך.
בקטע גודל, מסמנים את תיבת הסימון הפעלת שינוי גודל אוטומטי.
משנים את הערכים בשדות מספר הצמתים המינימלי ומספר הצמתים המקסימלי לפי הצורך.
לוחצים על יצירה.
הפעלת שינוי גודל אוטומטי למאגר צמתים קיים
אפשר להפעיל התאמה אוטומטית לעומס של מאגר צמתים קיים באמצעות ה-CLI של gcloud או המסוף 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) במאגר צמתים קיים:
נכנסים לדף Google Kubernetes Engine במסוף Google Cloud .
ברשימת האשכולות, לוחצים על שם האשכול שרוצים לשנות.
לוחצים על הכרטיסייה Nodes.
בקטע Node Pools (מאגרי צמתים), לוחצים על השם של מאגר הצמתים שרוצים לשנות ואז לוחצים על edit Edit (עריכה).
בקטע גודל, מסמנים את תיבת הסימון הפעלת שינוי גודל אוטומטי.
משנים את הערכים בשדות מספר הצמתים המינימלי ומספר הצמתים המקסימלי לפי הצורך.
לוחצים על Save.
אימות שהתאמה אוטומטית לעומס של מאגר הצמתים הקיים מופעלת
כדי לוודא שהאשכול משתמש בהתאמה אוטומטית לעומס, משתמשים ב-Google Cloud CLI או במסוף Google Cloud .
gcloud
מתארים את מאגרי הצמתים באשכול:
gcloud container node-pools describe NODE_POOL_NAME --cluster=CLUSTER_NAME |grep autoscaling -A 1
מחליפים את מה שכתוב בשדות הבאים:
-
POOL_NAME: השם של מאגר הצמתים החדש שבוחרים. -
CLUSTER_NAME: שם האשכול.
אם ההתאמה האוטומטית לעומס מופעלת, הפלט דומה לזה:
autoscaling:
enabled: true
המסוף
נכנסים לדף Google Kubernetes Engine במסוף Google Cloud .
ברשימת האשכולות, לוחצים על שם האשכול שרוצים לאמת.
לוחצים על הכרטיסייה Nodes.
בקטע 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
כדי להשבית את התאמה אוטומטית לעומס (automatic scaling) של מאגר צמתים ספציפי, משתמשים בדגל --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. מציינים אזור לאשכולות אזוריים או אזור זמין לאשכולות אזוריים.
גודל האשכול קבוע לפי גודל ברירת המחדל הנוכחי של מאגר הצמתים באשכול, שאפשר לעדכן אותו באופן ידני.
המסוף
כדי להשבית את ההתאמה האוטומטית לעומס של מאגר צמתים ספציפי:
נכנסים לדף Google Kubernetes Engine במסוף Google Cloud .
ברשימת האשכולות, לוחצים על שם האשכול שרוצים לשנות.
לוחצים על הכרטיסייה Nodes.
בקטע Node Pools (מאגרי צמתים), לוחצים על השם של מאגר הצמתים שרוצים לשנות ואז לוחצים על edit Edit (עריכה).
בקטע גודל, מבטלים את הסימון בתיבה הפעלת שינוי גודל אוטומטי.
לוחצים על Save.
שינוי הגודל של מאגר צמתים
באשכולות עם מידרוג אוטומטי מופעל, המידרוג האוטומטי של האשכול משנה באופן אוטומטי את הגודל של מאגרי הצמתים במסגרת הגבולות שצוינו בערכים של הגודל המינימלי (--min-nodes) והגודל המקסימלי (--max-nodes), או הגודל הכולל המינימלי (--total-min-nodes) והגודל הכולל המקסימלי (--total-max-nodes). אי אפשר להשתמש בשני סוגי הערכים האלה בו-זמנית. אי אפשר לשנות את הגודל של מאגר הצמתים באופן ידני על ידי שינוי הערכים האלה.
אם רוצים לשנות את הגודל של מאגר צמתים באשכול שמופעל בו התאמה אוטומטית לעומס, צריך לבצע את הפעולות הבאות:
- השבתת התאמה אוטומטית לעומס במאגר הצמתים.
- שינוי הגודל של האשכול באופן ידני.
- מפעילים מחדש את ההתאמה האוטומטית לעומס ומציינים את הגודל המינימלי והמקסימלי של מאגר הצמתים.
מניעת תזמון של 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 taints כאל צמתים מוכנים, אבל מתעלם מהם במהלך לוגיקת ההגדלה. למרות שהצומת המזוהם מוכן, לא אמורים להפעיל בו אף Pod. אם הפודים צריכים יותר משאבים, מערכת GKE מגדילה את האשכול ומתעלמת מהצמתים המזוהמים.
ההגדרה של taints של סטטוס היא כל ה-taints עם הקידומת status-taint.cluster-autoscaler.kubernetes.io/
התעלמות מהכתמים
ההגדרה של taints שצריך להתעלם מהם היא כל ה-taints עם הקידומת ignore-taint.cluster-autoscaler.kubernetes.io/
פתרון בעיות
הנחיות לפתרון בעיות מופיעות בדפים הבאים:
- פתרון בעיות שקשורות להפחתה בהתאם לעומס של מידרוג אוטומטי באשכול
- פתרון בעיות שקשורות למידרוג אוטומטי של אשכולות שלא מתרחב.
המאמרים הבאים
- מידע נוסף על מידרוג אוטומטי של אשכולות
- סקירה כללית על יצירה אוטומטית של מאגר צמתים
- איך מגדירים יצירה אוטומטית של מאגר צמתים
- מידע נוסף על נראות של מידרוג אוטומטי של אשכולות
- איך משנים את הגודל של אשכול