PracticU

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

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

הרבה קונטיינרים בפוד אחד - חלק 2
בהדגמה חיה רואים איך כמה קונטיינרים באותו pod חולקים דיסק משותף ו-IP אחד, ובאיזה סדר pod נוצר, רץ ונמחק.
איך זה עובד
1. המבנה: ב-pod.yaml יש שלושה קונטיינרים לאתחול ראשוני וקונטיינר nginx רגיל של אתר, וכולם מחוברים לאותו volume משותף. קונטיינר צדדי נוסף מוסיף כל עשר שניות שורה לסוף index.html בתיקייה המשותפת, בלי שה-image המקורי של nginx משתנה.
2. מחזור החיים: אחרי kubectl apply -f pod.yaml ה-pod עובר מ-pending ל-init, ואז ל-pod initializing. קונטיינרי האתחול רצים אחד אחד, ורק כשכולם מסיימים בהצלחה עוברים לקונטיינרים הרגילים. עם kubectl get pod -w רואים זאת בשידור חי.
3. describe: קונטיינרי האתחול מופיעים במצב terminated עם הסיבה completed וקוד יציאה אפס. הם לא נספרים בעמודת Ready, שמראה שניים מתוך שניים.
4. האתר: אחרי port forward אפשר לגלוש ל-127.0.0.1:8080 ולראות מידע משני קונטיינרי האתחול ושורה חדשה כל עשר שניות. גם ההרשאות של index.html שונו על ידי קונטיינר האתחול והפכו ל-RX.
5. דיסק משותף: קובץ 111.txt שנוצר מקונטיינר אחד הופיע גם בקונטיינר הצדדי, כי שניהם רואים את אותה תיקייה.
6. מחיקה: ב-kubectl delete -f pod.yaml נשלחת הודעת terminating וניתנת תקופת חסד של שלושים שניות. הקונטיינר רץ בלולאת while true, אז Kubernetes השמיד אותו בכוח והציג הודעות error.
פקודות והגדרות
- kubectl get pod -w לצפייה בשינויי מצב.
- kubectl exec עם ציון הקונטיינר, כי ב-pod עם כמה קונטיינרים חובה לציין באיזה מהם להריץ (bin/bash, או bin/sh בקונטיינר הקטן).
- kubectl logs <pod> -c <container> ללוג של קונטיינר מסוים.
- tail -f על הקובץ לעקוב אחרי עדכוניו.
אחרי הדוגמה אפשר להסביר איך קונטיינרים באותה קפסולה משתפים מידע, ומה סדר ההפעלה של קונטיינרי האתחול והרגילים.

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

  1. 00:00

    מחזור חיים של pod

  2. 00:45

    קונטיינר שמעדכן את הדיסק המשותף

  3. 01:21

    החלפת תוכן האתר מקונטיינר צדדי

  4. 02:04

    הרצת apply וסדר ה-init

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

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

  1. 00:02

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

  2. 00:15

    ונדבר על lifecycle, על מחזור חיים של pod. קודם כל אני מריץ פה kubectl get pod -w. מינוס דבליו זה אומר watch. תראה לי את כל המצבים של ה-pod. זה נראה שהוא תקוע, אבל למעשה הוא ממתין לעדכונים והולך להראות לנו אותם.

  3. 00:33

    ויש לי פה קובץ pod.yaml עם שלושה קונטיינרים שנועדו לאתחול ראשוני, ואחרי שהם מסיימים את האתחול של המידע המשותף פה בדיסק המשותף, רק אז יופעל הקונטיינר של nginx של אתר Web, של אתר אינטרנט, שגם הוא מחובר לאותו הדיסק.

  4. 00:54

    ויותר מזה, כל עשר שניות, שימו לב, יש לי פה קונטיינר שהולך לעדכן גם הוא את הדיסק המשותף. זאת ההודעה Echo. את השעה המקורית תוסיף בסוף של הקובץ index.html בתיקייה הזאת, וזאת בדיוק תיקייה שממופל ל-share data וגם nginx מחובר לווליום הזה.

  5. 01:17

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

  6. 01:35

    בואו נריץ פקודת kubectl apply -f לקובץ pod.yaml, שזה הקובץ הזה שלנו, pod.yaml, ונראה איך כל הקונטיינרים נוצרים לפי איזה סדר. כרגע אין לנו אף קונטיינר ב-cluster.

  7. 01:52

    ברגע שאני לוחץ Enter פה הוא נותן לי הודעה שהוא יצר את ה-pod, multi-container pod, אבל בפועל הוא במצב pending. הוא ממתין שאיזשהו שרת ייקח על עצמו הקמה של ה-pod הזה.

  8. 02:05

    ועכשיו הוא מתחיל init. מריץ את הקונטיינר הראשון מתוך השלושה של האתחול הראשוני. הנה אנחנו רואים פה ממש בשידור חי איך הוא

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

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

ההרצאה הבאה: הגדרת Service - מסוג ClusterIP - בתוך Kubernetes

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

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

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

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