הגדרת תעבורה חיצונית באמצעות מסלולי שירות הרשת

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

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

הדף הזה מיועד לאדריכלי ענן ולמומחי רשתות שמתכננים ומעצבים את הרשת של הארגון שלהם. למידע נוסף על תפקידים נפוצים ומשימות לדוגמה שאנחנו מתייחסים אליהם בתוכן של Google Cloud , קראו את המאמר תפקידים ומשימות נפוצים של משתמשי GKE.

איך פועלים מסלולי שירות רשת ב-GKE

בקטע הזה מוסבר איך לנהל את מסלולי שירות הרשת ב-GKE.

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

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

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

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

מסלולי שירות הרשת ואיזון עומסים

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

אם משתמשים במאזני עומסים של אפליקציות עם Gateway, אי אפשר להגדיר את מסלולי שירות הרשת. מסלולי שירות הרשת ב-Gateway נשלטים על ידי המשאב GatewayClass. מידע נוסף זמין במאמר כתובת ה-IP של השער.

תעבורת נתונים נכנסת (Ingress) ב-GKE למאזני עומסים חיצוניים של אפליקציות לא תומכת במסלול הרגיל לניתוב תעבורה.

לפני שמתחילים

לפני שמתחילים, חשוב לוודא שביצעתם את המשימות הבאות:

  • מפעילים את Google Kubernetes Engine API.
  • הפעלת Google Kubernetes Engine API
  • כדי להשתמש ב-Google Cloud CLI למשימה הזו, מתקינים ואז מאתחלים את ה-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 שמשויכת למסלול הרשת הישן. כדי למנוע שיבושים בשירות, כשמעבירים את האשכול לרמת רשת חדשה, צריך לפעול לפי השלבים הבאים:

  1. עדכון האשכול: כדי לעדכן אשכול קיים עם מסלול רשת, מריצים את הפקודה הבאה:

    gcloud container clusters update CLUSTER_NAME \
        --network-tier=NETWORK_TIER \
        ...
    

    מחליפים את הערכים הבאים:

    • ‫CLUSTER_NAME: שם האשכול.
    • ‫NETWORK_TIER: הגדרת מסלול הרשת. משתמשים ב-network-default כדי להגדיר את אותו מסלול כמו בפרויקט Google Cloud , ב-Standard כדי להגדיר את המסלול הרגיל או ב-Premium כדי להגדיר את מסלול הפרימיום.
  2. יצירת מאגרי צמתים ושירותים חדשים: כדי שלקוחות חיצוניים יוכלו להשתמש בכתובות ה-IP החדשות שמשויכות לרמת הרשת החדשה, צריך ליצור מאגרי צמתים חדשים ושירותים חדשים של איזון עומסים. מאגרי צמתים חדשים ושירותי LoadBalancer חדשים מקבלים בירושה את הגדרת המסלול המעודכנת, בעוד שמאגרי צמתים ושירותים קיימים ממשיכים להשתמש בהגדרת מסלול הרשת המקורית.

  3. עדכון רשומות ה-DNS: משנים את רשומות ה-DNS כך שיפנו לכתובות ה-IP החדשות של שירותי LoadBalancer החדשים.

  4. המתנה להפצת ה-DNS: צריך להמתין עד שתוקף ה-DNS Time to Live (TTL) יפוג כדי לוודא שהלקוחות מופנים לשירותים החדשים וכדי למנוע הצגה של רשומות לא עדכניות.

עדכון מאזן עומסים חיצוני באמצעות רמות שירות ברשת

במאזנים אזוריים חיצוניים של עומסי רשת להעברת סיגנל ללא שינוי, מערכת 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 סטטית: כשיוצרים שירות עם כתובת IP סטטית, מסלול הרשת של כתובת ה-IP הסטטית צריך להיות זהה למסלול הרשת של שירות 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

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