
db-service) ומתפרסם בפורט 8081. הוא מקבל את פרטי ההתחברות ממשתני הסביבה של השירות.--constraint מגביל את השירות לנודים שעונים לתנאי מסוים, למשל נוד עם תווית מסוימת. אם אף נוד לא עונה, המשימה נשארת במצב Pending עם הודעה no suitable node.docker node update --label-add מוסיף תווית לנוד. מיד אחרי ההוספה המשימה מתוזמנת על הנוד והשירות עולה.docker service update --constraint-add מוסיף מגבלה לשירות קיים בלי למחוק אותו. docker service inspect מציג את כל המגבלות.docker node inspect, docker node update --label-add, docker node update --label-rm, docker service update --constraint-add. סוגי מגבלות שנדונו: מזהה נוד, שם מארח, תפקיד הנוד (manager או worker), מערכת ההפעלה והארכיטקטורה, ותוויות שהמשתמש מגדיר.הטקסט המלא של הדקות הראשונות בהרצאה «Swarm - Label Constraint» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
שלום לכולם ברוכים הבאים להרצאה על תביעות אנחנו נעשה עכשיו סרוויס חדש של php myadmin כן זה ה-image.php myadmin זה למעשה שירות וב, אתר וב שהודה להתחבר לתוך הדאטאבייס שלי ואני אוכל לנהל את הדאטאבייס דרך אתר וב שמפורסם בפורט 8081 על הקלאסטר שלי ופה אני כותב לו במשתנה סביבה בדיוק לאן להתחבר זוכרים הקמנו sql עם השם של הסרוויס db-service?
הקמנו sql עם root ו-superuser. כל זה כתבנו כשהקמנו את ה-mysql. להזכיר לכם עם איזה פקודה הקמנו אותו? עם הפקודה הזאת שראינו בסרטים קודמים. אני פשוט אראה לכם את הפקודה למקרה ששכחתם או משהו.
בואו נפתח טרמינל חדש ואני רק מזכיר לכם שהקמנו ככה את ה-mysql. לקחנו, עשינו משתנה סביבה וכתבנו MySQL Root Password, Super User Password והשם של הסרוויס היה db-service.
שימו לב, הוא יודע לעשות ריזולווינג לפי שם של הסרוויס לקונטיינר ספציפי, יש לו DNS פנימי ואז אנחנו אומרים לו תתחבר ל-db-service והוא ידע לעשות ריזולווינג מ-db-service ישירות לקונטיינר הפנימי עם יוזר שקוראים לו Root ו-Super User.
זה אימץ שנקרא PHP MyAdmin, עד כאן ברור ומחברים אותו ל-MyNetwork, כי SQL גם מחובר ל-MyNetwork וגם WordPress מחובר ל-MyNetwork.
זה כמו LAN פנימי בין המכונות הווירטואליות, בין הקונטיינרים. עכשיו, זה מה שרציתי להראות לכם, בשביל זה אני עושה את הסרט הזה.
אני רוצה להראות לכם מה זה Constraint, מגבלה. אני אומר שהשירות הזה מוגבל לרוץ רק על נודים עם label בשם zone dmz סתם אני המצאתי מילת zone אני המצאתי תווית שקוראים לה e-sport opened ורק עם ערך yes yes yes אז כן אז הוא ירוץ אני עושה לו constraint מגבלה שחייבת
להיות איזושהי תווית על המחשב על ה-node שעליו תופעל המשימה כמובן כרגע אין שום node כזה אז זה לא יצליח בואו נראה אנחנו נעשה דבר כזה ואנחנו נראה שהוא יוצר לנו את הסרוויס, הנה יש לי פה Watch, הוא עוקב כל חצי דקה, כל חצי שנייה ועושה את הפקודה Docker
Service LS, הנה אנחנו כבר רואים שהסרוויס הזה קם, ואפס מתוך אחד בוצעה, למה? הוא לא מצליח למצוא מישהו שיעשה את זה, אם אני אעשה פקודה Docker Service PS, אקבל את הפירוט על הסרוויס הזה שהקמנו כרגע, בואו נריץ את זה, נראה, הנה יש פה No Suitable Node, הוא לא מצליח לעשות Scheduling, הוא לא רואה Node שמתאים להגדרות ולכן Node פה ריק,
נכון? אין אף Node שקיבל את הפקודה לבצע את המשימה הזאת, זה ה-Task, זה המשימה להקים Service Node אחד עם האימג' הזה, אף אחד לא קיבל את זה, הוא רוצה שזה יהיה ב-Running אבל אין שום דבר ב-Running והמשימה נמצאת במצב Pending, המתנה, היא ממתינה והיא ממתינה ושום דבר לא יקרה כי אף נוד לא מקיים את זה.
No suitable node for scheduling. ואנחנו יכולים לראות פה, גם כן בפקודה שהרצנו, שזה, ככה נתקענו, No not suitable scheduling לתזמן constraints מגבלות not satisfied on three nodes.
את המגבלות, את ה-constraints אף אחד לא מספק משלושת הנודים. אנחנו יצאנו עם קונטרול סי והוא ממשיך לרוץ ברקע ולנסות, והנה אנחנו רואים פה שהוא רץ ומנסה לעשות את זה ושום דבר לא יקרה, בסדר?
עכשיו בואו נגדיל את זה טיפה שיהיה לנו יותר נוח, נמשיך אחרי זה, לעקוב אחרי זה. אם אנחנו נעשה docker node ls אנחנו נראה את שלושת הנודים ואם נעשה docker node inspect נחקור את הנודים שלנו, נניח את הנוד הראשון אנחנו חוקרים, docker node inspect אנחנו רואים פה שזה לינוקס שקוראים לו אובנטו אחד,
שזה 64 ביט שהוא ברול של מנאג'ר שהוא זמין לקבל משימות חדשות ואין לו אף תווית ואין לו אף לייבל עליו כרגע לייבלים ריקים נכון נכון אז פה אני רוצה להכניס לו את הלייבלים דרך אגב אולי יש פה כזה דבר פריטי כן פריטי זה אותו מידע אתם רואים אותו מידע רק בלי כל הסוגריים מסולצלות ואין לי פה תוויות יפה מאוד, טוב בואו נוסיף תוויות ל-Node הזה, על ידי איזה פקודה אנחנו עושים את זה?
docker-node-help אנחנו רואים פה את הפקודה update, עדכון, מה זה עדכון? מינוס מינוס help ויש לנו פה להוסיף תווית ולהוריד תווית, בואו נראה, אנחנו עושים docker, אתם יודעים מה? לפני שנוסיף תווית אני אראה לכם גם איך אפשר להוסיף עוד דרישה,
לפני שאני מוסיף תווית ומריץ את הסרוויס, אני רוצה לעשות לכם docker service ls הנה אנחנו רואים אותו אני רוצה להראות לכם פה שבתוך הסרוויס גם יש docker inspect בתוך הסרוויס inspect ואני אומר לו באיזה סרוויס אני רוצה לעשות inspect ופה docker service inspect על השם של הסרוויס או על האידי שלו זה השם של הסרוויס
על איזה זה איך להריץ את הקונטיינר ויש פה placement מיקום constraints הנה שתי המגבלות שלנו מבחינת איפה הסרוויס הזה מוכן להכניס את האימג' הוא גם דרך אגב מוגבל רק ללינוקס 64 ביט אתם רואים יש לו מגבלה לינוקס 64 ביט ויש לו מגבלה על הלייבלים האלו על התוויות אוקיי אז ככה אז קודם כל דוקר סרוויס מינוס מינוס הלפ אנחנו רואים
שיש פה update על הסרוויס שימו לב יש update על הסרוויס את זה אני לא הראיתי לכם עדיין ואני לדוגמה יכול להוסיף constraint להוסיף מגבלה על הסרוויס הקיים נניח אני רוצה עוד מגבלה שלא יודע שרק מחשבי דל יריצו את הסרוויס הזה אז אני ממציא אני ממציא is del שווה שווה no סתם אני ממציא ואז אני אומר על איזה סרוויס אני רוצה על php סרוויס עכשיו מה אני בא להראות לכם ש docker
service update מעדכן את הסרוויס הקיים בוא נעשה עוד פעם docker service ls, docker service ls, ניקח את ה-id הזה, אפשר היה גם לפי שם לעשות docker inspect, לוקחים את הסרוויס ועכשיו למעלה איפה שהתוויות נוכל לראות שיש לנו כבר שלוש דרישות, אז אנחנו יכולים לעשות update לסרוויס, לעדכן
את הסרוויס גם תוך כדי ריצה אפשר, גם לפני הריצה, אחרי הריצה, אפשר להוריד את המדבקה הזאת אם אתם רוצים להוריד אותה, אפשר להוריד אותה, אפשר להעלות אותה, אין שום בעיה לעשות דברים כאלו אוקיי טוב אז כרגע הסרוויס הזה נמצא במצב של 0 מתוך 1 נכון אז בואו נעדכן את הנוט שלנו נעשה docker
note update ונוסיף עליו גם את המדבקה של dmz גם את הלייבל של זה גם את הלייבל של זה ואז ברגע שאנחנו עושים את זה הופה הסרוויס ישר עובד וphp שלי כן עובד ואני אני יכול בפורט 8081 להיכנס ישירות לדאטאבייס ולנהל אותו, זה משהו מצוין, לדוגמה 8081,
בואו ניכנס ל... דרך אגב, פה אנחנו גם רואים איפה הם כולם מתוזמנים. תראו, הוא תזמן אותו על אותו נוד ולא על השלישי, אל תשאלו אותי למה הוא עשה את זה.
אוקיי, הנה נכנסנו, והנה הוורדפרס שלנו, שימו לב, אנחנו נכנסנו ישירות לדאטאבייס, אנחנו יכולים ישירות לערוך פה את הדאטאבייס בלי ה-Backend, בלי ממשק גרפי, הנה אנחנו רואים פה את הכתבה שעשינו.
אבל זה גישה ישירה לדאטאבייס דרך PHP MyAdmin. באמת מעניין. אה, למה הוא עשה את זה דווקא על אחד? שימו לב, יש פה את הלייבלים.
הרי שמנו את כל התוויות רק על הראשון, ואז הוא נהיה חייב לתזמן את זה על הראשון. אז יוצא שאחד הראשון מאוד מאוד עמוס, כן? אתם רואים? דרך אגב, איך אני יכול לגרום לו להוריד את ה...
נניח הוורדפרס ולהעביר אותו לכאן? אני יכול לעשות לו טריק. רוצים לראות טריק? docker service נכון scale wordpress תיקח את הwordpress תוריד אותו לאחד בוא נראה מה הוא יוריד איזה wordpress הוא יוריד איזה באסה הוא הוריד את הwordpress שהיה פה אוקיי בוא ננסה לעשות עכשיו שיעשה wordpress 3 בוא נראה מה יקרה הנה 1 2 הנה תראו הוא עשה ככה הוא עשה 1 2 3 ועכשיו נוריד אותו לאחד בוא
נוריד אותו נניח לאחד בוא נראה שיט הוא משאיר את זה, איזה באסה, טוב נצטרך לעשות טריק הכי מלוכלך, נוריד לאפס, שימו לב, סרוויס נשאר עם אפס קונטיינרים שרצים, ראיתם, ירד לגמרי הסרוויס, יוזרים כרגע לא מקבלים שירות, זאת אומרת יוזר שינסה להיכנס לא יקבל שום שירות, אתם רואים זה יסתובב
ולא יקרה לו כלום כי אין מי שיקבל, אתם רואים, עמוד הזה לא קיים, קונקשן ריפיוז, אין לי מי להתחבר, ואם עכשיו אני אפעיל שניים, הנה הקונקשן נוצר והוא תוזמן פה ופה.
אז אם אתם מתעקשים להריץ אתם יכולים להוריד לרמת 0 ואז לעלות חזרה. עכשיו שימו לב בגלל שיש לנו דעת סטורג' מרכזי המידע לא נעלם.
אתם רואים? המידע לא נעלם כי יש לנו סטורג' מרכזי אנחנו רואים פה 2. יפה. טוב רציתי להראות לכם את התוויות האלו ואז כשעשינו את התוויות זה כן עבד.
אנחנו יכולים גם כמובן להוריד את התוויות כן? אנחנו לא חייבים להישאר איתם אפשר להוריד בוא נעשה docker node inspect וself אנחנו יכולים להגיד self מינוס מינוס pretty ואנחנו יכולים לראות פה שיש לנו את התוויות יש על הזה בלי pretty זה יהיה כזה דבר ואז גם
פה אנחנו רואים את אותו המידע כל התוויות ברמת node ספציפי שזה אובונטו אחד טוב בוא נוריד אותם נריץ פקודת docker node update לבלרם לבלרם label rm זה הכל כאילו שורה אחת במחשב שקוראים לו אובנטו אחד ועכשיו אחרי שהורדנו את זה בוא נראה מה קרה לסרוויס דרך אגב דורקר סרוויס ls הנה תראו הסרוויס ירד תראו איזה
קטע תראו איזה קטע בואו תראו אתם רואים הסרוויס פה ירד אתם רואים הסרוויס עולה ויורד בואו נעשה את זה עוד פעם בואו נעשה את הניסוי הזה עוד פעם נוסיף שימו לב זה פה 0 כן עכשיו זה running וpending אתם רואים הוא בהמתנה שימו לב, הסרוויס הזה בהמתנה.
למה הוא בהמתנה?