הטמעה של מודל רשת במצב IPv4 שטוח

סקירה כללית

יש שני סוגים של מודלים של רשת במצב שטוח: רשת במצב סטטי ורשת במצב דינמי (באמצעות פרוטוקול Border Gateway Protocol). אפשר להשתמש במצב שטוח סטטי כשהצמתים משתרעים על פני דומיין יחיד של שכבה 2. לצמתים שמשתרעים על פני כמה דומיינים של שכבה 2, משתמשים במצב IP שטוח עם BGP.

במודל רשת במצב שטוח, ל-Pods יש כתובות IP ייחודיות בכל האשכולות. מוודאים שכתובות ה-CIDR של הפודים שהוקצו הן ייחודיות ולא חופפות לאף רשת משנה אחרת. לדוגמה, כתובות IP לא יכולות לחפוף לכתובות IP שמשמשות את הצמתים או את ה-CIDR של הפודים האחרים באשכולות אחרים. אפשר לגשת לכתובות ה-IP האלה מבחוץ, ולכן תרמילים בכל צומת יכולים לתקשר עם כל התרמילים בכל הצמתים האחרים. התקשורת מה-Pod לכל כתובת IP חיצונית לא דורשת תרגום כתובות רשת (NAT). מידע נוסף על מודל הרשת במצב שטוח ועל ההבדלים בינו לבין מודל הרשת במצב איים (ברירת המחדל) זמין במאמר השוואה בין מודלים של רשת במצב שטוח ובמצב איים.

משתמשים במודל רשת במצב שטוח כשיש מרחב גדול של כתובות IP ואפשר להקצות CIDR ייחודי של פוד לאשכול. אתם יכולים להגדיר את ה-CIDR של הפודים באופן דינמי באמצעות ClusterCIDRConfigs. אפשר להוסיף או למחוק ClusterCIDRConfigs אחרי יצירת האשכול. מידע נוסף על ClusterCIDRConfig ודוגמאות לשימוש בו מופיע במאמר הסבר על המשאב המותאם אישית ClusterCIDRConfig.

מידע נוסף על מצב שטוח עם BGP זמין במאמר בנושא הטמעה של מודל רשת במצב שטוח עם תמיכה ב-BGP.

הסבר על נגישות של כתובות IP של קבוצות Pod

במצב רשת שטוחה סטטית ל-IPv4, הנגישות של כתובת ה-IP של ה-Pod מבוססת על חבילות של Address Resolution Protocol‏ (ARP). לכן, אפשר להגיע לכתובות ה-IP של ה-Pods רק כשה-Pods נמצאים באותו דומיין Layer 2. הצמתים צריכים להיות שייכים לאותו דומיין של שכבה 2. כתובות ה-IP שאתם מציינים עבור ה-Pods (באמצעות ClusterCIDRConfigs) צריכות להיות באותה רשת משנה כמו צמתי האשכול. כתובות ה-CIDR של ה-Pods שמוגדרות צריכות להיות מרשת המשנה של הצמתים. לדוגמה, אם הצמתים באשכול משתמשים ברשת משנה 222.1.0.0/16, בוחרים ברשת משנה קטנה יותר בתוך רשת המשנה בשביל הפודים, 222.1.2.0/24. מוודאים שאף משאב אחר באשכול לא משתמש בכתובת IP מהטווח שהוקצה לפודים.

בקטע הבא מוסבר איך להגדיר רשתות במצב שטוח ל-IPv4.

איך מטמיעים רשת סטטית במצב שטוח

כברירת מחדל, אשכול Google Distributed Cloud נוצר ברשת במצב אי. בקטע הזה מוסבר איך להגדיר רשת במצב שטוח באשכול.

כדי לפרוס אשכול עם מודל רשת במצב שטוח, מבצעים את השינויים הבאים בקובץ התצורה של האשכול:

אפשר להפעיל את האפשרות 'רשת במצב שטוח' באשכול רק במהלך יצירת האשכול. כדי ליצור אשכול חדש עם רשת במצב שטוח, פועלים לפי השלבים הבאים:

  1. עורכים את קובץ התצורה של האשכול כדי להוסיף את clusterNetwork.flatIPv4 ולהגדיר אותו ל-true.

    כשמפעילים רשת במצב שטוח, המערכת מתעלמת מ-CIDR של ה-pod שצוין בקובץ התצורה של האשכול (clusterNetwork.pods.cidrBlocks).

  2. מוסיפים מניפסט ClusterCIDRConfig לקובץ התצורה של האשכול.

    במניפסט ClusterCIDRConfig, כוללים את הפרטים הבאים:

    • metadata.namespace: מרחב השמות של האשכול.

    • spec.ipv4.cidr: טווח כתובות ה-IP בפורמט של בלוק CIDR לשימוש ב-Pods באשכול. הטווח הזה צריך להגיע מאותה רשת משנה כמו צמתי האשכול.

    • perNodeMaskSize: בדיקות קדם-הפעלה ליצירת אשכול מאמתות שהערך של perNodeMaskSize מספיק להקצאת מספר ה-Podים שצוין ב-maxPodsPerNode.

    • nodeSelector: אם אין תוויות צמתים שתואמות לערך nodeSelector, תהליך ההתאמה של הצומת נשאר בהמתנה והיצירה של האשכול לא מסתיימת.

קטע הקוד הבא מקובץ התצורה של אשכול מראה איך להטמיע רישות במצב שטוח בלי תמיכה ב-BGP. ה-CIDR שמופיעים בקטע הזה הם רק דוגמאות, ותצטרכו להחליף אותם ב-CIDR משלכם. כשמחליפים את ה-CIDR בערכים משלכם, חשוב לוודא שהם עומדים בקריטריונים של נגישות הפודים, כפי שמפורט במאמר הסבר על נגישות כתובות ה-IP של הפודים.

---
apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
  name: flat-mode
  namespace: cluster-flat-mode
spec:
... (other cluster config omitted)

...
  # Cluster networking configuration
  clusterNetwork:
    flatIPv4: true
    services:
      cidrBlocks:
      - 10.96.0.0/12
... (other cluster config omitted)

...
---
apiVersion: baremetal.cluster.gke.io/v1alpha1
kind: ClusterCIDRConfig
metadata:
  name: cluster-wide-1
  namespace: cluster-flat-mode
spec:
  ipv4:
    cidr: "222.1.0.0/16"
    perNodeMaskSize: 24

מגבלות

לרשת הסטטית במצב שטוח ב-Google Distributed Cloud יש את המגבלות הבאות:

  • אפשר להגיע ל-Pods שמשתמשים ברשתות במצב שטוח בתוך דומיין יחיד של שכבה 2. כל מכונה אחרת שלא נמצאת באשכול, אבל נמצאת באותו דומיין Layer 2, יכולה גם להגיע ל-Pods. המגבלה הזו קיימת גם ב-IPv6 כשיוצרים אשכולות dualstack וכש-IPv6 נמצא במצב שטוח ללא BGP. מידע נוסף זמין במאמר בנושא הבנת הנגישות של כתובת ה-IP של ה-Pod.

  • בקר ה-IPAM של Google Distributed Cloud עוקב אחרי הזמינות של כתובות ה-IP ב-CIDR של הפוד שהוגדר. הוא לא עוקב אחרי כתובות ה-IP שכבר נמצאות בשימוש במכשירים אחרים. לכן, כתובות IP אחרות בדומיין Layer 2 לא יכולות להפריע ל-CIDR של ה-POD. מידע נוסף זמין במאמר בנושא הבנת הנגישות של כתובת ה-IP של ה-Pod.