PracticU

הגדרת Service
מסוג ClusterIP
בתוך Kubernetes

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

הגדרת Service מסוג ClusterIP בתוך Kubernetes
פודים נופלים וקמים וה-IP שלהם משתנה, ולכן ב-Kubernetes הלקוחות פונים ל-service בעל שם ו-IP קבועים. ההרצאה מגדירה service מסוג ClusterIP ובודקת אותו מתוך ה-cluster.
איך זה עובד
1. תפקיד ה-service: הוא משמש כמעין load balancer. ה-kube-proxy שרץ ב-worker nodes ממפה את השירות לפוד מסוים ומנתב אליו את הפאקטים.
2. ClusterIP: זה סוג ברירת המחדל. יש לו כתובת רק ברשת הפנימית של הפודים, ללא IP חיצוני ברמת ה-node. הוא מתאים לתקשורת פנימית, למשל frontend שפונה ל-backend בשם ה-service.
3. בחירת פודים: ב-YAML של ה-service יש selector שבוחר פודים לפי תווית. בדוגמה שני פודים זהים, server1 ו-server2, נושאים את התווית payment-api-pod. בכל פוד initContainer כותב את שם הפוד ל-index.html בתיקייה משותפת, ושרת nginx מציג אותו.
4. יצירה ובדיקה: kubectl apply -f . יוצר את הפודים והשירות. kubectl describe service מראה type ברירת מחדל ClusterIP, את ה-selector ואת ה-endpoints, כלומר ה-IP הפנימיים של שני הפודים בפורט 80. ה-service נרשם גם ב-DNS של ה-cluster.
5. פוד בדיקה: ה-service אינו חשוף החוצה, ולכן מקימים פוד test-server ונכנסים אליו אינטראקטיבית. לפוד הזה אין את התווית, אז ה-service לא ישלח אליו תקשורת.
6. כשפוד נופל: curl לשם ה-service בפורט 80 החזיר server1. אחרי kubectl delete pod של הפוד הראשון אותה פנייה הגיעה לפוד השני, והלקוח לא הרגיש בכלום.
7. הקשר למיקרו-סרביסים: שירותים קטנים שכל אחד תפקידו פונים זה לזה דרך שם service.
פקודות והגדרות
- kubectl apply -f . מיישם את כל הקבצים בתיקייה, ואם אין שינוי כותב unchanged. הרצה חוזרת גם יוצרת מחדש אובייקט שחסר.
- kubectl get pods, kubectl get service, kubectl describe service <name>.
- kubectl run test-server ואז כניסה אינטראקטיבית עם bin/bash.
- ניקוי: מחיקת כל הפודים וה-services. ה-service של Kubernetes עצמו נוצר מחדש אוטומטית.
אחרי ההרצאה אפשר להגדיר service פנימי ולהוכיח שהוא ממשיך לשרת גם כשפוד נופל.
השיעור הבא בקורס: הגדרת Service מסוג NodePort בתוך Kubernetes

פרקי ההרצאה: הגדרת Service מסוג ClusterIP בתוך Kubernetes

  1. 00:00

    service כתובת קבועה מול פודים משתנים

  2. 00:39

    תפקיד ה-kube-proxy בניתוב

  3. 01:15

    ClusterIP לתקשורת פנימית בלבד

  4. 01:55

    הדבקת label על הפודים

  5. 02:33

    selector וזיהוי פודים לפי תווית

תמלול ההרצאה: הגדרת Service מסוג ClusterIP בתוך Kubernetes

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

  1. 00:02

    שלום לכולם. היום אנחנו נגדיר load balancer ב-cluster של Kubernetes. בעולם של Kubernetes ה-load balancer נקרא service ויש לו שם ו-IP קבועים, וזאת לעומת הפודים שכל הזמן נופלים, קמים, ה-IP שלהם משתנים.

  2. 00:19

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

  3. 00:35

    הלקוחות מתחברים לשירות הזה בשם ו-IP קבועים ומאחורי הקלעים ה-kube-proxy, התוכנה הקטנה הזאת שרצה בתוך ה-worker nodes, ממפה את השירות לפוד מסוים. היא זאת שעושה את ה-routing ומעבירה את הפאקטים שמיועדים ל-service לפוד הנכון.

  4. 00:56

    זה התפקיד של kube-proxy. בעולם של Kubernetes יש כמה סוגים של clusterים. בואו נתחיל מ-cluster IP, שזה cluster שלא חשוף כלפי חוץ.

  5. 01:06

    הוא נועד לתקשורת בתוך ה-cluster, שנניח frontend יבקש משהו מה-backend, הכול בתוך אותו cluster. פשוט ה-frontend יפנה ל-backend דרך שם של service, וה-service הזה ממפה את הפאקטים ושולח את הפאקטים לפודים הנכונים.

  6. 01:25

    למעשה ה-service הזה, יש לו כתובת IP אך ורק ברשת הפנימית של הפודים. אין לו IP חיצוני ברמת ה-node הפיזי, השרת הפיזי. בואו נקים cluster כזה.

  7. 01:39

    אני אעשה פה שני פודים ו-service. הפוד הראשון, נקרא לו payment pod server אחד. הפוד השני יהיה זהה, רק השם שלו יהיה payment pod server שתיים.

  8. 01:51

    חוץ מזה הם יהיו זהים לחלוטין ואני מדביק להם את אותו ה-label, payment API pod. התווית הזאת היא זאת שתעזור לי בתוך ה-service לזהות לאיזה פודים אנחנו שולחים את התקשורת.

  9. 02:06

    אתם רואים פה בתוך ה-YAML של ה-service שלי יש selector שבוחר את הפודים לפי התווית הזאת. אז שוב, ה-selector הולך לפי התווית, והתווית הזאת מודבקת על הפודים שלי, וככה ה-service יודע לאיזה פוד בדיוק להעביר את התקשורת.

  10. 02:26

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

  11. 02:48

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

  12. 03:03

    הנה פה אני מדביק אותה ברמת ה-metadata של

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

ההרצאה הקודמת: הרבה קונטיינרים - בפוד אחד - חלק 2

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

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

  • הגדרת צרכן ל-Service
  • הגדרת Cluster מסוג NLB - שרת 2016
  • הגדרת vLAN - בתוך ESXi
  • הגדרת VPN בתוך Kali

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

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