PracticU

הרבה קונטיינרים
בפוד אחד - חלק 1

בלי כתוביותעם כתוביות
PracticU › קורס קוברנטיקס - Kubernetes › הרבה קונטיינרים בפוד אחד - חלק 1
מילון מושגים:
קונטיינר - חבילה קלה ומבודדת שאורזת אפליקציה עם כל תלויותיה, ורצה באופן אחיד בכל סביבה, למשל ב-Docker.
ווליום - יחידת אחסון לוגית על דיסק או מספר דיסקים. ב-Docker, מנגנון לשמירת נתונים מחוץ לקונטיינר.
Linux - מערכת הפעלה בקוד פתוח מבוססת ליבת Linux, נפוצה מאוד בשרתים וקיימת בהפצות רבות כמו Ubuntu.
לולאה - מבנה בקרה שחוזר על קטע קוד שוב ושוב כל עוד תנאי מתקיים או עבור כל פריט באוסף.
לוג - רישום מתועד של אירועים ופעולות שמתרחשים במערכת או בתוכנה, המשמש למעקב ולאיתור תקלות.
HTML - שפת הסימון שבה בונים את מבנה ותוכן דפי האינטרנט, באמצעות תגיות שמגדירות כותרות, פסקאות, קישורים ועוד.
קוד מקור - הקוד שמפתחים כותבים בשפת תכנות, לפני הידור, המגדיר את פעולת התוכנה.
פרוקסי - שרת מתווך שמעביר בקשות בין לקוח ליעד, ויכול לשמש להסתרה, לסינון, למטמון או לבקרת גישה.

הרבה קונטיינרים בפוד אחד - חלק 1
ההרצאה מציגה פוד עם כמה קונטיינרים (multi container pod): קובץ YAML שבו קונטיינרי אתחול, קונטיינר ראשי ו-Sidecar שחולקים דיסק משותף, בלי לשנות את ה-image המקורי של nginx. ההרצאה מתארת את הקובץ, וההרצה עצמה בהרצאה הבאה.
מה יש בקובץ
1. Volume משותף: מכריזים על דיסק בשם share data בלי מאפיינים. המידע נשמר בפועל בדיסק הפיזי של ה-node. בהמשך עושים לו mount לקונטיינרים השונים.
2. init containers: רצים אחד אחרי השני, וכל אחד חייב להסתיים בהצלחה (קוד אפס) לפני שהבא אחריו מתחיל. רק אחרי שכולם מסתיימים עולים הקונטיינרים הרגילים, והם עצמם נמחקים. הם מבוססים על image של Linux קטן (כ-5 מגה).
3. קונטיינר ההמתנה: ממתין ל-database. הוא בודק בלולאה עם netcat אם יש חיבור (בדוגמה גוגל בפורט 443, ובמציאות שם של שירות ה-database ופורט 3306), ממתין עשר שניות בין בדיקות ומדפיס הודעה ל-log. כך האתר הראשי לא עולה לפני ה-database.
4. קונטיינר טעינת נתונים: כותב הודעה ל-log ול-index.html בתיקייה שממופה ל-volume המשותף, ואז ממתין עשר שניות ומדפיס done. שני חיצים מוסיפים לסוף הקובץ ולא מוחקים את התוכן.
5. קונטיינר ההרשאות: מוסיף הודעה לקובץ ומחליף הרשאות על index.html. כך משתמשים ב-image המקורי של nginx בלי ליצור image משלנו.
6. הקונטיינר הראשי ו-Sidecar: ה-nginx מגיש את התיקייה המשותפת. לצדו רץ Sidecar ("עוזר נהג") עם while true שמדפיס ללוג ומוסיף שעה ותאריך לקובץ אחת לעשר שניות. nginx אינו יודע שמישהו מעדכן את הקובץ.
למה זה שימושי
- אין נוגעים בתוכנה המקורית (ללא קוד מקור או כשיש הוראה שלא לשנותה).
- Sidecar יכול לשאוב לוג מהתיקייה המשותפת ולשדר למערכת לוגים חדשה, לשמש proxy לחיבור מאובטח, או כמתאם שמחליף פורמט נתונים.
- שני הקונטיינרים באותו פוד קמים, מתים וחולקים אותה כתובת IP.
אחרי ההרצאה אפשר להסביר את התפקיד של init containers, של Sidecar ושל volume משותף בפוד.
השיעור הבא בקורס: הרבה קונטיינרים בפוד אחד - חלק 2

פרקי ההרצאה: הרבה קונטיינרים בפוד אחד - חלק 1

  1. 00:00

    מהו multi container pod

  2. 00:42

    הגדרת volume משותף

  3. 01:20

    init containers לאתחול ראשוני

  4. 01:57

    המתנה לתקשורת עם netcat

תמלול ההרצאה: הרבה קונטיינרים בפוד אחד - חלק 1

הטקסט המלא של הדקות הראשונות בהרצאה «הרבה קונטיינרים בפוד אחד - חלק 1» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:02

    שלום לכולם. בהרצאה זו נקים כמה קונטיינרים בתוך אותו pod, מה שנקרא multi container pod. ושני הקונטיינרים האלו הם מתים ביחד, קמים ביחד, חיים ביחד והם משתפים ביניהם את אותה כתובת IP.

  2. 00:17

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

  3. 00:33

    בואו נראה את כל זה בפעולה. קודם כל יש לנו פה קובץ pod נקודה YAML, שבפנים אני כותב שאני הולך להקים pod בשם multi container pod. אני נותן לו כמה תגיות, זה לא חובה.

  4. 00:47

    זה המידע הכללי על ה-pod עצמו. מה קורה בפנים? בפנים יש לנו volume משותף, דיסק משותף, נקרא לו share data. זה למעשה הדיסק הירוק הזה.

  5. 00:58

    אנחנו נותנים לו שם וירטואלי, במקרה שלי share data, ואני לא נותן לו שום מאפיינים. בפועל המידע שיירשם ב-volume הזה יישמר בתוך הדיסק הפיזי של ה-node, של המחשב הפיזי. אז יצרנו volume share data, ואחרי זה אנחנו מחברים אותו, עושים mount לקונטיינרים שונים.

  6. 01:21

    תכף נגיע לכל הנושא של ה-mount. בינתיים אנחנו בשלב הראשון של פשוט להכריז על הקמה של volume משותף, של דיסק משותף. הגענו ל-init containers, שזה הקונטיינרים שנועדו לאתחול ראשוני בלבד.

  7. 01:35

    לדוגמה, יש לנו קונטיינר בשם wait for database. תמתין ל-database שיעלה. הוא מבוסס על image מאוד קטן של Linux. הלינוקס הכי קטן שאני ראיתי, הוא משהו כמו חמש מגה בייט.

  8. 01:49

    ומה קורה ב-image הזה? מורצת הפקודה bin sh, שזה ה-CLI, והוא מריץ command. איזה command? מינוס C, את כל ה-argument הזה.

  9. 02:00

    מה כתוב פה? תמתין עד שתוכנת netcat, שבודקת תקשורת, לא תחזיר תשובה חיובית מגוגל דוט קום בפורט ארבע ארבע שלוש. זאת אומרת, אני מחכה במקרה הזה לגוגל, אבל במציאות הייתי רושם נניח db service פורט שלוש שלוש אפס שש.

  10. 02:18

    ומה הוא עושה בזמן ההמתנה? הוא כותב הודעה על המסך, ממתין ל-MySQL

לקורס המלא: קורס קוברנטיס – Kubernetes

ההרצאה הקודמת: קובץ YAML - Kubernetes

ההרצאה הבאה: הרבה קונטיינרים - בפוד אחד - חלק 2

הרצאות קשורות מקורסים אחרים

  • שיטה לניהול Reducer אחד בלבד
  • אירוח 3 אתרים על שרת IIS אחד
  • הגדרת מספר אתרי אינטרנט - על שרת אחד
  • העברה של וונדוס מדיסק אחד לתוך RAID

קורסים נוספים במסלול

  • קורס AWS - ניהול מכונה וירטואלית בענן
  • קורס Terraform - DevOps - Azure & AWS
  • קורס Docker - עם Swarm Cluster
  • קורס DevOps - Ansible
  • קורס PowerShell
  • קורס Git ו-GitHub עם Visual Studio