בדף הזה מוסבר איך GKE ב-AWS עובד עם AWS כדי לבחור רשתות משנה למאזני עומסים של שירותים, ואיך לתייג רשתות משנה כדי שהמערכת תזהה אותן באופן אוטומטי במהלך יצירת מאזן עומסים של שירות.
למה צריך לציין תת-רשתות
כשיוצרים מאזני עומסים, מערכת AWS צריכה לדעת באילו רשתות משנה למקם אותם. רשת המשנה קובעת את אזורי הזמינות של מאזן העומסים, כתובות ה-IP ונקודות הקצה.
בדרך כלל, מאזני עומסים מוקצים לתת-רשת אחת לכל אזור זמינות שמכיל מאגר צמתים. ל-AWS נדרשת רשת משנה אחת לפחות שזמינה כדי ליצור מאזן עומסים ברשת (NLB), ושתי רשתות משנה לפחות כדי ליצור מאזן עומסים באפליקציה (ALB).
כל רשתות המשנה ב-AWS הן ציבוריות (עם כתובות IP ציבוריות ונתיב לשער האינטרנט של ה-VPC) או פרטיות (ללא התכונות האלה). מאזני עומסים שפונים לאינטרנט צריכים להיות ממוקמים ברשתות משנה ציבוריות. מאזני עומסים פנימיים יכולים להיות ברשתות משנה ציבוריות או פרטיות.
אם אין רשתות משנה מתויגות זמינות
אם ל-GKE ב-AWS יש צורך ליצור מאזן עומסים ואין רשתות משנה מתויגות זמינות או שיש בהן קיבולת, יכול להיות שהוא ייצור את מאזן העומסים ברשת משנה אחרת. כדי להימנע מכך ולשלוט במיקומי רשתות המשנה של מאזני העומסים, צריך לתייג את כל רשתות המשנה.
גילוי אוטומטי של רשתות משנה
GKE on AWS יאתר באופן אוטומטי את רשתות המשנה לשימוש במאזן העומסים על ידי הצגת כל רשתות המשנה ב-VPC ובחירה של עד רשת משנה אחת מכל אזור זמינות.
כדי ש-GKE ב-AWS יזהה באופן אוטומטי תת-רשת, התנאים הבאים צריכים להתקיים לגביה:
- תיוג באמצעות
kubernetes.io/role/elb(למאזן עומסים שמיועד לאינטרנט) - תיוג באמצעות
kubernetes.io/role/internal-elb(למאזן עומסים פנימי) - לא מכילים תגים עם הקידומת
kubernetes.io/cluster/, או מכילים את התגkubernetes.io/cluster/CLUSTER_UID, כאשרCLUSTER_UIDהוא ה-UID של האשכול הנוכחי.
בנוסף, לרשת משנה שמיועדת לשימוש עם מאזן עומסים שפונה לאינטרנט צריכה להיות גישה לשער האינטרנט של ה-VPC.
אם יש כמה רשתות משנה באזור זמינות שעומדות בדרישות של איזון העומסים, GKE on AWS מדרג את רשתות המשנה לפי מזהה רשת המשנה.
תיוג של רשתות המשנה לפי השימוש המיועד שלהן
כדי שמערכת GKE ב-AWS תזהה אוטומטית רשת משנה עבור איזון עומסים, צריך להחיל על רשת המשנה אחד משני תגים כדי לציין שהיא זמינה. הם:
kubernetes.io/role/elb: החל תג זה על רשת המשנה שלך כדי לסמן אותה כזמינה למאזן עומסים שפונה לאינטרנט. זו צריכה להיות רשת משנה ציבורית עם נתיב לשער האינטרנט של ה-VPC. מגדירים את התג לערך1. כדי להחיל את התג הזה, מריצים את הפקודה הבאה:aws ec2 create-tags \ --resources SUBNET_ID \ --tags "Key=kubernetes.io/role/elb,Value=1"
kubernetes.io/role/internal-elb: צריך להחיל את התג הזה על רשת המשנה כדי לסמן אותה כזמינה למאזן עומסים פנימי. מגדירים את הערך של התג ל-1. כדי להחיל את התג הזה, מריצים את הפקודה הבאה:aws ec2 create-tags \ --resources SUBNET_ID \ --tags Key=kubernetes.io/role/internal-elb,Value=1
מחליפים את מה שכתוב בשדות הבאים:
-
SUBNET_ID: המזהה של רשת המשנה שמתייגים
אחרי שנותנים לרשת המשנה תג kubernetes.io/role, אפשר גם לתייג אותה בתג אחד או יותר מסוג kubernetes.io/cluster/CLUSTER_UID, כאשר CLUSTER_UID הוא ה-UID של אשכול GKE ב-AWS.
כך לא יתאפשר לאשכול שלא מופיע באחת מהתגיות האלה לגלות באופן אוטומטי את רשת המשנה לשימוש במאזני העומסים שלו.
מידע נוסף על הפקודה aws ec2 create-tags זמין במסמכי התיעוד של Amazon בנושא aws ec2 create-tags.
פתרון בעיות
הבעיה הנפוצה ביותר בהגדרת איזון עומסים היא רשתות משנה שתויגו בצורה שגויה. הדבר עלול לגרום לאלגוריתם של הגילוי האוטומטי לבחור רשתות משנה שגויות. כדי לאבחן ולפתור את הבעיה:
אם יוצרים מאזן עומסים שפונה לאינטרנט, צריך לוודא שיש לפחות רשת משנה ציבורית אחת בכל אחד מאזורי הזמינות שמכילים מאגר צמתים, ושהרשתות המשנה מתויגות באמצעות
kubernetes.io/role/elb.אם יוצרים מאזן עומסים פנימי, צריך לוודא שיש לפחות רשת משנה אחת בכל אחד מאזורי הזמינות שמכילים מאגר צמתים, ושהרשתות המשנה מתויגות בתג
kubernetes.io/role/internal-elb.בודקים אם לרשתות המשנה שרוצים לגלות באופן אוטומטי יש תגים מהצורה
kubernetes.io/cluster/CLUSTER_UID. אם ברשת משנה יש תגים כאלה שנותנים שם לאשכול, רק האשכולות שצוינו בשם יכולים לגלות את רשת המשנה באופן אוטומטי. כדי לפתור את הבעיה, אפשר למחוק את כל התגים של שמות האשכולות (כדי לאפשר גילוי אוטומטי של רשת המשנה מכל אשכול) או להוסיף תג של שם אשכול עם ה-UID של אשכול GKE on AWS וערך שלshared.בודקים את היסטוריית האירועים של Kubernetes באמצעות הפקודה הבאה:
kubectl get events -A | grep LoadBalancerלדוגמה, הודעת האירוע
could not find any suitable subnets for creating the ELBמציינת שלא הייתה אפשרות לגלות אוטומטית רשתות משנה. אם מוצגת האזהרה הזו, צריך לוודא שרשתות המשנה והתגים שלהן נכונים ומלאים.כדי להציג את רשימת רשתות המשנה שאפשר לגלות אוטומטית עבור מאזני עומסים שפונים לאינטרנט, מריצים את הפקודה הבאה:
aws ec2 describe-subnets \ --filters "Name=vpc-id,Values=VPC_ID" "Name=tag:kubernetes.io/role/elb,Values=*"מחליפים את
VPC_IDבמזהה ה-VPC.כדי להציג רשימה של רשתות המשנה שאפשר לגלות אוטומטית עבור מאזני עומסים פנימיים, מריצים את הפקודה:
aws ec2 describe-subnets \ --filters "Name=vpc-id,Values=VPC_ID" "Name=tag:kubernetes.io/role/internal-elb,Values=*"
השלבים הבאים
מידע נוסף על איזון עומסי רשת