מידע על מאזני עומסים מבוססי-ניצול לשירותי GKE

בדף הזה מוצג איזון עומסים מבוסס-שימוש בשירותי Google Kubernetes Engine ‏ (GKE). איזון העומסים הזה מעריך את השימוש במשאבים של ה-Pods בעורף המערכת, ומשתמש בקיבולת בפועל של עומס העבודה כדי לאזן מחדש את התעבורה בצורה חכמה, וכך לשפר את הזמינות של האפליקציה ואת הגמישות של הניתוב.

הדף הזה מיועד למומחי Cloud Architect ולמומחי רשתות שמנהלים שירותים ב-GKE ורוצים לבצע אופטימיזציה של חלוקת התעבורה על סמך ניצול המשאבים בזמן אמת.

לפני שקוראים את הדף הזה, חשוב לוודא שמכירים את המושגים הבאים:

סקירה כללית

תשתית Cloud Load Balancing מנתבת תנועה לשירותי GKE על סמך מדדי נגישות סטנדרטיים – כולל HTTP,‏ HTTPS,‏ HTTP/2 ו-gRPC – שקובעים את תקינות הפוד והזכאות שלו. כברירת מחדל, הוא מעביר את התעבורה לכל קבוצות ה-Pod של ה-Backend שפועלות בצורה תקינה, תוך התחשבות בזמינות של קבוצות ה-Pod ובמדיניות חלוקת התעבורה שהוגדרה (אם הוגדרה), כמו GCPTrafficDistributionPolicy.

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

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

תכונות ויתרונות

איזון עומסים על סמך ניצול מספק את היתרונות הבאים:

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

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

איך פועל איזון עומסים מבוסס-ניצול

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

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

  • מתוך האשכול (תנועה ממזרח למערב): האשכול מקבל זרימות תנועה בין חלקים שונים של האפליקציה, משירותים אחרים באשכול GKE או בין כמה אשכולות. זרימת התנועה הפנימית הזו נקראת תנועת מזרח-מערב.

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

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

  2. אתם מגדירים את שירות GKE כך שישתמש בניצול משאבים, כמו CPU, כמדד מרכזי לאיזון עומסים.

    בנוסף למדד ברירת המחדל של ניצול משאבי ה-CPU, אפשר לחשוף מדדים מותאמים אישית מהאפליקציה לשימוש מאזן העומסים. שימוש במדדים מהאפליקציה מאפשר לכם להגדיר אותות משלכם שספציפיים לעומס העבודה. לדוגמה, אפשר להשתמש ב-gpu_cache_usage_perc metric מעומס עבודה של vLLM כדי לעזור למאזן העומסים להפנות תנועה לאזור עם יותר משאבים זמינים. מידע נוסף על חשיפת מדדים מותאמים אישית למאזני עומסים

  3. סוכן GKE מיוחד עוקב באופן רציף אחרי השימוש במשאבי ה-Pods (לדוגמה, CPU) ושולח את הנתונים האלה לתשתית של Cloud Load Balancing באופן קבוע. אם יש כמה קונטיינרים ב-Pod, הסוכן מחשב את השימוש המשולב שלהם.

  4. תשתית Cloud Load Balancing מנתחת נתוני ניצול בזמן אמת כדי לשנות באופן דינמי את חלוקת התנועה. הוא קובע כמה תעבורה לשלוח לכל קבוצת Pod (כלומר לכל NEG אזורי) על ידי הערכת השימוש הממוצע במשאבים (כמו עומס המעבד) וגורמים אחרים כמו זמן האחזור ברשת. במהלך התהליך הזה, תעבורת הנתונים מועברת באופן אוטומטי מ-Pods עם עומס גבוה יותר ל-Pods עם עומס נמוך יותר, וכך מובטח ניצול יעיל של המשאבים באזור הקרוב ביותר.

בדוגמה הבאה אפשר לראות איך פועל איזון עומסים מבוסס-ניצול.

דוגמה: טיפול בתרמילים (Pods) שנעשה בהם שימוש יתר

כששירות מפעיל כמה קונטיינרים באותו Pod, סוכן המדדים של GKE מדווח על השימוש במשאבים של כל קונטיינר בנפרד. לאחר מכן, התשתית של Cloud Load Balancing מחשבת ממוצע משוקלל של נתוני הניצול כדי לקבל את הקיבולת הכוללת של ה-Pod.

איזון עומסים מבוסס-ניצול לשירותי GKE.
תרשים 1: חלוקת תנועה חכמה על סמך ניצול יחידת העיבוד המרכזית (CPU) של ה-Backend בהגדרה של מאזן עומסים מנוהל ב-GKE.

איור 1 מראה איך Cloud Load Balancing משתמש במדדי ניצול CPU בזמן אמת מ-GKE כדי לבצע אופטימיזציה של חלוקת התנועה בין רכיבי Pod שנפרסו בכמה אזורים. הבקשה של הלקוח מנותבת דרך GKE Gateway אל תרמילי backend שמקובצים ב-NEGs בשלושה אזורים.

  • באזור 1, ה-Pod מדווח על שימוש של 90% במעבד. מאזן העומסים מצמצם את התנועה ל-Pod הזה כדי למנוע עומס יתר.

  • באזור 2, השימוש ב-Pod הוא בינוני, עם 60% CPU, והוא ממשיך לקבל תנועה.

  • באזור 3, ה-Pod מדווח על שימוש נמוך במעבד (40%) ויכול להיות שיקבל יותר תנועה. ‫GKE שולח באופן רציף מטא-נתונים ומדדי ניצול לתשתית של Cloud Load Balancing, שמתאימה באופן חכם את ניתוב התנועה כדי לשמור על הביצועים והזמינות של האפליקציה.

נניח שהשירות שלכם מוגדר לניצול מקסימלי של 80% מה-CPU. אם יחידות ה-Pod באזור 1 מדווחות על ניצול של 90% מהמעבד, שזה מעל הסף, יקרו הדברים הבאים:

  1. התשתית של Cloud Load Balancing מזהה את השימוש העודף הזה.
  2. לאחר מכן, הוא מאזן מחדש את התנועה בצורה חכמה ומפחית את נפח התנועה שהוא שולח לקבוצות Pod באזור 1. האיזון מחדש הזה נמשך עד שהניצול הממוצע של מעבד ה-CPU עבור ה-Pods באזור הזה יורד מתחת לסף הניצול של 80%.
  3. כש-Pods באזור 1 מדווחים על ניצול נמוך יותר של מעבד (CPU) (מתחת לסף של 80%), תשתית Cloud Load Balancing מעריכה מחדש את חלוקת התנועה. לאחר מכן, הוא מאזן מחדש בהדרגה את התנועה בכל ה-Pods שמגבים את השירות, וממשיך לחלק את התנועה ביעילות על סמך השימוש.

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