
port הוא הפורט שהסרוויס חושף, ו-targetPort הוא הפורט בתוך הקונטיינר שאליו התעבורה מועברת.kubectl apply יוצר את הסרוויס, ו-kubectl get services מציג את ה-IP והפורט. kubectl describe service מציג את הסלקטור ואת נקודות הקצה (endpoints) שמקבלות את התעבורה.kubectl apply -f service.yaml, kubectl get services, kubectl describe service <שם>, kubectl get endpoints, kubectl delete service <שם>.הטקסט המלא של הדקות הראשונות בהרצאה «הסבר על Kubernetes - Services» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
שלום לכולם, בהרצאה הקודמת על קוברנטיס אנחנו יצרנו פודים בעזרת deployment ועכשיו אנחנו נחשוף סרוויסים החוצה. אז קודם כל אנחנו ננקה את מה שעשינו לפני כן, עשינו כל מיני קונטיינרים, כל מיני פודים שנתקעו לנו מההרצאה הקודמת, נעשה delete אליהם וגם את השני נמחוק, pods, נראה שהכל נקי.
יופי, אז יש לנו פוד אחד ואנחנו רוצים לחשוף אותו החוצה. למה לחשוף? כדי שוורדפרס יוכל להתחבר אליו. יכול להיות שיהיה לנו כמה פודים שנותנים את אותו שירות מ-SQL.
במקרה הזה יש לנו רק אחד. אז כדי לחשוף פוד החוצה, סרוויס החוצה, אנחנו מייצרים לו סרוויס שעוטף אותו. לפני שאנחנו נעשה את זה, אני רק רוצה להראות לכם את כתובת ה-IP של הפוד הזה ואת השם שלו, ובדסקרייב של הפוד הזה, קיופ סיטיאל דסקרייב של הפוד, אנחנו רואים את כתובת ה-IP שלו,
שזה 1232. שימו לב, רשת 120 זה רשת של הפודים. עכשיו, כדי להתחבר אליו, אנחנו מייצרים סרוויס, סרוויס, והקליינטים, מי זה הקליינט?
זה במקרה הזה וורדפרס, שזה הקליינט של מייסקיואל, הרי וורדפרס מתחבר למייסקיואל, אז מנקודת מבטו של מייסקיואל הוא הקליינט שלו, אז הוא יתחבר לא לכתובת הזאת אלא לסרוויס וסרוויס יעשה לו רוורס פרוקסי ויעביר את הפאקטים של הוורדפרס לפוד הספציפי הזה.
אז אנחנו הולכים לייצר מה שנקרא סרוויס, הסרוויס הזה יעבוד כרוורס פרוקסי ויעביר את הפאקטים לתוך הפוד הזה. יפה מאוד. שימו לב איך אנחנו יכולים לזהות שזה הפוד שלנו, יש לנו פה לייבלים, נכון?
יש לנו לייבלים, יפה מאוד. אז בואו נפתח את הקוד שלנו, את קובץ הים, אני כותב code: ונפתח לנו Visual Studio Code ואנחנו רואים פה איך ליצור אובייקט מסוג סרוויס.
עכשיו שימו לב מה יש לנו באובייקט מסוג סרוויס: יש לנו מטא דאטה, את השם שלו, אני יכול לשים לייבלים, זה כל מיני מידע על האובייקט, מידע נוסף, ויש לנו ספציפיקציה של הסרוויס, איזה פורטים הסרוויס הזה חושף כלפי חוץ וכלפי פנים לאן הוא מעביר, איך הוא בוחר לאיזה פודים להעביר,
מה ה-IP שלו בעולם החיצון, שימו לב ה-IP מרשת 10.96, אם אני לא אכתוב כלום הוא יבחר IP איזה שבא לו, אני יכול לציין ה-IP, אני יכול לא לציין אותו, דרך אגב אני חייב לציין מהטווח הנכון, בואו לא נציין שום IP, אתם יודעים מה? אני אמחוק את זה, זה סתם כדי להראות לכם שאפשר לרשום כתובת
IP ספציפית, ואיזשהו טייפ שלו. מה זה טייפ? האם הוא חשוף כלפי חוץ או שזה רק סרוויס פנימי בין הקונטיינרים?
שימו לב, ברירת מחדל זה קלאסטר IP, זה אומר שרק קונטיינרים, רק פודים יוכלו להגיע דרך הסרוויס הזה לפודים אחרים.
הוא למעשה רוורס פרוקסי לפודים אחרים. אוקיי, אז איך הוא בוחר לאיזה פוד להעביר את המידע? יש לו פה שני לייבילים כל פוד שיש עליו שני לייבילים האלו יכולים להיות גם אחרים אבל כל שני לייבילים שיש יקבלו ממנו פאקטים אז זה למעשה סלקטור שאומר לאיזה פודים להעביר את הטראפיק יפה ופורט אומר באיזה פורט הוא חשוף גם כלפי חוץ וגם באיזה פורט הוא מעביר את הטראפיק זה גם וגם כי לא כתבתי שום דבר
מעבר אז כתוב פה פורט 3306 הוא חושף כלפי חוץ עוברים עליו פאקטים ומעביר אותם לפודים עם הלייבלים האלו בפורט 3306. תשאלו אותי מה קורה עם פורט 1 בחוץ 1 ואפשר לעשות פה עוד שדות להוסיף פה עוד שדות נוספים פורט פנימי פורט חיצוני כל זה אפשר לעשות יפה מאוד אז דיברנו על זה שיש כמה טייפים יש טייפ שזה פנימי יש טייפ שהוא חושף כלפי חוץ
ויש טייפ שהוא שיתוף פעולה עם הענן, יש כמה סוגי טייפים, אנחנו נראה את זה בהמשך עוד טייפים. כרגע יש לנו סרוויס שחושף את ה-MySQL ללקוח שלו ל-Wordpress, שעדיין אין לנו את ה-Wordpress.
אז בואו נפרוס אותו. אנחנו עושים קיוב סיטי-אל אפליי, שולחים אותו לשרת את הקובץ בשם Service MySQL Client 1. Service MySQL Client 1. הוא כותב לי ש-Service Created, בואו נעשה קיוב ctl get services ואנחנו רואים שנוצר לנו סרוויס, שימו לב איזה כתובת הוא קיבל 109611 למרות שאני לא ציינתי לו איזה
כתובת, איזה port 3306, external IP הוא לא חושף כלפי חוץ זה אם היינו מחוברים לענן אפשר להגיד לקוברנטיס לעבוד בשיתוף פעולה עם הענן, אוקיי בואו נעשה את מה שאני הכי אוהב לעשות דיסקרייב על סרוויס מה sql client 1 סרוויס דיסקרייב עליו אנחנו רואים את השם של הסרוויס אנחנו רואים שהוא ב-namespace
default הנוטיישן שככה אני מחבר בינו לבין ענן אני רואה את הסלקטורים שלו אני רואה את הטייפ זה אומר שהוא לא חשוף כלפי חוץ ה-IP שלו של הסרוויס באיזה פורט שימו לב לפורט יכול להיות שם פה אפשר לכתוב שם של פורט נניח sql port target port, הנה זה שדה שלא הראיתי לכם
target port, זה לאיזה פורט בתוך הקונטיינר להעביר את זה ו-endpoints זה איזה קונטיינרים יקבלו את התקשורת, איזה קונטיינר יקבל את התקשורת, קונטיינר מ-2036, למה דווקא הוא?
למה דווקא הפוד הזה יקבל את התקשורת? בגלל שהוא מותאם לסלקטור הזה, יש? זה ה-endpoint הזה מאוד מאוד חשוב, פה זה אומר שזה באמת מעביר לאן שהוא את הפאקטים.
סשן אפיניטי זה אומר דבקות בסשן, זה כדי שאם התחלתי שיחה מול שרת אחד מסוים בבקאנד, הרי הוא סרוויס הזה חושף לי בIP אחד, מאחוריו עומדים כמה שרתים בבקאנד מאחורה שלו, אז אני יכול כל הזמן לדבר עם אותו שרת ולא כל פעם עם שרת אחר.
פה זה לא משנה לי כי אין לי פה בעיות של אות'ריזיישן, אני שולח שאילתה וזהו. איבנטס, אירועים, עזבו את זה עכשיו. בקיצור ככה אני חושף את הפורט החוצה, ועכשיו בסרוויס הזה אני יכול לחבר אליו את הוורטפרס, אז בואו נראה איך אנחנו עושים את זה.
נחזור לכאן ונפתח את הקובץ של הוורטפרס קליינט. אז עכשיו אנחנו מייצרים וורטפרס קליינט. עכשיו, וורטפרס קליינט אנחנו נעשה כבר בשיטה יותר משוכללת, נעשה גם את הסרוויס שלו וגם את הדיפלוימנט שלו באותו קובץ, זאת אומרת את שני האובייקטים ניצור, גם את הדיפלוימנט שמייצר לי את הוורדפרס, את הפרונט-אנד,
וגם את הסרוויס שהוא חושף כלפי חוץ ליוזרים נעשה בקובץ אחד, ויש לנו פה סימן מפריד, זה אומר, נגמר אובייקט אחד, מתחיל אובייקט אחר.
זה אומר, באותו קובץ ימל אני יכול לייצר כמה אובייקטים. אז תחשבו שפה אנחנו פורסים את הקונטיינרים, את הנודים של וורדפרס, ואחרי שהם כבר פורסים אצלנו, דרך אגב, אם נסתכל, נקפוץ קצת קדימה, אנחנו רואים פה שקונטיינר של וורדפרס מתחבר לדאטאבייס הוסט סרוויס של מייסקיואל.
נכון? מייסקיואל חשוף כלפי הלקוחות שלו דרך הסרוויס, ופה אני מציין את השם של הסרוויס. אז הקונטיינר של וורדפרס ידבר עם מייסקיואל דרך הסרוויס, הוא ישלח את זה לסרוויס, והסרוויס יעביר את זה לתוך הפוד הנכון.
למה זה טוב? כי אם פוד אחד ימות ואחד אחר יקום, ה-DNS שלו, נכון? פה זה כאילו ה-DNS עובד מאחורי הקלעים. ה-DNS שלו, לא יהיה לו קאש לא נכון.
תחשבו שנניח לא היה סרוויסים, הייתי ישר אומר לו לדבר ישירות עם ה-IP של הפוד ההוא. מה קורה אם הפוד ההוא מת? מה קורה אם הפוד ההוא מתחלף? מה קורה אם השם של ה-DNS מתחלף?
אז יש לנו פה סרוויס שתמיד חי, ואם פודים מתחלפים הוא מתעדכן מיידית, והקליינטים תמיד יתחברו ל-reverse proxy. זה היה ב-DNS הרגיל שאנחנו מכירים להתחבר ל-DNS הרגיל ישירות, שהוא עושה קאשינג בקליינט וגם אם IP משתנה אתה עדיין מתחבר לקאש הישן.
אז אנחנו רוצים לעשות רברס פרוקסי וזהו. אז הקליינט שזה וורדפרס מתחבר ל-SQL דרך הסרוויס שהוא מפרסם אותו. ואת הוורדפרס גם צריך לפרסם ליוזרים כבר הרגילים שבאים.
אז אנחנו פה מדברים איך לחשוף את הוורדפרס החוצה כלפי היוזרים ואנחנו אנחנו יכולים לראות פה דברים הבאים, בואו נתחיל מההתחלה.
גם פה יש לנו סרוויס שיש לו שם WordPress Client 1 Service, יש לו פורטים וסלקטור, לדוגמה הסלקטור שלו זה הסלקטור איזה קונטיינרים לבחור. אם אנחנו נקפוץ קדימה אנחנו נראה שבטמפלייט נכון שהוא משכפל, בטמפלייט שמשכפל הדיפלוימנט אנחנו שמים את שני התוויות האלו.
שני התוויות האלו הם גם בתוך הטמפלייט המשוכפל בעצם בתוך הפוד, הוא גם בתוך הדיפלוימנט שהוא עוקב אחרי הטמפלייט הזה, אחרי התוויות האלו, ככה הוא יודע איזה פודים שייכים לו וגם זה כאן אותן תוויות ככה הסרוויס יודע לאן להעביר
את המידע. יופי, זה סלקטור ששימו לב שלוש פעמים התוויות האלו חוזרות על עצמם גם בסרוויס שיודע לאן להעביר, גם בדיפלוימנט שיודע אחרי איזה קונטיינרים לעקוב וגם בתוך הקונטיינר עצמו, בתוך הפוד עצמו.
טוב, מה חדש? יש פה טייפ חדש שנקרא Noteport. זוכרים? פה היה קלאסטר IP שזה משהו פנימי. Noteport זה כבר ברמת הברזל שלי, ברמת המחשב הפיזי, פוסף את זה החוצה.
זה אומר שזה כבר צמוד לעולם החיצון. ברגע שאני עושה Noteport אני יכול להתחבר מבחוץ פנימה. ואז יש לנו שדה נוסף שנקרא Noteport, זה אומר באיזה פורט בחוץ אני חושף את זה, אני חושף את זה בחוץ בפורט 32,777. שימו לב, זה לא פורט 80. למה לא פורט 80? כי יהיה לי שני קליינטים, קליינט 1 וקליינט 2. אם אני אתן לקליינט 1 פורט 80,
מה יהיה עם קליינט 2? אז בפורט 80 האמיתי אני אשים אחרי זה רוורס פרוקסי, כמו שעשינו בהרצאות קודמות, שיסתכל על ה-host header, על הכותרת של הבקשה, ויחליט למי הוא מעביר אז בינתיים אני חושף את השירות בפורט 32,777 אפשר יהיה להתחבר לשירות דרך הפורט הזה ואפשר יהיה להתחבר דרך פורט 80 שאת זה נעשה
אחרי זה אז כרגע אני חושף את הפורט ב-32,777 שימו לב אני נותן לפורט הזה שם אני נותן לו פורט חיצוני אני נותן לו פורט פנימי זה ברמת הסרוויס זה סרוויס כן זה הסרוויס האובייקט הזה של הסרוויס אני אומר שזה ב-tcp וזה ברמת ההוסט הפיזי, ברמת המחשב הפיזי זה יהיה 32.777.
זאת אומרת המחשב הפיזי שלי יקבל פניות בפורט