שירותים מרובי אשכולות

בדף הזה מוסבר איך פועלים שירותים מרובי אשכולות (MCS) ב-GKE. במאמר הגדרת שירותים מרובי אשכולות מוסבר איך להשתמש ב-MCS.

סקירה כללית של MCS

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

‫MCS הוא מנגנון לזיהוי שירותים ולהפעלתם בין אשכולות ב-Google Kubernetes Engine‏ (GKE), שמסתמך על אובייקט השירות הקיים. אפשר לגלות שירותים שמופעלת בהם התכונה הזו ולגשת אליהם באשכולות עם כתובת IP וירטואלית, בדומה להתנהגות של שירות ClusterIP שאפשר לגשת אליו באשכול. בדומה לשירותים הקיימים שלכם, MCS תואם לממשקי API מבוססי-קהילה ופתוחים, וכך מבטיח שהעומסים שלכם יישארו ניידים.

‫MCS היא תכונה של GKE. ‫MCS מגדיר אזורים ורשומות של Cloud DNS לכל שירות שמיוצא מאשכולות הצי. צי מאפשר לקבץ ולנרמל את אשכולות GKE באופן לוגי, וכך להקל על ניהול התשתית ולאפשר שימוש בתכונות של ריבוי אשכולות, כמו MCS. מידע נוסף על היתרונות של צי מכשירים ועל אופן היצירה שלהם זמין בתיעוד לניהול צי מכשירים.

לשירותים שמיוצאים, ללא קשר לסוג שלהם, תמיד יש רשומת Cloud DNS אחת, ולשירותים שמיוצאים מסוג Headless יש רשומות לכל Pod של קצה עורפי עם שם מארח, כולל Pods ב-StatefulSets. השימוש ב-Cloud DNS כרוך בחיובים נוספים. החיוב מתבצע בהתאם לתמחור של Cloud DNS.

כדי לייצא שירות באמצעות MCS, יוצרים משאב מותאם אישית מסוג ServiceExport באמצעות אותו מרחב שמות ואותו שם כמו השירות. ‫MCS מייבא באופן אוטומטי את השירות לכל אשכול בצי. כש-MCS מייבא שירות, הוא יוצר:

  • משאב מותאם אישית מסוג ServiceImport שמשתמש באותו מרחב שמות ובאותו שם כמו השירות.
  • אובייקט Endpoints שמשתמש באותו מרחב שמות כמו השירות ובשם אקראי.

היתרונות של שימוש ב-MCS

השימוש ב-MCS מספק לכם את היתרונות הבאים:

  • זמינות גבוהה: הרצת אותו שירות באשכולות בכמה אזורים מספקת לכם עמידות משופרת בפני תקלות. אם שירות באשכול לא זמין, הבקשה יכולה לעבור לשירות אחר באשכולות אחרים. בעזרת MCS אפשר לנהל את התקשורת בין שירותים באשכולות שונים, כדי לשפר את הזמינות של האפליקציות המבוססות על קונטיינרים.
  • שירותים עם שמירת מצב ושירותים ללא שמירת מצב: שירותים עם שמירת מצב ושירותים ללא שמירת מצב כוללים תלות ומורכבות תפעוליות שונות, ומציגים שיקולים תפעוליים שונים. בדרך כלל, היעדר ניהול מצב מקל על הרחבה, שדרוג והעברה של עומס עבודה עם זמינות גבוהה יותר. שירות MCS מאפשר להפריד בין אשכולות לעומסי עבודה עם מצב (stateful) וללא מצב (stateless), ולהפוך אותם לעצמאיים, מבודדים וקלים יותר לניהול.
  • שירותים משותפים: נהוג ליצור אשכולות נפרדים של Kubernetes כדי להשיג זמינות גבוהה יותר, ניהול טוב יותר של שירותים עם מצב (stateful) ושירותים ללא מצב (stateless), וקלות רבה יותר בתאימות לדרישות של ריבונות נתונים. עם זאת, הרבה שירותים כמו מעקב באמצעות Prometheus או שימוש בניהול סודות באמצעות Vault משותפים בדרך כלל בין כל האשכולות. במקום שכל אשכול ידרוש רפליקה מקומית משלו של שירות, MCS מאפשרת להגדיר בקלות שירותים משותפים נפוצים באשכול נפרד שכל האשכולות הפונקציונליים משתמשים בו.
  • העברה: כדי לעדכן אפליקציה קיימת לארכיטקטורה מבוססת-מיקרו-שירותים בקונטיינרים, לעיתים קרובות צריך לפרוס שירותים בכמה אשכולות Kubernetes. ‫MCS מספקת לכם מנגנון שיעזור לגשר על הפער בתקשורת בין השירותים האלה, כדי להקל על העברת האפליקציות שלכם. האפשרות הזו שימושית במיוחד כי אפשר לפרוס את אותו שירות בשני אשכולות שונים, והתנועה יכולה לעבור מאשכול או מאפליקציה אחת לאשכול או לאפליקציה אחרת.

המאמרים הבאים