PracticU

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

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

הגדלה אוטומטית של קלסטר בעומס HPA Kubernetes
Horizontal Pod Autoscaler (HPA) מגדיל ומקטין אוטומטית את מספר הפודים של deployment לפי העומס, כך שאין צורך שמישהו יצפה בשרת.
איך זה עובד
1. העיקרון: ה-HPA עוקב אחרי צריכת ה-CPU של ה-frontend. כשהצריכה עוברת 60 אחוז מה-request (שהוא 100 מילי-CPU, כלומר 60), הוא מוסיף פודים עד שהמערכת מתייצבת סביב 60 אחוז.
2. גבולות: מינימום פוד אחד ומקסימום עשרה, כדי שחשבון הענן לא יתנפח, למשל אם האקר יעמיס על ה-API.
3. הגדרה: בקובץ YAML או בפקודה ישירה (imperative) kubectl autoscale deployment frontend עם יעד CPU של 60 אחוז. kubectl apply -f יוצר אובייקט horizontal pod autoscaler, ו-get all מראה אותו עם המינימום והמקסימום.
4. מעקב: kubectl get hpa -w מציג רפליקות ועומס בזמן אמת, בצד kubectl top pod.
5. תחת עומס: scale של ה-load generator ל-30 גרם ל-frontend לעבור 60, והוא עלה לשני פודים, ארבעה ושישה, בעוד העומס ירד ל-45 ול-49 אחוז. ה-cluster צריך זמן עד שה-service מפנה בקשות לפודים החדשים.
6. עזרה ידנית: מחיקת הפוד הכבד פיזרה את העומס, וכל אחד משלושה פודים לקח שליש.
7. ירידה בעומס: כשה-load generator חוזר לאפס ה-CPU יורד, וה-HPA מחכה כחמש דקות לוודא שהירידה לא זמנית לפני שהוא מקטין את מספר הרפליקות.
שימו לב
שירותי המשך כמו catalog, currency ו-recommendation נשארים עמוסים, כי ה-HPA עוקב רק אחרי ה-deployment של ה-frontend. צריך HPA נפרד לכל deployment.
אחרי ההרצאה אפשר להגדיר HPA עם מינימום, מקסימום ויעד CPU, ולצפות בו מגדיל ומקטין את מספר הפודים.

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

  1. 00:00

    מעקב HPA אחר עומס הפרונט אנד

  2. 00:39

    מינימום ומקסימום פודים

  3. 01:18

    הגדרת HPA בפקודה או YAML

  4. 01:52

    בדיקת אובייקט ה-autoscaler

  5. 02:32

    מעקב אחר ה-HPA בזמן עומס

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

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

  1. 00:02

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

  2. 00:21

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

  3. 00:36

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

  4. 00:50

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

  5. 01:02

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

  6. 01:15

    אז ככה מגדירים אותו בקובץ YAML. אפשר להגדיר אותו גם בשורת פקודה בצורה אימפרטיבית, בצורה פקודה ישירה. kubectl autoscale deployment בשם frontend עם rough של CPU שישים אחוז.

  7. 01:29

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

  8. 01:43

    אני עושה open folder in cmd, פותח את התיקייה הזאת ב-CMD ואני עושה kubectl apply מינוס F ונותן לו את השם של הקובץ. הוא יצר אובייקט מסוג horizontal pod autoscaler.

  9. 01:57

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

  10. 02:14

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

  11. 02:24

    נפתח פה עוד CMD ונכתוב kubectl get HPA. תביא לי מידע לגבי HPA הספציפי הזה. מינוס watch. תעקוב ואל תצא מהפקודה. כרגע אנחנו מתחילים ברפליקה אחת.

  12. 02:38

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

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

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

ההרצאה הבאה: טכנולוגיה מאחורי קונטיינר - Linux Namespaces

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

  • יצירת קלסטר Cluster HA - ESXi 8
  • הסבר על Kubernetes
  • מניעת וולידציה אוטומטית
  • התקנה אוטומטית של אופיס 365

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

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