בבלוג הקודם ב , בטח קיבלת הבנה בקוברנטס. בבלוג זה ברשת Kubernetes, אתמקד בעיקר במושגי הרשת המעורבים ב- Kubernetes.
בבלוג זה ברשת Kubernetes תוכלו להבין את הנושאים הבאים:
מה זה קוברנטס?
אתה יכול להגדיר את Kubernetes ככלי תזמון מיכל קוד פתוח המספק פלטפורמה ניידת לאוטומציה של פריסת יישומים המיכלים.
כעת, כל מי שעובד עם Kubernetes חייב להבין היטב את אשכול Kubernetes כי זה יעזור לך להבין את Kubernetes Networking.
אשכול קוברנטס
פלטפורמת Kubernetes מציעה ניהול מדינה מבוקש, המאפשר להפעיל את שירותי האשכול, את התצורה המוזנת בתשתית. תן לי להסביר בדוגמה.
שקול קובץ YAML המכיל את כל פרטי התצורה שיש להזין בשירותי האשכול. לכן, קובץ זה מוזן ל- API של שירותי אשכול, ואז יהיה על שירותי האשכול להבין כיצד לתזמן תרמילים בסביבה. לכן, נניח שיש שתי תמונות מיכל עבור תרמיל 1 עם שלוש עותקים משוכפלים, ותמונת מכולה אחת עבור תרמיל 2 עם שני עותקים משוכפלים, יהיה זה על שירותי האשכול להקצות את זוגות העתק ההעתקים האלה לעובדים.
יישום hashap פשוט ב- Java
עיין בתרשים לעיל. כעת, כפי שאתה יכול לראות ששירותי האשכול הקצו לעובד הראשון שני זוגות עותקים משוכפלים, לעובד השני זוג לזכוכית העתק בודד ולעובד השלישי שני זוגות העתק תרמילים. כעת, זהו תהליך קובלט האחראי על תקשורת שירותי האשכול עם העובדים.
אז כל מערך שירותי האשכול והעובדים עצמם ממציא זאת אשכול קוברנטס !!
איך, לדעתך, תרמילים אלה המוקצים בנפרד מתקשרים זה עם זה?
התשובה טמונה ברשת Kubernetes!
הירשם לערוץ היוטיוב שלנו כדי לקבל עדכונים חדשים ..!
יש בעיקר 4 בעיות לפתור בעזרת מושגי הרשת.
- תקשורת מיכל למכולה
- תקשורת בין תרמיל לפוד
- תרמיל לתקשורת שירות
- תקשורת חיצונית לשירות
עכשיו, תן לי לספר לך איך הבעיות שלעיל נפתרות באמצעות Kubernetes Networking.
רשת Kubernetes
התקשורת בין תרמילים, שירותים ושירותים חיצוניים לאלו שבאשכול מביאה את הרעיון של רשת Kubernetes.
לכן, להבנתך הטובה יותר תן לי לחלק את המושגים להלן.
- תרמילים ותקשורת מכולות
- שירותים
- חיבור חיצוני לשירותים באמצעות רשת Ingress
תרמילים ותקשורת מכולות
לפני שאגיד לך איך תרמילים מתקשרים, הרשה לי להציג לך מה זה תרמילים?
תרמילים
תרמילים הם יחידות בסיסיות של יישומי Kubernetes, המורכבות ממכולה אחת או יותר המוקצות על אותו מארח לשיתוף ערימת רשת ומשאבים אחרים. לכן, זה מרמז על כך שכל המכולות בתרמיל יכולות להגיע לאחרים על ידי מארח מקומי.
עכשיו, תן לי לתאר לך כיצד מתקנים תרמילים אלה?
ישנם שני סוגי תקשורת. ה תקשורת בין-צומת וה תקשורת פנים-צומת.
אז בואו נתחיל בתקשורת תוך-צמתית, אבל לפני כן הרשו לי להציג בפניכם את רכיבי רשת הפודים.
תוך-צומת תחת רשת
רשת תרמילים תוך-צומתית היא בעצם התקשורת בין שני צמתים שונים באותו תרמיל. תן לי להסביר לך בדוגמה.
נניח שחבילה עוברת מ- pod1 ל- pod2.
- החבילה עוזבת את הרשת של פוד 1 ב- eth0 ונכנסת לרשת השורש ב- veth0
- לאחר מכן, החבילה עוברת לגשר לינוקס (cbr0) המגלה את היעד באמצעות בקשת ARP
- לכן, אם ל- veth1 יש את ה- IP, הגשר יודע כעת לאן להעביר את החבילה.
עכשיו, באופן דומה, אני אספר לך על תקשורת התרמילים הבין-צומתית.
מעוניין ללמוד קוברנטס?צומת בין מתחת לרשת
שקול שני צמתים עם מרחבי שמות רשת שונים, ממשקי רשת וגשר לינוקס.
עכשיו, נניח שחבילה עוברת מ- pod1 ל- pod4 שנמצא בצומת אחר.
- החבילה עוזבת את רשת pod 1 ונכנסת לרשת הבסיס בכתובת veth0
- ואז החבילה עוברת לגשר לינוקס (cbr0) שאחריותו היא להגיש בקשת ARP למצוא את היעד.
- לאחר שהגשר מבין כי לפוד זה אין כתובת היעד, החבילה חוזרת לממשק הרשת הראשי eth0.
- החבילה עוזבת כעת את הצומת 1 כדי למצוא את יעדו בצומת השני ונכנסת לטבלת המסלולים שמנתבת את החבילה לצומת שבלוק ה- CIDR שלו מכיל את ה- pod4.
- אז, עכשיו החבילה מגיעה ל- node2 ואז הגשר לוקח את החבילה שמביאה בקשת ARP כדי לגלות שה- IP השייך ל- veth0.
- לבסוף, החבילה חוצה את זוג הצינורות ומגיעה ל- pod4.
אז, ככה תרמילים מתקשרים זה עם זה. עכשיו, בואו נמשיך הלאה ונראה כיצד שירותים עוזרים בתקשורת של תרמילים.
אז מה לדעתכם השירותים?
שירותים
בעיקרון, שירותים הם סוג של משאב שמגדיר פרוקסי להעברת הבקשות לסט של תרמילים, שיקבלו תנועה וייקבעו על ידי הבורר. לאחר יצירת השירות יש לו כתובת IP שהוקצתה שתקבל בקשות ביציאה.
כעת, ישנם סוגי שירותים שונים המעניקים לך אפשרות לחשוף שירות מחוץ לכתובת ה- IP של האשכול שלך.
סוגי שירותים
ישנם בעיקר 4 סוגי שירותים.
ClusterIP: זהו סוג השירות המוגדר כברירת מחדל שחושף את השירות ב- IP פנימי של אשכול על ידי כך שהשירות נגיש רק בתוך האשכול.
NodePort: זה חושף את השירות בכל ה- IP של הצומת ביציאה סטטית. מאז ClusterIP השירות, אליו ינתב שירות NodePort, נוצר באופן אוטומטי. אנו יכולים ליצור קשר עם שירות NodePort מחוץ לאשכול.
LoadBalancer: זהו סוג השירות שחושף את השירות באופן חיצוני באמצעות איזון העומס של ספק ענן. אז, שירותי NodePort ו- ClusterIP, אליהם ינתב מאזן העומסים החיצוני, נוצרים אוטומטית.
שם חיצוני : סוג שירות זה ממפה את השירות לתוכן ה- שם חיצוני שדה על ידי החזרת א CNAME רשומה עם הערך שלה.
אז חבר'ה שעניינם שירותים. כעת, ייתכן שאתה תוהה כיצד שירותים חיצוניים מתחברים לרשתות אלה נכון?
ובכן, זה על ידי לא אחר מאשר רשת Ingress .
רשת Ingress
ובכן, רשת Ingress היא הדרך החזקה ביותר לחשיפת שירותים מכיוון שהיא אוסף של כללים המאפשרים חיבורים נכנסים, שאותם ניתן להגדיר לתת שירותים חיצוניים באמצעות כתובות אתרים נגישות. אז זה בעצם משמש כנקודת כניסה לאשכול Kubernetes שמנהל גישה חיצונית לשירותים באשכול.
עכשיו, תן לי להסביר לך את העבודה של רשת Ingress עם דוגמה.
יש לנו 2 צמתים, עם מרחבי השמות של תרמיל הרשת והשורש עם גשר לינוקס. בנוסף לכך, יש לנו גם מכשיר Ethernet וירטואלי חדש בשם flannel0 (תוסף רשת) שנוסף לרשת הבסיס.
כעת, אנו רוצים שהחבילה תזרום מפוד 1 לפוד 4.
- אז, החבילה עוזבת את הרשת של pod1 ב- eth0 ונכנסת לרשת השורש ב- veth0.
- לאחר מכן הוא מועבר ל cbr0, מה שמגיש את בקשת ה- ARP למצוא את היעד ואז מגלה שלאף אחד בצומת זה אין את כתובת ה- IP של היעד.
- לכן, הגשר שולח את החבילה אל flannel0 מכיוון שטבלת המסלול של הצומת מוגדרת עם flannel0.
- כעת, הדמון של הפלנל מדבר עם שרת ה- API של Kubernetes כדי לדעת את כל ה- IP של ה- pod ואת הצמתים שלהם בהתאמה ליצירת מיפויים עבור ה- IP של Pods ל- IP של הצומת.
- תוסף הרשת עוטף את החבילה הזו בחבילה של UDP עם כותרות נוספות המשנות את מקורות ה- IP והיעד לצמתים שלהם, ושולחת את החבילה הזו דרך eth0.
- כעת, מכיוון שטבלת המסלולים כבר יודעת לנתב תנועה בין צמתים, היא שולחת את החבילה לצומת היעד 2.
- החבילה מגיעה ל- eth0 של node2 וחוזרת ל- flannel0 כדי להתבטל בקפסולה ופולטת אותה בחזרה למרחב השמות של רשת השורש.
- שוב, המנה מועברת לגשר לינוקס כדי להגיש בקשת ARP לברר את ה- IP השייך ל- veth1.
- סוף סוף החבילה חוצה את רשת השורשים ומגיעה ליעד Pod4.
אז, כך שירותים חיצוניים מחוברים בעזרת רשת כניסה. עכשיו, כשדיברתי על תוספי רשת, הרשו לי להציג בפניכם את רשימת תוספי הרשת הפופולאריים הזמינים.
עכשיו, אחרי שסיפרתי לך כל כך הרבה על רשת Kubernetes, הרשה לי להראות לך מקרה מקרה אמיתי.
מקרה מקרה: אשף עושר באמצעות רשת Kubernetes
Wealth Wizards היא פלטפורמת תכנון פיננסי מקוונת המשלבת תכנון פיננסי וטכנולוגיית תוכנה חכמה כדי לספק ייעוץ מומחה בעלות משתלמת.
אתגרים
כעת, היה חשוב ביותר לחברה לגלות במהירות ולסלק נקודות תורפה בקוד עם נראות מלאה של סביבת הענן שלה, אך רצתה לשלוט בתעבורה באמצעות הגבלות גישה.
לכן, הם השתמשו בתשתית Kubernetes לניהול אספקה והפעלה של האשכולות בעזרת כלים לניהול הפריסה והתצורה של מיקרו-שירותים ברחבי אשכולות Kube.
הם השתמשו גם בתכונת מדיניות רשת של Kubernetes כדי לאפשר להם לשלוט בתעבורה באמצעות מגבלות גישה.
כעת, הבעיה הייתה שמדיניות זו מכוונת יישומים ויכולה להתפתח רק עם היישומים, אך לא היה שום מרכיב לאכוף מדיניות זו.
לכן, הפיתרון היחיד שהחברה יכלה למצוא לשם כך היה להשתמש בתוסף רשת, ומכאן שהתחילו להשתמש ב- Weave Net.
פִּתָרוֹן
תוסף רשת זה יוצר רשת וירטואלית שיש לה בקר מדיניות רשת לניהול ואכיפת הכללים ב- Kubernetes. לא רק זה, אלא שהוא גם מחבר בין מכולות Docker בין מארחים מרובים ומאפשר גילוי אוטומטי שלהם.
אז נניח שיש לך עומס בעבודה באשכול ואתה רוצה לעצור כל עומס עבודה אחר באשכול שמדבר אליו. ניתן להשיג זאת על ידי יצירת מדיניות רשת המגבילה את הגישה ומאפשרת כניסה אליה רק דרך בקר הכניסה ביציאה ספציפית.
כעת, עם פריסתו בכל צומת Kubernetes, התוסף מנהל ניתוב בין פודים ויש לו גישה לתפעל את כללי ה- IPtables. במילים פשוטות, כל מדיניות מומרת לאוסף של כללי IPtables, מתואמים ומוגדרים על פני כל מכונה לתרגום תגי Kubernetes.
בסדר, עכשיו שעברת כל כך הרבה תיאוריה על רשת Kubernetes, הרשה לי להראות לך איך זה נעשה באופן מעשי.
ידיים למעלה
לכן, מתוך הנחה שכולכם התקנתם את Kubernetes במערכות שלכם, יש לי תרחיש להציג.
נניח שתרצה לאחסן שם מוצר ומזהה מוצר, לשם כך תזדקק ליישום אינטרנט. ביסודו של דבר, אתה זקוק למכולה אחת ליישום אינטרנט ואתה זקוק למכולה נוספת כ- MySQL עבור ה- backend, וכי יש לקשר את מיכל MySQL למיכל יישומי האינטרנט.
מה דעתך שאבצע את הדוגמה הנ'ל באופן מעשי.
בואו נתחיל!
שלב 1: צור תיקיה בספרייה הרצויה ושנה את נתיב הספריה העובדת לתיקייה זו.
mkdir HandsOn CD HandsOn /
שלב 2: כעת צור קבצי YAML פריסה עבור יישום האינטרנט ומסד הנתונים MySQL.
שלב 3: לאחר שתיצור את קבצי הפריסה, פרוס את שני היישומים.
kubectl להחיל -f webapp.yml kubectl להחיל -f mysql.yml
שלב 3.1: בדוק את שתי הפריסות.
קבל פריסה
שלב 4: כעת עליך ליצור שירותים עבור שני היישומים.
kubectl להחיל -f webservice.yml kubectl להחיל -f sqlservice.yml
שלב 4.1: לאחר יצירת השירותים, פרוס את השירותים.
שלב 4.2: בדוק אם השירותים נוצרו או לא.
לקבל שירות
שלב 5: כעת, בדוק את התצורה של תרמילים פועלים.
kubectl להשיג תרמילים
שלב 6: היכנס למכל בתוך תרמיל ה- webapp.
kubectl exec -it container_id bash nano var / www / html / index.php
שלב 6.1 : עכשיו, שנה את $ servername מ localhost לשם שירות SQL שהוא ' webapp-sql1 'במקרה זה, ו $ סיסמה מ ל ' אדוריקה ”. כמו כן, מלא את כל פרטי מסד הנתונים הנדרשים ושמור את קובץ index.php באמצעות קיצור המקשים Ctrl + x ואחרי זה לחץ י כדי לשמור וללחוץ להיכנס .
שלב 7: עכשיו, היכנס למיכל MySQL הקיים בתרמיל.
kubectl exec it container_id bash
שלב 7.1: קבל את הגישה לשימוש במיכל MySQL.
mysql -u שורש -p edureka
איפה -u מייצג את המשתמש ו- -p היא הסיסמה של המחשב שלך.
שלב 7.2: צור מסד נתונים ב- MySQL שישמש לקבלת נתונים מ- webapp.
צור מידע על מוצר
שלב 7.3: השתמש במסד הנתונים שנוצר.
השתמש בפרטי מוצר
שלב 7.4: צור טבלה במסד נתונים זה ב- MySQL אשר תשמש לקבלת נתונים מ- webapp.
צור מוצרים בטבלה (שם מוצר VARCHAR (10), מוצר_ VARCHAR (11))
שלב 7.5: כעת צא ממיכל MySQL גם באמצעות הפקודה יְצִיאָה .
שלב 8: בדוק את מספר היציאה עליו פועלת יישום האינטרנט שלך.
קבל שירותים
שלב 8.1: כעת, פתח את יישום האינטרנט במספר היציאה שהוקצה לו.
שלב 9: ברגע שלוחצים על הגש שאילתה , עבור לצומת בו פועל שירות MySQL שלך ואז היכנס למכולה.
זה יראה לך את התפוקה של כל מוצרי הרשימה, מהם מילאת את הפרטים.
מעוניין ללמוד קוברנטס?אם גילית שבלוג Kubernetes Network רלוונטי, עיין ב מאת אדוריקה, חברת למידה מקוונת מהימנה עם רשת של יותר מ -250,000 לומדים מרוצים הפרוסים ברחבי העולם.