PracticU

הסבר על ReplicaSet
בקוברנטיס

בלי כתוביותעם כתוביות
PracticU › קורס קוברנטיקס - Kubernetes › הסבר על ReplicaSet בקוברנטיס
מילון מושגים:
תבנית - מבנה בסיסי מוכן שממנו יוצרים פריטים דומים, כמו תבנית עמוד או תבנית מסמך.
קונטיינר - חבילה קלה ומבודדת שאורזת אפליקציה עם כל תלויותיה, ורצה באופן אחיד בכל סביבה, למשל ב-Docker.
סלקטור - ביטוי, בעיקר ב-CSS, שבוחר אילו רכיבים בדף יושפעו מכלל עיצוב או פעולה.
קלאסטר - קבוצת מחשבים או שרתים שעובדים יחד כמערכת אחת, לשם זמינות גבוהה, ביצועים או חלוקת עומס.
API - ממשק תכנותי שמגדיר כיצד תוכנה אחת פונה לאחרת ומחליפה איתה נתונים ופעולות.
פרוקסי - שרת מתווך שמעביר בקשות בין לקוח ליעד, ויכול לשמש להסתרה, לסינון, למטמון או לבקרת גישה.
HTTP - פרוטוקול להעברת דפי אינטרנט ונתונים בין דפדפן לשרת. הגרסה המאובטחת שלו היא HTTPS.
DELETE - פקודת SQL למחיקת שורות מטבלה. גם שיטת HTTP לבקשת מחיקה של משאב בשרת.

הסבר על ReplicaSet בקוברנטיס
ReplicaSet הוא אובייקט שמוודא שרצה כמות קבועה של פודים מסוג מסוים, ואם פוד נופל הוא מקים חדש במקומו לפי תבנית. הוא מחליף את ההקמה הידנית של פודים אחד אחד.
איך זה בנוי
1. הגדרה: ב-YAML נותנים ל-ReplicaSet שם (frontend-rs), מספר רפליקות (שלוש) ו-pod template. הפוד בדוגמה כולל קונטיינר nginx בגרסה 1.16 ותוויות.
2. Selector ותוויות: ה-selector בוחר מבין כל הפודים רק את אלה עם התווית, וכך הוא סופר כמה פודים באוויר. התווית חייבת להופיע גם ב-template, אחרת הספירה לא תעבוד.
3. Service: קובץ נוסף מגדיר service שמחפש את אותה תווית frontend nginx ומקבל תקשורת מהאינטרנט בפורט 80, כדי לבדוק את ה-cluster מבחוץ.
4. יצירה: kubectl apply -f . יצר שלושה פודים. שמותיהם הם שם ה-ReplicaSet ואחריו חמישה תווים אקראיים. ב-describe של פוד רואים שהוא נשלט על ידי frontend-rs.
5. נפילה: אחרי מחיקת פוד אחד, ה-endpoints של ה-service (מוצגים עם -w) ירדו לשני IP ומיד חזרו לשלושה, עם כתובת חדשה. ב-events של ה-ReplicaSet רואים את יצירת הפוד החדש.
6. מחיקה דרך ה-API: עם kubectl proxy אפשר לשלוח בקשת HTTP delete ישירות לשרת ה-API. גם אז הפוד השלישי קם מחדש, כי ה-ReplicaSet עוקב אחרי המצב. הדגמה זו מראה מה kubectl עושה מאחורי הקלעים, אך לא נוח לעבוד כך.
7. שינוי כמות: kubectl scale הגדיל לחמישה פודים ובהמשך הקטין לשניים, למשל כדי לא לשלם על משאבים בענן בלילה.
פקודות
- kubectl get pods -l <label>=<value>, עם פסיק לסינון בשתי תוויות.
- kubectl get endpoints <service> -w לצפייה בפודים שקמים ונופלים.
- kubectl get replicaset מראה desired מול ready.
- kubectl delete replicaset <name> מוחק גם את הפודים שלו, ו-kubectl delete -f . מוחק הכול.
אחרי ההרצאה אפשר להגדיר ReplicaSet, לראות את המצב הרצוי מול המצוי, ולהגדיל או להקטין את מספר הפודים בפקודה אחת.
השיעור הבא בקורס: בעיית שדרוג ב-ReplicaSet קוברנטיס

פרקי ההרצאה: הסבר על ReplicaSet בקוברנטיס

  1. 00:00

    תפקיד ה-ReplicaSet בקוברנטיס

  2. 00:43

    הגדרת מספר רפליקות וטמפלייט

  3. 01:19

    selector לפי תווית לספירת פודים

  4. 01:55

    שחזור פוד אוטומטי לאחר הריגתו

  5. 02:50

    הרצת apply ויצירת שלושה פודים

תמלול ההרצאה: הסבר על ReplicaSet בקוברנטיס

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

  1. 00:02

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

  2. 00:16

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

  3. 00:34

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

  4. 00:48

    אומרים לו בספציפיקציה של האובייקט, של ה-replication set, שאנחנו רוצים שלוש רפליקות והוא בונה לנו את הכמות הרצויה של הפודים לפי הטמפלייט, לפי השבלונה שאנחנו מביאים לו.

  5. 01:00

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

  6. 01:16

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

  7. 01:43

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

  8. 01:56

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

  9. 02:13

    תראו שהוא יוצר אחד חדש אוטומט במיידי. בואו נראה את הכול בפעולה. קודם כל אני נכנס לתיקייה עם הדוגמה שלי ועושה dir. נבדוק שיש לי פה שני קבצים: הקובץ הזה שראינו כרגע ו-service שנוכל לבדוק הכול מבחוץ.

  10. 02:28

    זה הקובץ שיוצר לי replication set, ובפנים הפודים ו-service YAML, שזה למעשה ה-load balancer שלי. גם הוא מחפש את התווית הזאת frontend nginx. שימו לב, זאת התווית הזאת frontend nginx.

  11. 02:43

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

  12. 02:59

    אז אנחנו בתיקייה הנכונה. כרגע אין לי אף פוד ואני מריץ kubectl apply -f, ובמקום שם של קובץ אני נותן לו את התיקייה הנוכחית. הוא עושה לי את ה-apply, מיישם את קבצי ה-YAML, כותב לי פה replication set בשם frontend-rs created וגם service בשם frontend-service created.

  13. 03:21

    שני אובייקטים נוצרו. בואו נריץ kubectl get pods. שימו לב שנוצרו לי שלושה פודים ואני לא יכול לקבוע את השם שלהם. השם שלהם זה שם של replication set, מקף

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

ההרצאה הקודמת: הגדרת Service - מסוג Load Balancer - בתוך Kubernetes

ההרצאה הבאה: בעיית שדרוג ב-ReplicaSet - קוברנטיס

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

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