בעיות באיזון העומסים ב-Google Kubernetes Engine (GKE) עלולות לגרום לשיבושים בשירות, כמו שגיאות HTTP 502, או למנוע גישה לאפליקציות.
במאמר הזה מוסבר איך לפתור שגיאות 502 מ-Ingress חיצוני, ואיך להשתמש ביומנים של איזון עומסים ובכלי אבחון, כמו check-gke-ingress, כדי לזהות בעיות.
המידע הזה חשוב לאדמינים ולמפעילים של פלטפורמות ולמפתחי אפליקציות שמגדירים ותחזקים שירותים עם איזון עומסים ב-GKE. מידע נוסף על התפקידים הנפוצים ועל דוגמאות למשימות שאנחנו מתייחסים אליהן בתוכן של Cloud de Confiance by S3NS זמין במאמר תפקידי משתמשים נפוצים ומשימות ב-GKE.
תעבורת נתונים נכנסת (ingress) חיצונית יוצרת שגיאות HTTP 502
ההנחיות הבאות יעזרו לכם לפתור שגיאות HTTP 502 במשאבי Ingress חיצוניים:
- מפעילים רישום ביומן לכל שירות לקצה העורפי שמשויך לכל שירות GKE שאליו יש הפניה ב-Ingress.
- כדאי להשתמש בפרטי הסטטוס כדי לזהות את הסיבות לתגובות HTTP 502. פרטי הסטטוס שמציינים שתגובת HTTP 502 הגיעה מהקצה העורפי מחייבים פתרון בעיות ב-Pods של השרת, ולא במאזן העומסים.
קבוצות של מכונות לא מנוהלות
יכול להיות שתיתקלו בשגיאות HTTP 502 במשאבי Ingress חיצוניים אם משאבי ה-Ingress החיצוניים משתמשים בקצה העורפי של קבוצת מופעים לא מנוהלת. הבעיה הזו מתרחשת אם כל התנאים הבאים מתקיימים:
- במאגר יש מספר גדול של צמתים בכל מאגרי הצמתים.
- ה-Pods של הצגת המודעות בשירות אחד או יותר שאליהם יש הפניה ב-Ingress ממוקמים רק בכמה צמתים.
- השירותים שאליהם מתייחס ה-Ingress משתמשים ב-
externalTrafficPolicy: Local.
כדי לבדוק אם שער ה-Ingress החיצוני שלכם משתמש בשרתי קצה של קבוצת מופעים לא מנוהלת:
נכנסים לדף Ingress במסוף Cloud de Confiance .
לוחצים על השם של ה-Ingress החיצוני.
לוחצים על השם של מאזן העומסים. יוצג הדף פרטי איזון העומסים.
כדי לדעת אם ה-Ingress החיצוני שלכם משתמש ב-NEGs או בקבוצות של מכונות וירטואליות, צריך לעיין בטבלה שבקטע Backend services (שירותי קצה עורפי).
כדי לפתור את הבעיה, אפשר לנסות אחד מהפתרונות הבאים:
- שימוש באשכול המותאם ל-VPC.
- משתמשים ב-
externalTrafficPolicy: Clusterלכל שירות שמקושר ל-Ingress חיצוני. הפתרון הזה גורם לאובדן כתובת ה-IP המקורית של הלקוח במקורות של החבילה. - משתמשים בהערה
node.kubernetes.io/exclude-from-external-load-balancers=true. מוסיפים את ההערה לצמתים או למאגרי הצמתים שלא מריצים אף Pod של שרת לאף שירות שמפנה ל-Ingress חיצוני או לשירותLoadBalancerבאשכול.
שימוש ביומנים של מאזן העומסים לפתרון בעיות
אתם יכולים להשתמש ביומנים של מאזן עומסי רשת פנימי להעברת סיגנל ללא שינוי וביומנים של מאזן עומסי רשת חיצוני להעברת סיגנל ללא שינוי כדי לפתור בעיות במאזני עומסים ולבצע קורלציה בין התנועה ממאזני העומסים לבין משאבי GKE.
היומנים מצטברים לכל חיבור ומיוצאים כמעט בזמן אמת. יומנים נוצרים לכל צומת GKE שמעורב בנתיב הנתונים של שירות LoadBalancer, גם לתנועת נתונים נכנסת וגם לתנועת נתונים יוצאת. הרשומות ביומן כוללות שדות נוספים למשאבי GKE, כמו:
- שם האשכול
- מיקום האשכול
- שם השירות
- מרחב השמות של השירות
- שם ה-Pod
- מרחב השמות של ה-Pod
שימוש בכלי אבחון לפתרון בעיות
כלי האבחון check-gke-ingress בודק משאבי Ingress כדי לזהות טעויות נפוצות בהגדרות. אפשר להשתמש בכלי check-gke-ingress בדרכים הבאות:
- מריצים את כלי שורת הפקודה
gcpdiagבאשכול. תוצאות ה-Ingress מופיעות בקטע של כלל הבדיקהgke/ERR/2023_004. - אפשר להשתמש בכלי
check-gke-ingressלבד או כפלאגין של kubectl. לשם כך, פועלים לפי ההוראות במאמר check-gke-ingress.