בדף הזה מוסבר איך לשלוט באופן שבו תנועה חיצונית מגיעה לשירותים שלכם באשכולות Google Kubernetes Engine (GKE) באמצעות מסלולי שירות הרשת. מסלולי שירות הרשת מאפשרים לכם לבצע אופטימיזציה של תעבורת הרשת לביצועים (מסלול פרימיום) או לחיסכון בעלויות (מסלול רגיל).
במסלול פרימיום, תעבורת הנתונים עוברת דרך רשת השדרה המרכזית של Google, ונהנית ממהירות ואמינות גבוהות. לעומת זאת, במסלול הרגיל נעשה שימוש ברשתות רגילות של ספקי אינטרנט (ISP), שמציעות פתרון חסכוני יותר.
הדף הזה מיועד לאדריכלי ענן ולמומחי רשתות שתפקידם לתכנן את הרשת של הארגון. כדי לקבל מידע נוסף על תפקידים נפוצים ועל משימות לדוגמה שאנחנו מתייחסים אליהן ב Google Cloud תוכן, אפשר לעיין במאמר תפקידים נפוצים של משתמשי GKE ומשימות.
איך פועלים מסלולי שירות רשת ב-GKE
בקטע הזה מוסבר איך לנהל את מסלולי שירות הרשת ב-GKE.
הגדרת מסלול רשת ברמת הפרויקט: אתם יכולים להגדיר את מסלול הרשת שיוגדר כברירת מחדל בפרויקט שלכם, כך שיוגדר מסלול Standard או מסלול פרימיום. Google Cloud כל האשכולות החדשים נוצרים עם ההגדרה
network-default, שמקבלת בירושה את הגדרת הרמה ברמת הפרויקט. ההגדרה הזו נשמרת גם אחרי שדרוגי האשכול. מאגרי הצמתים שנוצרים באשכול יורשים את רמת הרשת מההגדרה ברמת הפרויקט.הגדרת מסלול רשת כשיוצרים אשכולות חדשים: אתם יכולים להגדיר את מסלול הרשת כשאתם יוצרים אשכול חדש, בלי קשר להגדרת המסלול בפרויקט Google Cloud . מאגרי צמתים חדשים משתמשים ברמת הרשת של האשכול, וההגדרה הזו נשמרת גם אחרי שמשדרגים את מאגרי הצמתים.
הגדרת מסלול רשת כשמעדכנים אשכולות: אפשר להגדיר את מסלול הרשת כשמעדכנים אשכול קיים. מאגרי צמתים חדשים ושירותי LoadBalancer חדשים מקבלים בירושה את הגדרת הרמה המעודכנת, בעוד שמאגרי צמתים קיימים ושירותים קיימים ממשיכים להשתמש בהגדרת רמת הרשת המקורית. הגדרות הרמה המעודכנות נשמרות גם אחרי שמשדרגים את האשכול.
הגדרת מסלול רשת כשמעדכנים שירותי LoadBalancer: שירותי LoadBalancer מקבלים בירושה את מסלול הרשת של האשכול. עם זאת, אתם יכולים לבטל את ההגדרה הזו ולעדכן את מסלול הרשת במניפסט השירות.
מסלולי שירות רשת ואיזון עומסים
כברירת מחדל, מאזנים חיצוניים של עומסי רשת להעברת סיגנל ללא שינוי משתמשים במסלול פרימיום. אתם יכולים לעדכן את ההגדרה הזו כך ששירות LoadBalancer ישתמש במקום זאת במסלול הרגיל.
אם משתמשים ב-Application Load Balancers עם Gateway, אי אפשר להגדיר את מסלולי שירות הרשת. מסלולי שירות הרשת ב-Gateway נשלטים על ידי המשאב GatewayClass. מידע נוסף זמין במאמר בנושא כתובת ה-IP של השער.
ב-GKE Ingress למאזני עומסים חיצוניים של אפליקציות אין תמיכה במסלול הרגיל לניתוב תעבורה.
לפני שמתחילים
לפני שמתחילים, חשוב לוודא שביצעתם את הפעולות הבאות:
- מפעילים את ממשק ה-API של Google Kubernetes Engine. הפעלת Google Kubernetes Engine API
- אם רוצים להשתמש ב-CLI של Google Cloud למשימה הזו, צריך להתקין ואז להפעיל את ה-CLI של gcloud. אם התקנתם בעבר את ה-CLI של gcloud, מריצים את הפקודה
gcloud components updateכדי לקבל את הגרסה העדכנית. יכול להיות שגרסאות קודמות של ה-CLI של gcloud לא יתמכו בהרצת הפקודות שמופיעות במסמך הזה.
הגבלות
ההגבלות הבאות חלות:
- אפשר להגדיר את מסלול הרשת רק ברמת הפרויקט או ברמת האשכול. אי אפשר להגדיר ישירות את רמת הרשת של מאגרי צמתים.
- במסלול הרגיל אין תמיכה בכתובות IPv4 או IPv6 חיצוניות גלובליות עם תמיכה כפולה. מידע נוסף על סוגי כתובות IP זמין במאמר כתובות IP.
יצירת אשכול עם מסלולי שירות רשת
כדי ליצור אשכול ולציין את רמת הרשת, מריצים את הפקודה הבאה:
gcloud container clusters create CLUSTER_NAME \
--network-tier=NETWORK_TIER \
...
מחליפים את הערכים הבאים:
-
CLUSTER_NAME: השם של האשכול. -
NETWORK_TIER: הגדרת מסלול הרשת. משתמשים ב-network-defaultכדי להגדיר את אותו מסלול כמו בפרויקט Google Cloud , ב-Standardכדי להגדיר את המסלול הרגיל או ב-Premiumכדי להגדיר את מסלול הפרימיום.
העברת אשכול קיים לרמה אחרת
עדכון של מסלול הרשת של אשכול לא משפיע על מסלול הרשת של משאבים קיימים. משאבים קיימים ממשיכים להשתמש בכתובת ה-IP שמשויכת למסלול הרשת הישן. כדי למנוע שיבושים בשירות, צריך לפעול לפי השלבים הבאים כשמעבירים את האשכול לרמת רשת חדשה:
מעדכנים את האשכול: כדי לעדכן אשכול קיים עם מסלול רשת, מריצים את הפקודה הבאה:
gcloud container clusters update CLUSTER_NAME \ --network-tier=NETWORK_TIER \ ...מחליפים את הערכים הבאים:
-
CLUSTER_NAME: השם של האשכול. -
NETWORK_TIER: הגדרת מסלול הרשת. משתמשים ב-network-defaultכדי להגדיר את אותו מסלול כמו בפרויקט Google Cloud , ב-Standardכדי להגדיר את המסלול הרגיל או ב-Premiumכדי להגדיר את מסלול הפרימיום.
-
יצירת מאגרי צמתים ושירותים חדשים: כדי שלקוחות חיצוניים יוכלו להשתמש בכתובות ה-IP החדשות שמשויכות לרמת הרשת החדשה, צריך ליצור מאגרי צמתים חדשים ושירותי LoadBalancer חדשים. מאגרי צמתים חדשים ושירותי LoadBalancer חדשים מקבלים בירושה את הגדרת הרמה המעודכנת, בעוד שמאגרי צמתים ושירותים קיימים ממשיכים להשתמש בהגדרת רמת הרשת המקורית.
עדכון רשומות ה-DNS: משנים את רשומות ה-DNS כך שיפנו לכתובות ה-IP החדשות של שירותי איזון העומסים החדשים.
המתנה להפצת ה-DNS: צריך להמתין עד שתוקף ה-DNS (TTL) יפוג כדי לוודא שהלקוחות מופנים לשירותים החדשים וכדי למנוע הצגה של רשומות לא עדכניות.
עדכון מאזן עומסים חיצוני באמצעות Network Service Tiers
במאזנים חיצוניים של עומסי רשת להעברת סיגנל ללא שינוי, מערכת GKE משתמשת כברירת מחדל במסלול הרשת שהוגדר באשכול לכלל ההעברה החיצוני ולכתובת ה-IP. אם מסלול הרשת של האשכול מוגדר ל-network-default, מאזן העומסים משתמש במסלול פרימיום. אפשר לבטל את ההגדרה הזו על ידי הגדרת ההערה cloud.google.com/network-tier במניפסט השירות. לדוגמה:
```yaml
apiVersion: v1
kind: Service
metadata:
name: store-v1-lb-svc
annotations:
cloud.google.com/l4-rbs: "enabled"
cloud.google.com/network-tier: Standard
spec:
type: LoadBalancer
selector:
app: store
ports:
- name: tcp-port
protocol: TCP
port: 8080
targetPort: 8080
```
מידע נוסף על הפרמטרים שמשמשים לשירותי LoadBalancer זמין במאמר פרמטרים של שירותים.
כתובת IP סטטית: כשיוצרים Service עם כתובת IP סטטית, מסלול הרשת של כתובת ה-IP הסטטית צריך להיות זהה למסלול הרשת של ה-Service מסוג LoadBalancer. אם יש אי התאמה, הודעת השגיאה הבאה תוצג כשמריצים את הפקודה kubectl describe service:
Error syncing load balancer: failed to ensure load balancer: requested ip "standard-service" is neither static nor assigned to the LB