הסבר על מודלים של רשתות

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

  • כל הפודים באותו אשכול יכולים לתקשר ישירות ביניהם בלי להשתמש בתרגום כתובות רשת (NAT). גם פודים שנמצאים בצמתים שונים יכולים לתקשר ישירות ביניהם.

  • סוכנים בצומת, כמו שדים של מערכת או kubelet, יכולים לתקשר עם כל הפודים בצומת הזה.

לכן, כשברשת מתארחים שני אשכולות, כמו שמוצג בתרשים הבא, עולה השאלה איך פודים באשכול 1 מתקשרים עם פודים באשכול 2? באופן דומה, איך לקוחות או שרתים מחוץ לאשכולות, שמסומנים בתרשים כ'לקוח אחר' ו'שרת אחר', מתקשרים עם פוד בתוך אשכול?

תרשים שבו סימני שאלה בנתיבים לרשת ש-Kubernetes לא מבטיחה לגביה דבר

במאמר הזה מוסבר איך מודל רשת במצב שטוח ומודל רשת במצב אי עונים על השאלות האלה בצורה שונה.

מודל רשת במצב שטוח

ברשת משולבת לחלוטין או ברשת במצב שטוח, לכל פוד יש כתובת IP ייחודית בכל האשכולות. לדוגמה, ל-Pod-A באשכול 1 יש כתובת IP שלא תופיע בשום מקום אחר באשכול 1 או באשכול 2. באופן דומה, ל-Pod-G באשכול 2 יש כתובת ייחודית בשני האשכולות. המשמעות היא ש-Pods מאשכול 1 יכולים לתקשר ישירות עם כל אחד מה-Pods באשכול 2 (בהנחה שאין חומות אש או מדיניות אחרת שיחסמו את התנועה). אין צורך בשער או בתרגום כתובות לתקשורת בין פודים.

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

לכן, ברשתות שטוחות, התקשורת היא ישירה: אין כתובות IP חופפות, ולא צריך להשתמש ברשתות שכבת-על או ב-NAT.

דיאגרמה שמציגה מודל רשת במצב שטוח

מודל רשת במצב איים

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

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

דיאגרמה שבה מוצג מודל רשת במצב אי.

באופן דומה, תעבורת נתונים (נכנסת) מלקוח שנכנסת לאשכול ותעבורת נתונים (יוצאת) שיוצאת מאשכול מטופלות על ידי שערים דומים. אפשר להטמיע שערים בדרכים שונות. לדוגמה, NAT, כתובות IP וירטואליות (VIP) ושרתי proxy הם דוגמאות לשערי גישה. הם מבצעים תרגומים של כתובות IP, שמשאירים את כתובות ה-IP של הפודים פרטיות.

במודל הרשת של מצב האיים, אפשר להשתמש באותן כתובות IP של פודים בכל אשכול. כלומר, כתובות ה-IP של הפודים לא צריכות להיות ייחודיות בכל האשכולות. כפי שאפשר לראות בתרשים הבא, אפשר להשתמש באותן כתובות IP של פודים בכל אשכול, כי פוד באשכול אחד אף פעם לא מתקשר ישירות עם פוד באשכול אחר.

דיאגרמה שבה מוצג מודל רשת במצב אי.

יתרון משמעותי של מודל הרשת במצב איים הוא שאפשר לעשות שימוש חוזר בכתובות ה-IP של ה-Pod.

יתרונות וחסרונות של שני המודלים

אלה כמה מהיתרונות והחסרונות של שני המודלים:

  • רשת שטוחה מהירה יותר מרשת איים כי שערים במצב איים מבצעים תרגום כתובות, והתרגומים האלה כרוכים בעלות ביצועים.

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

  • יכול להיות שלא תוכלו להשתמש במודל הרשת השטוח אם יש לכם מעט כתובות IP או אם מרחב כתובות ה-IP שלכם מפוצל (כלומר, אם אין לכם מקטעים גדולים של כתובות IP). במקרה כזה, עדיף להשתמש ברשת עצמאית.

חשוב לציין שמודלים של רשת שטוחה ורשת איים הם רק שניים מהמודלים האפשריים של רשתות, ויש הרבה וריאציות גם בתוך המודלים האלה.