PracticU

הסבר על Kubernetes - Deployment

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

הסבר על Kubernetes - Deployment
הרצאה ראשונה על יצירת אובייקטים בקוברנטיס: כתיבת קובץ YAML של Deployment, שליחתו לשרת, ובדיקת הפודים וה-ReplicaSet שנוצרים בעקבותיו.
השלבים העיקריים
1. מבנה הקובץ: קובץ YAML מתחיל ב-apiVersion וב-kind שמגדיר את סוג האובייקט, כאן Deployment. אחריהם באים metadata עם שם ותוויות, ו-spec עם ההגדרה עצמה.
2. סלקטור ותבנית: selector קובע לאילו פודים הדיפלוימנט אחראי לפי תוויות. template מגדיר איך לבנות פוד חדש. התוויות בתבנית חייבות להתאים לסלקטור, אחרת הדיפלוימנט לא מוצא את הפודים שלו.
3. הגדרת הקונטיינר: בתבנית מוגדר קונטיינר עם שם, אימג', משתני סביבה, פורט חשוף, ומאונט של תיקייה מהמארח לתוך הקונטיינר.
4. שליחה לשרת: kubectl apply -f שולח את הקובץ, ואז kubectl get pods מראה את הפוד במצב Creating ואחר כך Running. kubectl logs -f מציג את הפלט של הקונטיינר בזמן ההפעלה.
5. מבנה היררכי: הדיפלוימנט יוצר ReplicaSet, וה-ReplicaSet יוצר את הפודים. מחיקת פוד גורמת לשחזור אוטומטי, ומחיקת הדיפלוימנט מוחקת את כל השרשרת.
פקודות והגדרות
kubectl apply -f deployment.yaml, kubectl get deployment, kubectl describe deployment, kubectl get replicaset, kubectl get pods -o wide, kubectl describe pod, kubectl exec -it <פוד> -- bash, kubectl delete deployment.
טעויות נפוצות
ההרצאה הראתה פוד שנכשל בבדיקת החיים (liveness probe) כשמסד הנתונים עדיין לא היה מוכן, והקונטיינר הופעל מחדש. לכן כדאי להגדיר בדיקה מתאימה ולתת זמן המתנה מספיק.
שימו לב
מבנה קובץ ה-YAML תלוי ברווחים ובהזחה, ושגיאה קטנה בהזחה מובילה לתוצאה לא צפויה. ההרצאה הציגה שאפשר לראות את סטטוס הפוד, את ה-IP שלו ואת הנוד שעליו הוא רץ, בעזרת -o wide.
בסיום יודעים לכתוב Deployment בסיסי, לשלוח אותו לקלאסטר ולעקוב אחרי הפודים שנוצרו.
השיעור הבא בקורס: הסבר על Kubernetes - Services

פרקי ההרצאה: הסבר על Kubernetes - Deployment

  1. 00:00

    יצירת Deployment לפריסת קונטיינרים

  2. 02:49

    Selector: בחירת הפודים שה-Deployment מנהל

  3. 04:05

    Template: תבנית ליצירת הפודים

  4. 05:39

    Volume מסוג HostPath לתיקייה בדיסק

  5. 06:51

    הגדרת הקונטיינר: אימג', פורט ומשתני סביבה

  6. 09:11

    יצירת ה-Deployment עם kubectl apply

  7. 10:15

    בדיקת הפוד ולוגים של MySQL

  8. 12:58

    כניסה לקונטיינר MySQL עם kubectl exec

תמלול ההרצאה: הסבר על Kubernetes - Deployment

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

  1. 00:02

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

  2. 00:36

    לכתוב את הקובץ הזה, איך הוא בנוי ואנחנו ניקח אותו, נשלח לשרת של קוברנטיס ל-API שלו והוא ייצור לנו קונטיינרים.

  3. 00:48

    ובואו נתחיל. קודם כל אנחנו אומרים שזה API as a version ואומרים איזה סוג אובייקט. האובייקט שלנו נקרא deployment. מה זה deployment?

  4. 01:01

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

  5. 01:19

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

  6. 01:50

    deployment גם יודע לעדכן קונטיינרים אבל על זה נדבר בהמשך. אז יש לנו אובייקט מסוג deployment אנחנו נראה כל מיני סוגים אז פה אנחנו אומרים ל-API תיצור לי אובייקט מסוג deployment ותיתן לו מידע מטא דאטה איזה מידע לדוגמה השם שלו זה יהיה השם אני בכוונה הכנסתי שים לה דיפלוימנט שנראה

  7. 02:14

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

  8. 02:27

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

  9. 02:38

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

  10. 03:01

    על מה אתה מסתכל. אז כתוב פה שהסלקטור שלך, מכל הפודים שרצים, תבחר רק את אלו שהלייבל שלהם נמצא ב-match, התאמה מלאה. זה אומר ש-app wordpress client אחד, שימו לב, זה לייבל, יכלתי לכתוב פה לא מילת אפ, יכלתי לכתוב פה כל מילה שבא לי.

  11. 03:24

    הלייבל הזה, אין לו פה שום חוקים. אני כותב איזה מילה שבא לי ואיזה ערך שבא לי. מפתח, key ו-value, key ו-value, מה שבא לי. אז אני אומר, תקשיב, תחפש את כל הקונטיינרים, את כל הפודים.

  12. 03:42

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

  13. 04:01

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

  14. 04:26

    מה זה מטה דאטה? מה אתה תשים על האובייקט? אתה תשים על האובייקט את שתי התביעות האלו. ברור ששתי התוויות האלו חייבות להיות זהות לאלו, כן? זה חייב להיות זהה, אחרת הוא כל הזמן ייצר לי אובייקטים חדשים.

  15. 04:40

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

  16. 04:51

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

  17. 05:21

    של מה שהוא בונה, לתוויות של מה שהוא מייצר. ומה הוא הולך לייצר? הוא הולך לייצר קונטיינר, הוא הולך לייצר קונטיינר ולהצמיד לו ווליום.

  18. 05:34

    זוכרים? כמו בדוקר הרגיל. עכשיו, מה זה הווליום? הווליום שלנו יהיה מחובר לhost path שימו לב פה אני אומר לו לאן להתחבר אפשר להגיד לו לדוגמה להתחבר לענן כלשהו ל-AWS או לאז'ור אני אומר לו תתחבר לתיקייה בארדיסק הפיזי שלי תיקייה שנקראת mnt client 1 mysql זה מסוג די רקטורי זאת אומרת זאת תיקייה את התיקייה

  19. 06:05

    הזאת בארדיסק הפיזי אני אקרא לה mysql storage אחרי זה אני משתמש ב-mysql storage בתוך הקונטיינר כאן טוב בוא נראה מה יש לנו בתוך הקונטיינר אז אמרנו בתוך ספציפיקציה יש לנו ווליום ויש לנו קונטיינר בוא נראה ווליום מה אני אומר לו אני אומר לו איזה אימג' להשתמש בקונטיינר שימו לב דרך אגב אני יכולתי פה

  20. 06:33

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

  21. 06:53

    שם של קונטיינר, שימו לב, זה שם של קונטיינר, MySQL קונטיינר. Environment, משתנה סביבה, זוכרים שאנחנו בתוך הקונטיינר שמים משתנה סביבה כמו MySQL root password, MySQL database, MySQL user, זה קורא לזה משתנה סביבה.

  22. 07:13

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

  23. 07:28

    על הפורטים, איזה פורטים צריך לחשוף החוצה? צריך לחשוף החוצה פורט 3306, השם של הפורט מיי-אס-קיו-אל, אין לזה שום משמעות, זה שם של הפורט, כן?

  24. 07:44

    אפשר גם לא לכתוב שם של פורט. ובתוך הקונטיינר תחבר לי מאונט, לתוך תיקייה, בתוך הקונטיינר שנקראת varlib-maiosql, תחבר לי את המיי-אס-קיו-אל סטורייג'.

  25. 08:02

    מה זה מיי-אס-קיו-אל סטורייג'? זה זה שכתוב פה למטה. זאת אומרת, מחבר את ה-MySQL Storage, ש-MySQL Storage מוגדר ב-Volumes הכללי.

  26. 08:11

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

  27. 08:26

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

  28. 09:03

    בעל משמעות כאן אסור לעשות סתם רווחים טוב ראינו איך זה עובד בוא נעשה את זה אנחנו עושים קיוב סיטיאל אפלי מינוס F קובץ בשם deployment mysql client 1 אנחנו עושים אפלי הנה הוא כותב לי deployment created בוא נעשה קיוב סיטיאל אני רוצה לעשות מהר get pods ואני רואה שpods creating הוא רק יוצר אותו עוד לא יצר אותו

  29. 09:50

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

  30. 10:09

    עכשיו כשהקונטיינר הוא עדיין נמצא בהכנה, בואו נראה אם הוא נוצר, הנה ראנינג ועכשיו אנחנו יכולים לעשות לוג ואני רוצה מינוס F שלא יצא ממנו, שימשיך לרוץ, הנה אנחנו רואים מה קורה אצלו בלוגים, לוגים זה אומר הוא עושה קונסול רייטליין, כאילו מדפיס שורות על המסך, פה אני רואה מה הוא עושה הנה root localhost is created an empty password הנה זה כל מה

  31. 10:42

    שקורה אצלו בפנים כל הפקודות ה-right line שאנחנו רואים שהוא מריץ לוקח לו זמן בעצם להפעיל אני לא נוגע בו הוא רץ ומייצר את הכל לבד הנה אני רואה שהוא סיים mysql ready for connections mysqld ready for connections יפה מאוד בואו נראה רדי פור קונקשנס הוא מוכן טוב בואו ניכנס פנימה נראה שהוא באמת מוכן פה הוא כותב שהוא מוכן בגט פודס אני רואה גם שהוא מוכן אני רוצה

  32. 11:32

    אתם יודעים מה להיכנס איתכם לתוכו ולראות שהוא באמת מוכן אז אנחנו עושים קיוב ctl אקזק אקזק עכשיו נניח שאתם לא יודעים בדיוק איך כותבים אתם באים לצ'יט צ'יט פה לצ'יט צ'יט ועושים ctrl f אקזק ופה אתם רואים קיוב ctl אקזק מייפוד ופקודת לדוגמה ls סלאשים שימו לב שני סלאשים כזה דבר אתם שמים כשיש לכם רק קונטיינר אחד אם יש לכם כמה קונטיינרים אתם נותנים את השם

  33. 12:12

    של הקונטיינר זוכרים זה אומר בתוך אם יש לכם קונטיינר ספציפי שאתם רוצים אתם מציינים אותו אני מזכיר לכם איפה אתם רואים שם של קונטיינר פה בקונטיינרס אתם נותנים בתוך הקונטיינר את הנעים שלו אוקיי אם היה לי כמה קונטיינרים כאלו כמה קווים כאלו אז היו לי כמה קונטיינרים

  34. 12:39

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

  35. 13:00

    שם של קונטיינר מינוס מינוס ונכנס, נפעיל באש שם, נכון? בואו נראה.

  36. 13:31

    הופה, אנחנו בתוך הקונטיינר, שימו לב, אנחנו בתוך הקונטיינר שהרצנו. זאת אומרת, לקחנו API, את ה-yaml, שלחנו אותו לשרת, הוא הפעיל לנו קונטיינר, אני עכשיו רוצה לראות מה קורה שם בפנים.

  37. 13:48

    אז אתם יודעים מה נעשה? ניקח ונתחבר לתוך ה-MySQL, הרי אנחנו בתוך MySQL. ניכנס לתוך MySQL, יש לנו User Root, והוא מבקש פסוורד, נקיש לו את הפסוורד, איפה הפסוורד שלנו?

  38. 14:02

    בואו נלך לקחת את הפסוורד, הנה זה הפסוורד. נעשה לו קופי ונכניס אותו פה בפייסט. אנחנו בתוך MySQL, איזה יופי. בואו נפעיל פקודה show databases. הנה יש לנו דאטאבייס של worddb.

  39. 14:27

    בואו נעשה MySQL, זה ההגדרות שלו, use MySQL, זה הדאטאבייס הטכני שלו שקיים. נכנסים פנימה, דאטאבייס ג'נצ'ס, show databases, טייבלס לראות את הטבלאות

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

ההרצאה הקודמת: התקנה של Kubernetes - Kubectl

ההרצאה הבאה: הסבר על Kubernetes - Services

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

  • הסבר על Kubernetes

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

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