PracticU

קובץ YAML
Kubernetes

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

קובץ YAML Kubernetes
במקום פקודת kubectl run, אפשר לתאר פוד בקובץ YAML שמגדיר את התוצאה הרצויה. ההרצאה בונה קובץ כזה, משנה בו דרישות חומרה, ומוסיפה לו תוויות לסינון.
השלבים העיקריים
1. הקובץ: מעתיקים דוגמה מהאתר של Kubernetes לקובץ pod.yaml. בו פוד בשם nginx-pod עם קונטיינר אחד מ-image של nginx. את חלק הפורט מוחקים, כי התקשורת תילמד בנפרד.
2. יישום: kubectl apply -f pod.yaml. מתקבלת הודעה שהפוד נוצר. kubectl describe מראה אירועים (תזמון ל-node, משיכת image, יצירת הקונטיינר), את ה-node, ה-IP של הפוד וה-limits.
3. שינוי דרישות: מוחקים את הפוד עם kubectl delete pod. מוסיפים בקובץ resources ובו requests של שני מעבדים וארבעה ג'יגה זיכרון, ומריצים apply שוב. בניסיון הראשון נכשל כי requests חייב להיות תחת resources, ויש מבנה קבוע לקובץ.
4. יצירת YAML בלי דוגמה: kubectl run mypod עם --dry-run=client, פלט בפורמט YAML ושמירה לקובץ. מקבלים קובץ מוכן, ושם מוחקים את הסוגריים של resources ורושמים שמונה מעבדים ושמונה ג'יגה. שורה לא תקינה בגלל רווחים תוקנה בעריכה. בינתיים הפוד היה במצב Pending.
5. תוויות (labels): ב-describe רואים למשל run=mypod. מסננים עם kubectl get pods ו--l. אפשר להוסיף ב-YAML עוד תוויות כמו environment, team, app או version, ולהריץ apply בלי למחוק את הפוד. הקלסטר מזהה את השינוי ומעדכן אותו (configured). מסננים גם לפי שתי תוויות ביחד.
התוויות חשובות כי במציאות יהיו הרבה פודים, וגם ה-load balancer יפנה תקשורת לפודים לפי תוויות.
אחרי ההרצאה אפשר ליצור פוד מקובץ YAML, לייצר YAML מ-image בעזרת dry-run ולסנן פודים לפי תוויות.
השיעור הבא בקורס: הרבה קונטיינרים בפוד אחד - חלק 1

פרקי ההרצאה: קובץ YAML Kubernetes

  1. 00:00

    העתקת דוגמת YAML מהאתר

  2. 00:42

    מבנה ה-pod וה-container ב-YAML

  3. 01:19

    שמירה והרצת kubectl apply

  4. 01:54

    בדיקת ה-pod עם describe

  5. 02:30

    זיהוי node ו-IP פנימי

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

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

  1. 00:02

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

  2. 00:16

    בוא נעתיק את הדוגמה מתוך האתר של קוברנטיס. ניצור בשולחן העבודה קובץ טקסט חדש. נקרא לו pod.yaml. נעשה right click, Edit in Notepad ונדביק את הדוגמה שלנו.

  3. 00:29

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

  4. 00:46

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

  5. 01:02

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

  6. 01:14

    כל נושא התקשורת יטופל בסרטון נפרד, כי יש שם הרבה מה ללמוד. בואו נשמור את הכול. נעשה File, Save. כרגע אין לנו אף pod.

  7. 01:24

    אני בודק שpod.yaml נמצא בתיקייה הנוכחית. אכן קובץ קיים, מאה שישים ושמונה בתים. זה אומר מאה שישים ושמונה תווים, אותיות. ואני יכול להריץ kubectl apply. תיישם בתוך הקלאסטר את מה שאני אתן לך בקובץ pod.yaml.

  8. 01:43

    ובדקתי ש-pod YAML קיים אצלי בתיקייה הנוכחית. הוא כותב לי פה אזהרות, אני מתעלם מהם. מה שחשוב לי ש-pod בשם nginx-pod is created.

  9. 01:54

    ב-kubectl get pods אני רואה את ה-pod שלנו. אני יכול לעשות describe ולראות את מה שיש בפנים. קודם כל אני מסתכל פה בסוף. יש eventים, אירועים שהיו.

  10. 02:06

    האירוע הראשון כאן אני רואה שזה schedule. זה תזמון הקצאה של ה-pod שלנו על node פיזי מסוים בקלאסטר. BL9W זה השרת שנבחר להריץ את ה-pod הזה. אחרי זה מטפלים ב-image.

  11. 02:22

    ה-image כבר קיים. כבר הורדנו אותו בסרטונים קודמים. ואז נוצר הקונטיינר. ה-describe הזה מראה לי את כל האירועים שקרו בפנים בתוך ה-pod, ולמעלה שלו ב-kubectl describe, הכי למעלה אני רואה את השם של ה-pod.

  12. 02:38

    אני רואה את השרת הפיזי ואת ה-IP שלו. שרת פיזי נקרא node, node בקלאסטר. אני רואה את הלימיט, את המקסימום שמותר לו לצרוך, ואת ה-IP של ה-pod, את ה-IP הפנימי שלו.

  13. 02:51

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

  14. 03:04

    ובפנים אנחנו רואים nginx container. יש לנו קונטיינר אחד שדורש שני ג'יגה

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

ההרצאה הקודמת: כניסה לתוך הפוד - Kubernetes

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

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

  • הסבר על Kubernetes
  • קובץ Manifest
  • שחזור קובץ ב-Veeam
  • קובץ עם 14 מילון סיסמאות

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

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