PracticU

יצירת עומס על מיקרו סרוויס
Kubernetes

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

יצירת עומס על מיקרו סרוויס Kubernetes
הדגמה של עומס על ה-frontend של חנות המיקרו-סרביסים, וצפייה בצריכת המשאבים שלו מול ה-request וה-limit שהוגדרו לו.
מה נעשה
1. מחולל העומס: ב-cluster יש pod בשם load generator ששולח כל הזמן בקשות ומדמה לקוחות אמיתיים. הלוגים של ה-frontend נראים עם kubectl logs -f לפי תווית במקום לפי שם פוד.
2. בלי עומס: kubectl scale של ה-deployment ל-0 מסיר את הפודים שמדמים לקוחות. בלוג נשארות רק בדיקות health של ה-liveness probe (נתיב /healthz בפורט 8080), ו-kubectl top מראה אלפית מעבד אחת.
3. עם עומס: scale ל-30 פודים של ה-load generator. בלוג רצות הרבה שורות, ו-kubectl top pod מראה את ה-frontend עולה ל-172, 195 ואז כ-200 מילי-CPU. אפשר למיין לפי עמודת CPU.
4. request מול limit: ב-deployment של ה-frontend ה-request, העבודה הנורמלית, הוא 100 מילי-CPU (עשירית ליבה), וה-limit הוא 200. כשהצריכה מגיעה ל-200 ה-pod לא מקבל יותר זמן מעבד והלקוחות מתעכבים.
5. מטרת ה-limit: למנוע ממיקרו-סרביס שמשתגע לפגוע בכל ה-cluster. עדיף ש-pod אחד יאט.
6. הבעיה: כמות הפודים של ה-frontend נשארת אחד גם תחת עומס. צריך להקים עוד pod, ובלילה אין מי שיעשה זאת.
פקודות
- kubectl logs -f -l <label>
- kubectl scale deployment load-generator --replicas=N
- kubectl top pod
הסרטון הבא יציג אובייקט שמשכפל את ה-frontend אוטומטית. אחרי ההרצאה אפשר למדוד צריכת משאבים של פודים ולהבין למה request ו-limit לא מספיקים לבד.
השיעור הבא בקורס: הגדלה אוטומטית של קלסטר בעומס HPA Kubernetes

פרקי ההרצאה: יצירת עומס על מיקרו סרוויס Kubernetes

  1. 00:00

    סימולציית עומס עם load generator

  2. 00:39

    צפייה בלוגים לפי תווית

  3. 01:19

    כיבוי ה-load generator עם scale

  4. 01:56

    יצירת עומס עם שלושים פודים

  5. 02:33

    מדידת משאבים עם kubectl top

תמלול ההרצאה: יצירת עומס על מיקרו סרוויס Kubernetes

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

  1. 00:02

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

  2. 00:14

    כפי שכתוב באתר של היצרן continuously send requests, כל הזמן שולח בקשות, מדמה realistic user. יוזרים אמיתיים שעושים שופינג בפרונט אנד שלנו, בחנות שלנו.

  3. 00:27

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

  4. 00:37

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

  5. 00:50

    ושימו לב אני רואה פה כל הזמן בקשות get, post, או שזה מישהו מהאינטרנט נכנס לי לאתר או שזה ה-load generator, השירות הזה שמדמה לקוחות. אני עושה control c, עוצר את זה.

  6. 01:01

    עכשיו אני יכול לעשות kubectl scale, לשנות את כמות הפודים ב-deployment בשם load generator ואני אומר לו שאני רוצה אפס כאלו. אני יכול לעשות kubectl get pods ואני רואה שאין לי אף pod עם שם load generator.

  7. 01:16

    אפשר היה גם לכתוב kubectl get pods מינוס label up שווה load generator. שורה תחתונה אין לי כרגע אף pod שמדמה עומס. בואו נחזור ללוג ונראה שיש לנו פה רק פעולות של בדיקת בריאות.

  8. 01:31

    רק בודקים שה-pod בריא ושלם ועובד. זה למעשה ה-cluster בודק את זה ואם הוא מת מייצרים קונטיינר חדש מתוך ה-image. דרך אגב, גם זה מוגדר בתוך קובץ manifest של קוברנטיס.

  9. 01:43

    קובץ YAML שאיתו פרסנו את ה-cluster שלנו. הנה פה ב-deployment של פרונט אנד אתם יכולים לראות livness probe שהוא כל הזמן שואל את ה-slash health z בפורט שמונים שמונים האם אתה בריא?

  10. 01:57

    וזה מה שאנחנו רואים פה בלוג של הקונטיינר של הפרונט אנד. עכשיו נדמה מצב שיש לנו מלא מלא קונים. זאת אומרת אנחנו עושים scale ל-load generator שמדמה לקוחות ואנחנו אומרים תייצר לי שלושים פודים כאלו.

  11. 02:13

    ברגע שאני עושה את זה ב-kubectl get pods הוא מתחיל להעלות את כל ה-load generatorים שמדמים את הלקוחות ומייצרים עומס. נעשה עוד פעם get pods. נראה שהם כולם כבר באוויר, מדמים לנו עומס של הרבה לקוחות שקונים.

  12. 02:29

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

  13. 02:45

    זה מה שמראה לי הפקודה kubectl top. ואנחנו רואים שפה הפרונט אנד עלה למאה שבעים

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

ההרצאה הקודמת: Postman gRPC - Microservice - ב-Kubernetes

ההרצאה הבאה: הגדלה אוטומטית - של קלסטר בעומס - HPA Kubernetes

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

  • איך להרוג סרוויס תקוע בשרת
  • הסבר על Kubernetes

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

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