מידע על מידרוג אוטומטי של אשכולות
במאמר הזה מוסבר על מידרוג אוטומטי של אשכולות, ששולט באופן אוטומטי בגודל של מאגרי הצמתים. התכונה 'מידרוג אוטומטי של אשכולות' מופעלת כשמציינים ערכים מינימליים ומקסימליים למספר הצמתים במאגר הצמתים. מציינים את הערכים האלה כשיוצרים מאגר צמתים או מעדכנים מאגר צמתים.
GKE ב-Azure משתמש בכלי להתאמה אוטומטית של אשכולות Kubernetes בקוד פתוח.
שינוי אוטומטי של גודל מאגר צמתים
המידרוג האוטומטי של האשכול משנה באופן אוטומטי את מספר הצמתים במאגר צמתים נתון, בהתאם לדרישות של עומסי העבודה. אין צורך להוסיף או להסיר צמתים באופן ידני או להקצות יותר מדי משאבים למאגרי הצמתים. במקום זאת, מציינים גודל מינימלי ומקסימלי למאגר הצמתים, והשאר אוטומטי.
אם צריך למחוק או להעביר משאבים בזמן התאמה אוטומטית לעומס של האשכול, יכול להיות שיהיו שיבושים זמניים בעומסי העבודה. לדוגמה, אם עומס העבודה שלכם מורכב מבקר עם רפליקה יחידה, יכול להיות שה-Pod של הרפליקה הזו יתוזמן מחדש לצומת אחר אם הצומת הנוכחי שלו יימחק. לכן, צריך לתכנן את עומסי העבודה כך שיוכלו להתמודד עם שיבושים פוטנציאליים, או לוודא שלא יהיו הפרעות לפודים קריטיים.
איך פועל המידרוג האוטומטי של האשכול
המידרוג האוטומטי של האשכול פועל על בסיס מאגר צמתים. כשמשתמשים ב-cluster autoscaler כדי להגדיר מאגר צמתים, מציינים גודל מינימלי ומקסימלי למאגר הצמתים. אפשר לשנות את הגודל המינימלי והמקסימלי כשיוצרים מאגר צמתים או כשמעדכנים מאגר צמתים.
המידרוג האוטומטי של אשכולות מגדיל או מקטין את הגודל של מאגר הצמתים באופן אוטומטי, על סמך בקשות המשאבים (ולא על סמך ניצול המשאבים בפועל) במאגר הצמתים הזה. המידרוג האוטומטי של אשכולות מוסיף צמתים אם אי אפשר לתזמן אובייקטים של Pod ואין מספיק קיבולת במאגר הצמתים כדי לעמוד בדרישות.
המידרוג האוטומטי של האשכול גם מסיר צמתים אם לא נעשה בהם שימוש מספיק, ואפשר לתזמן את כל אובייקטי ה-Pod במספר קטן יותר של צמתים. אם לא ניתן לנקז את הצומת בצורה תקינה אחרי 10 דקות, הצומת מסתיים בכפייה. אי אפשר להגדיר את התקופה הזו.
אם Pod מבקש מעט מדי משאבים (לדוגמה, אם ערכי ברירת המחדל לא מספיקים), המידרוג האוטומטי באשכול לא יתקן את המצב. כדי לוודא שהמידרוג האוטומטי של האשכול פועל בצורה מדויקת ככל האפשר, צריך ליצור בקשות מתאימות למשאבים עבור כל עומסי העבודה. מידע נוסף זמין במאמר בנושא ניהול משאבים עבור מאגרי תגים.
הערות של Pod והתנהגות של מידרוג אוטומטי של אשכול
המידרוג האוטומטי באשכול מתחשב בהערות מסוימות של Pod כשמתקבלות החלטות לגבי מידרוג. לדוגמה, התוסף cluster autoscaler תומך בהערות של Pod כמו "cluster-autoscaler.kubernetes.io/safe-to-evict": "false". ההערה הזו, כשהיא מוגדרת כ-false, מונעת את ההסרה של הצומת שמארח את ה-Pod במהלך אירוע של הקטנת קנה מידה. הבנה של ההערות האלה והשימוש בהן יכולים לעזור לכם לכוונן את ההתנהגות של הכלי לשינוי גודל אוטומטי כדי לעמוד בדרישות של עומס העבודה.
למידע נוסף על הערות של Pod וההשפעות שלהן על מידרוג אוטומטי של האשכול, אפשר לעיין במקורות המידע הבאים:
- אילו סוגים של pods יכולים למנוע מ-CA להסיר צומת? במאמר בנושא שאלות נפוצות לגבי שינוי גודל אוטומטי של אשכולות.
- מאמרים רשמיים בנושא Cluster Autoscaler של Kubernetes
קריטריוני הפעלה
המידרוג האוטומטי של האשכול מניח את ההנחות הבאות כשמשנים את הגודל של מאגר צמתים:
- אפשר להפעיל מחדש את כל אובייקטי ה-Pod המשוכפלים בצומת אחר, מה שעלול לגרום לשיבוש קצר. אם עומס העבודה לא יכול לסבול שיבושים, צריך להגדיר את עומס העבודה כך שיפעל במאגר צמתים עם השבתה של שינוי גודל אוטומטי. מידע נוסף זמין במאמר שליטה בתזמון באמצעות כתמי צבע של צמתים.
- המידרוג האוטומטי של האשכול יכול לבטל פעולות ידניות לניהול צמתים שאתם מבצעים.
- לכל הצמתים במאגר צמתים יחיד יש את אותו סט של תוויות.
- המידרוג האוטומטי של אשכולות בוחר קבוצת צמתים עם הכי פחות מעבד במצב סרק או זיכרון לא בשימוש אחרי הגדלת הקיבולת. ההתנהגות הזו משפיעה על מאגרי הצמתים שמתרחבים אם יש לכם צמתים בגדלים שונים (לדוגמה, צמתים עם מעבד חזק או צמתים עם זיכרון גדול) באותו אשכול.
גודל מינימלי ומקסימלי של מאגר צמתים
אפשר לציין את הגודל המינימלי והמקסימלי של כל מאגר צמתים באשכול באמצעות הדגלים min-nodes ו-max-nodes. כדי להשבית את שינוי הגודל האוטומטי, מגדירים את min-nodes ואת max-nodes לאותו מספר. המידרוג האוטומטי של האשכול מקבל החלטות לגבי שינוי הגודל במסגרת הגבולות האלה.
כשמגדירים את הגודל המקסימלי של מאגרי הצמתים, צריך לוודא שהוא גדול מספיק כדי להריץ את כל עומסי העבודה. אם במאגרי הצמתים באשכול אין מספיק זיכרון ומעבד (CPU) כדי להריץ את כל עומסי העבודה, יכול להיות שיהיו הפסקות בשירות.
שימוש ב-PodDisruptionBudget כדי להגן על עומסי עבודה
אתם יכולים להגדיר את GKE ב-Azure כדי להגן מפני שיבושים בעומסי עבודה באמצעות PodDisruptionBudget. כשיוצרים PodDisruptionBudget, מציינים את המספר המינימלי של העתקים של Pod שצריכים להיות זמינים, או את המספר המקסימלי של העתקים של Pod שלא יכולים להיות זמינים בכל זמן נתון. מידע נוסף זמין במאמר בנושא הגדרת תקציב שיבושים לאפליקציה.
מידע נוסף
מידע נוסף על המידרוג האוטומטי של האשכולות ועל מניעת שיבושים זמין במקורות המידע הבאים:
- שאלות נפוצות בנושא מידרוג אוטומטי של אשכול Kubernetes
- איך מצמצמים את מספר הליבות?
- האם Cluster Autoscaler פועל עם
PodDisruptionBudgetבהקטנת קנה מידה?