
apiVersion וב-kind שמגדיר את סוג האובייקט, כאן Deployment. אחריהם באים metadata עם שם ותוויות, ו-spec עם ההגדרה עצמה.selector קובע לאילו פודים הדיפלוימנט אחראי לפי תוויות. template מגדיר איך לבנות פוד חדש. התוויות בתבנית חייבות להתאים לסלקטור, אחרת הדיפלוימנט לא מוצא את הפודים שלו.kubectl apply -f שולח את הקובץ, ואז kubectl get pods מראה את הפוד במצב Creating ואחר כך Running. kubectl logs -f מציג את הפלט של הקונטיינר בזמן ההפעלה.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.-o wide.הטקסט המלא של הדקות הראשונות בהרצאה «הסבר על Kubernetes - Deployment» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
שלום לכולם ברוכים הבאים להרצאה ראשונה על יצירת אובייקטים בתוך קוברנטיס אנחנו הולכים לפרוס קונטיינרים דרך מערכת של קוברנטיס בהרצאה קודמת סידרנו שקיוב סיטיאל יעבוד עם השרת ויהיה לנו מותקן עכשיו הוא עובד לנו ואנחנו רוצים להתחיל לבנות אובייקטים לעשות למעשה קונטיינרים אז אנחנו מייצרים קובץ מסוג YAML, עשיתי פה קובץ YAML ואנחנו הולכים לראות איך
לכתוב את הקובץ הזה, איך הוא בנוי ואנחנו ניקח אותו, נשלח לשרת של קוברנטיס ל-API שלו והוא ייצור לנו קונטיינרים.
ובואו נתחיל. קודם כל אנחנו אומרים שזה API as a version ואומרים איזה סוג אובייקט. האובייקט שלנו נקרא deployment. מה זה deployment?
למעשה מערכת שאחראית על ליצור קונטיינרים אבל קוברנטיס אני מזכיר לכם מנהל לא את הקונטיינרים ישירות אלא קבוצות של קונטיינרים שנקראים פודים.
פוד לרוב יכיל רק קונטיינר אחד אבל ככה עובד קוברנטיס אז הוא ייצור לנו פודים ובתוך פוד יהיה קונטיינר. אז deployment דואג שיהיה לנו קונטיינרים לפי הכמות שנגיד לו ברירת מחדל אחד ואם שרת עם אותו קונטיינר נופל הוא ירים את האימג' הזה את הקונטיינר הזה על שרת אחר זה נקרא deployment.
deployment גם יודע לעדכן קונטיינרים אבל על זה נדבר בהמשך. אז יש לנו אובייקט מסוג deployment אנחנו נראה כל מיני סוגים אז פה אנחנו אומרים ל-API תיצור לי אובייקט מסוג deployment ותיתן לו מידע מטא דאטה איזה מידע לדוגמה השם שלו זה יהיה השם אני בכוונה הכנסתי שים לה דיפלוימנט שנראה
איפה זה יופיע במקומות אחרים. מה עוד אפשר לשים במטה דאטה? לדוגמה לייבלים, תביעיות, ואז כשיש לנו הרבה דיפלוימנטים או הרבה פרויקטים אני יכול לסנן לפי תביעית מסוימת.
בכלל נושא של תביעיות לייבלים בעולם של קוברנטיס מאוד מאוד חשוב. כאן אני לא שמתי לייבלים כי אני מנסה כמה שפחות לבלבל אתכם.
הלאה, איך בנוי הדיפלוימנט חוץ משם שלו שזה מטה דאטה? יש לנו פה ספציפיקציה שלו, איך הוא בנוי. והוא בנוי מסלקטור וטמפלייט. סלקטור אומר לו מה לבחור, מה לבחור מתוך הפודים הקיימים, מתוך הקונטיינרים הקיימים, כשלך, על מה אתה משגיח,
על מה אתה מסתכל. אז כתוב פה שהסלקטור שלך, מכל הפודים שרצים, תבחר רק את אלו שהלייבל שלהם נמצא ב-match, התאמה מלאה. זה אומר ש-app wordpress client אחד, שימו לב, זה לייבל, יכלתי לכתוב פה לא מילת אפ, יכלתי לכתוב פה כל מילה שבא לי.
הלייבל הזה, אין לו פה שום חוקים. אני כותב איזה מילה שבא לי ואיזה ערך שבא לי. מפתח, key ו-value, key ו-value, מה שבא לי. אז אני אומר, תקשיב, תחפש את כל הקונטיינרים, את כל הפודים.
אנחנו כרגע מניחים שבתוך כל פוד יש קונטיינר אחד, ואני במקום להגיד קונטיינר אומר פוד, כי קוברנטיס עובד עם פודים. אז תמצא לי את כל הפודים שיש להם שתי תביעות כאלו והם שלך.
אם חסר, נניח נפל שרת, תרים עוד אחד. אז זה סלקטור, על מה הוא מסתכל. ויש לנו טמפלייט. טמפלייט זה מה אתה משכפל, מה אתה מייצר. אז הטמפלייט הזה גם מתחלק לשתיים. אתה הולך לייצר לי אובייקטים שיש לו מטה דאטה וספציפיקציה של שכפול.
מה זה מטה דאטה? מה אתה תשים על האובייקט? אתה תשים על האובייקט את שתי התביעות האלו. ברור ששתי התוויות האלו חייבות להיות זהות לאלו, כן? זה חייב להיות זהה, אחרת הוא כל הזמן ייצר לי אובייקטים חדשים.
זה אומר, אני אומר לו, דרך טמפלייט, תייצר לי אובייקטים חדשים עם שתי תוויות כאלו, ועל מה אתה משגיח? בדיוק על אותן תוויות אתה גם תשגיח, כי הם שייכים לך.
יש פה המון המון גמישות. אם אני אצייר פוד לבד ואני אתן לו את שתי התוויות האלו, הוא יחשוב שזה שלו. אז הוא למעשה הולך לשכפל לי את הטמפלייט, ובתוך הטמפלייט ייצר איזשהו בייק, תכף נראה, וישים עליו את התוויות האלו, שימו לב, זה חובה, זה חובה שזה יהיה תואם לזה, הסלקטור שאומר לו על מה להשגיח חייב להיות תואם למטה דאטה
של מה שהוא בונה, לתוויות של מה שהוא מייצר. ומה הוא הולך לייצר? הוא הולך לייצר קונטיינר, הוא הולך לייצר קונטיינר ולהצמיד לו ווליום.
זוכרים? כמו בדוקר הרגיל. עכשיו, מה זה הווליום? הווליום שלנו יהיה מחובר לhost path שימו לב פה אני אומר לו לאן להתחבר אפשר להגיד לו לדוגמה להתחבר לענן כלשהו ל-AWS או לאז'ור אני אומר לו תתחבר לתיקייה בארדיסק הפיזי שלי תיקייה שנקראת mnt client 1 mysql זה מסוג די רקטורי זאת אומרת זאת תיקייה את התיקייה
הזאת בארדיסק הפיזי אני אקרא לה mysql storage אחרי זה אני משתמש ב-mysql storage בתוך הקונטיינר כאן טוב בוא נראה מה יש לנו בתוך הקונטיינר אז אמרנו בתוך ספציפיקציה יש לנו ווליום ויש לנו קונטיינר בוא נראה ווליום מה אני אומר לו אני אומר לו איזה אימג' להשתמש בקונטיינר שימו לב דרך אגב אני יכולתי פה
לעשות יותר מקונטיינר אחד אם הייתי מגדיר פה עוד כמה קונטיינרים כמו האימג' הזה הייתי שם עוד מקף אימג' ועוד מקף אימג' היה לי פוד אחד עם כמה אימג'ים בפנים אז כרגע יש לנו רק אחד אימג' של MySQL זה למעשה אימג' הרגיל של דוקר כן בסוף זה אימג' רגיל.
שם של קונטיינר, שימו לב, זה שם של קונטיינר, MySQL קונטיינר. Environment, משתנה סביבה, זוכרים שאנחנו בתוך הקונטיינר שמים משתנה סביבה כמו MySQL root password, MySQL database, MySQL user, זה קורא לזה משתנה סביבה.
פה, דרך אגב, לייבנס פרוב, כרגע אנחנו לא נדבר על זה, בגדול ככה הוא בודק שהשירות התחיל לעבוד, שהוא חי וקיים, שאפשר להפוך אותו למצב זמין ללקוחות.
על הפורטים, איזה פורטים צריך לחשוף החוצה? צריך לחשוף החוצה פורט 3306, השם של הפורט מיי-אס-קיו-אל, אין לזה שום משמעות, זה שם של הפורט, כן?
אפשר גם לא לכתוב שם של פורט. ובתוך הקונטיינר תחבר לי מאונט, לתוך תיקייה, בתוך הקונטיינר שנקראת varlib-maiosql, תחבר לי את המיי-אס-קיו-אל סטורייג'.
מה זה מיי-אס-קיו-אל סטורייג'? זה זה שכתוב פה למטה. זאת אומרת, מחבר את ה-MySQL Storage, ש-MySQL Storage מוגדר ב-Volumes הכללי.
שימו לב, זה ווליום בתוך קונטיינר ספציפי, זה ווליום שהוא משותף לכל הקונטיינרים בפוד. עוד פעם, תראו, אני סוגר את זה, אז אני רואה שהווליום הזה הוא ברמת קונטיינר.
זה אומר שאם היה לי עוד אימג' גם הוא היה יכול לעשות מונט לתיקייה הזאת. אז ראינו איך הוא בנוי. בגדול זה הכל אותו דבר, כמו שהיה לנו בסטאק, בגדול זה הכל אותו דבר וזה כל הקובץ ככה הוא עשוי API מטא דאטה עכשיו מאוד מאוד חשוב ככה לכווץ את זה ולסדר את זה זה מאוד מאוד חשוב שתבדקו שהכל תקין אתם רואים זה ברמה הזאת וזה ברמה הזאת אתם רואים לפי הקו כל רווח
בעל משמעות כאן אסור לעשות סתם רווחים טוב ראינו איך זה עובד בוא נעשה את זה אנחנו עושים קיוב סיטיאל אפלי מינוס F קובץ בשם deployment mysql client 1 אנחנו עושים אפלי הנה הוא כותב לי deployment created בוא נעשה קיוב סיטיאל אני רוצה לעשות מהר get pods ואני רואה שpods creating הוא רק יוצר אותו עוד לא יצר אותו
אם אנחנו ננסה לעשות קיוב סיטיאל לוגס לראות את הלוגים שלו שזה למעשה פקודות רייטליין שנותנים לנו המתכנתים, אנחנו נראה שהוא לא יכול בגלל שהוא ממתין שהוא יהיה סטארטד, הוא רק מכין את הקונטיינר, הוא רק מכין אותו.
עכשיו כשהקונטיינר הוא עדיין נמצא בהכנה, בואו נראה אם הוא נוצר, הנה ראנינג ועכשיו אנחנו יכולים לעשות לוג ואני רוצה מינוס F שלא יצא ממנו, שימשיך לרוץ, הנה אנחנו רואים מה קורה אצלו בלוגים, לוגים זה אומר הוא עושה קונסול רייטליין, כאילו מדפיס שורות על המסך, פה אני רואה מה הוא עושה הנה root localhost is created an empty password הנה זה כל מה
שקורה אצלו בפנים כל הפקודות ה-right line שאנחנו רואים שהוא מריץ לוקח לו זמן בעצם להפעיל אני לא נוגע בו הוא רץ ומייצר את הכל לבד הנה אני רואה שהוא סיים mysql ready for connections mysqld ready for connections יפה מאוד בואו נראה רדי פור קונקשנס הוא מוכן טוב בואו ניכנס פנימה נראה שהוא באמת מוכן פה הוא כותב שהוא מוכן בגט פודס אני רואה גם שהוא מוכן אני רוצה
אתם יודעים מה להיכנס איתכם לתוכו ולראות שהוא באמת מוכן אז אנחנו עושים קיוב ctl אקזק אקזק עכשיו נניח שאתם לא יודעים בדיוק איך כותבים אתם באים לצ'יט צ'יט פה לצ'יט צ'יט ועושים ctrl f אקזק ופה אתם רואים קיוב ctl אקזק מייפוד ופקודת לדוגמה ls סלאשים שימו לב שני סלאשים כזה דבר אתם שמים כשיש לכם רק קונטיינר אחד אם יש לכם כמה קונטיינרים אתם נותנים את השם
של הקונטיינר זוכרים זה אומר בתוך אם יש לכם קונטיינר ספציפי שאתם רוצים אתם מציינים אותו אני מזכיר לכם איפה אתם רואים שם של קונטיינר פה בקונטיינרס אתם נותנים בתוך הקונטיינר את הנעים שלו אוקיי אם היה לי כמה קונטיינרים כאלו כמה קווים כאלו אז היו לי כמה קונטיינרים
אז הקונטיינר שלי נקרא מייסקיואל שהקונטיינר הזה נמצא בתוך פוד בשם הזה זה שם של הפוד אוקיי אז מה אנחנו עושים אנחנו עושים קיוב סיטיאל מינוס אקזק מייפוד אפשר לציין שם של קונטיינר אפשר לא לציין אותו כי יש לי אחד ואת הפקודה אז קיוב סיטיאל אקזק שם של זה וזה יופי בוא נחזור רק שאני רוצה שזה אינטראקטיבי
שם של קונטיינר מינוס מינוס ונכנס, נפעיל באש שם, נכון? בואו נראה.
הופה, אנחנו בתוך הקונטיינר, שימו לב, אנחנו בתוך הקונטיינר שהרצנו. זאת אומרת, לקחנו API, את ה-yaml, שלחנו אותו לשרת, הוא הפעיל לנו קונטיינר, אני עכשיו רוצה לראות מה קורה שם בפנים.
אז אתם יודעים מה נעשה? ניקח ונתחבר לתוך ה-MySQL, הרי אנחנו בתוך MySQL. ניכנס לתוך MySQL, יש לנו User Root, והוא מבקש פסוורד, נקיש לו את הפסוורד, איפה הפסוורד שלנו?
בואו נלך לקחת את הפסוורד, הנה זה הפסוורד. נעשה לו קופי ונכניס אותו פה בפייסט. אנחנו בתוך MySQL, איזה יופי. בואו נפעיל פקודה show databases. הנה יש לנו דאטאבייס של worddb.
בואו נעשה MySQL, זה ההגדרות שלו, use MySQL, זה הדאטאבייס הטכני שלו שקיים. נכנסים פנימה, דאטאבייס ג'נצ'ס, show databases, טייבלס לראות את הטבלאות