בדף הזה מוסבר איך לשלוט באופן שבו תעבורה חיצונית מגיעה לשירותים שלכם באשכולות Google Kubernetes Engine (GKE) באמצעות מסלולי שירות הרשת. מסלולי שירות הרשת מאפשרים לכם לבצע אופטימיזציה של תעבורת הרשת לביצועים (מסלול פרימיום) או לחיסכון בעלויות (מסלול רגיל).
במסלול הפרימיום, תעבורת הנתונים עוברת דרך תשתית הפרימיום של Google, מה שמבטיח מהירות ואמינות גבוהות יותר. לעומת זאת, במסלול הרגיל נעשה שימוש ברשתות רגילות של ספקי אינטרנט (ISP), שמציעות פתרון חסכוני יותר.
הדף הזה מיועד לאדריכלי ענן ולמומחי רשתות שתפקידם לתכנן את הרשת של הארגון. כדי לקבל מידע נוסף על תפקידים נפוצים ומשימות לדוגמה שאנחנו מתייחסים אליהם ב Google Cloud תוכן, אפשר לעיין במאמר תפקידים נפוצים של משתמשים ב-GKE ומשימות.
איך פועלים מסלולי שירות רשת ב-GKE
בקטע הזה מוסבר איך לנהל את מסלולי שירות הרשת ב-GKE.
הגדרת מסלול רשת ברמת הפרויקט: אפשר להגדיר את מסלול הרשת שיוגדר כברירת מחדל בפרויקט – מסלול Standard או מסלול Premium. Google Cloud כל האשכולות החדשים נוצרים עם ההגדרה
network-default, שמקבלת בירושה את הגדרת הרמה של הפרויקט. ההגדרה הזו נשמרת גם אחרי שדרוגים של האשכול. מאגרי הצמתים שנוצרים באשכול יורשים את רמת הרשת מההגדרה ברמת הפרויקט.הגדרת מסלול רשת כשיוצרים אשכולות חדשים: אפשר להגדיר את מסלול הרשת כשיוצרים אשכול חדש, בלי קשר להגדרת המסלול בפרויקט Google Cloud . מאגרי צמתים חדשים משתמשים בשכבת הרשת ברמת האשכול, וההגדרה הזו נשמרת גם אחרי שמשדרגים את מאגרי הצמתים.
הגדרת מסלול רשת כשמעדכנים אשכולות: אפשר להגדיר את מסלול הרשת כשמעדכנים אשכול קיים. מאגרי צמתים חדשים ושירותי LoadBalancer חדשים מקבלים בירושה את הגדרת המסלול המעודכנת, בעוד שמאגרי צמתים ושירותים קיימים ממשיכים להשתמש בהגדרת מסלול הרשת המקורית. הגדרות הרמה המעודכנות נשמרות גם אחרי שמשדרגים את האשכול.
הגדרת מסלול רשת כשמעדכנים שירותי LoadBalancer: שירותי LoadBalancer מקבלים בירושה את מסלול הרשת של האשכול. עם זאת, אפשר לבטל את ההגדרה הזו ולעדכן את מסלול הרשת במניפסט השירות.
מסלולי שירות רשת ואיזון עומסים
כברירת מחדל, מאזני עומסי רשת חיצוניים להעברת סיגנל ללא שינוי משתמשים במסלול פרימיום. אתם יכולים לעדכן את ההגדרה הזו כדי ששירות LoadBalancer ישתמש במסלול הרגיל במקום זאת.
אם אתם משתמשים ב-Application Load Balancers עם Gateway, לא תוכלו להגדיר את מסלולי שירות הרשת. מסלולי שירות הרשת ב-Gateway נשלטים על ידי המשאב GatewayClass. מידע נוסף זמין במאמר בנושא כתובת ה-IP של השער.
GKE Ingress למאזני עומסים חיצוניים של אפליקציות לא תומך במסלול הרגיל לניתוב תעבורה.
לפני שמתחילים
לפני שמתחילים, חשוב לוודא שביצעתם את הפעולות הבאות:
- מפעילים את ממשק Google Kubernetes Engine API. הפעלת Google Kubernetes Engine API
- כדי להשתמש ב-CLI של Google Cloud למשימה הזו, צריך להתקין ואז להפעיל את gcloud CLI. אם התקנתם בעבר את ה-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כדי להגדיר את אותו מסלול שמוגדר בפרויקט, ב-Standardכדי להגדיר את המסלול הרגיל או ב-Premiumכדי להגדיר את מסלול הפרימיום. Google Cloud
העברת אשכול קיים לרמה אחרת
עדכון של מסלול הרשת של אשכול לא משפיע על מסלול הרשת של משאבים קיימים. משאבים קיימים ממשיכים להשתמש בכתובת ה-IP שמשויכת למסלול הרשת הישן. כדי למנוע שיבושים בשירות, צריך לפעול לפי השלבים הבאים כשמעבירים את האשכול לרמת רשת חדשה:
עדכון האשכול: כדי לעדכן אשכול קיים עם מסלול רשת, מריצים את הפקודה הבאה:
gcloud container clusters update CLUSTER_NAME \ --network-tier=NETWORK_TIER \ ...מחליפים את הערכים הבאים:
-
CLUSTER_NAME: השם של האשכול. -
NETWORK_TIER: הגדרת מסלול הרשת. משתמשים ב-network-defaultכדי להגדיר את אותו מסלול שמוגדר בפרויקט, ב-Standardכדי להגדיר את המסלול הרגיל או ב-Premiumכדי להגדיר את מסלול הפרימיום. Google Cloud
-
יצירת מאגרי צמתים ושירותים חדשים: כדי שלקוחות חיצוניים יוכלו להשתמש בכתובות ה-IP החדשות שמשויכות לרמת הרשת החדשה, צריך ליצור מאגרי צמתים חדשים ושירותים חדשים של איזון עומסים. מאגרי צמתים חדשים ושירותי LoadBalancer חדשים מקבלים בירושה את הגדרת הרמה המעודכנת, בעוד שמאגרי צמתים קיימים ושירותים קיימים ממשיכים להשתמש בהגדרת רמת הרשת המקורית.
עדכון רשומות ה-DNS: משנים את רשומות ה-DNS כך שיפנו לכתובות ה-IP החדשות של שירותי איזון העומסים החדשים.
המתנה להפצת ה-DNS: צריך לחכות עד שתוקף ה-DNS Time to Live (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/network-tier: Standard
spec:
type: LoadBalancer
loadBalancerClass: networking.gke.io/l4-regional-external
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