זיהוי שירותים ו-DNS

בדף הזה מוסבר איך Google Kubernetes Engine ‏ (GKE) מטמיע את גילוי השירותים ואת ה-DNS של האשכול.

זיהוי שירותים

ב-Kubernetes, זיהוי שירותים מיושם באמצעות שמות שירותים שנוצרים באופן אוטומטי וממופים לכתובת ה-IP של השירות. שמות השירותים פועלים לפי מפרט סטנדרטי: my-svc.my-namespace.svc.cluster.local. אפשר גם לגשת ל-Pods לשירותים חיצוניים דרך השמות שלהם, כמו example.com. מידע נוסף על האופן שבו DNS פועל ב-Kubernetes זמין במאמר DNS for Services and Pods (DNS לשירותים ול-Pods).

DNS של אשכול ב-GKE

באשכולות חדשים של Autopilot נעשה שימוש ב-Cloud DNS ואי אפשר לשנות את ספק ה-DNS.

ב-Standard, ‏ GKE מספק את אפשרויות ה-DNS הבאות של האשכול כדי לפתור שמות שירותים ושמות חיצוניים:

  • ‫kube-dns: תוסף לאשכול שנפרס כברירת מחדל בכל אשכולות GKE.
  • ‫Cloud DNS: תשתית DNS של אשכול שמנוהלת בענן ומבוססת על Cloud DNS, ולא דורשת ניהול של שרתי DNS באשכול כמו kube-dns.

אפשר גם לרשום את השירותים באמצעות Service Directory ל-GKE.

ב-GKE יש גם את NodeLocal DNSCache, תוסף אופציונלי שאפשר להשתמש בו עם kube-dns או Cloud DNS.

kube-dns

‫kube-dns הוא ספק ה-DNS שמוגדר כברירת מחדל באשכולות Standard, והוא ספק ה-DNS היחיד באשכולות Autopilot שמריצים גרסאות מוקדמות מ-1.25.9-gke.400 ו-1.26.4-gke.500.

‫kube-dns פועל כפריסה שמתזמנת את ה-Pods של kube-dns לצמתים באשכול.

מידע נוסף על kube-dns זמין במאמר מידע על kube-dns ל-GKE.

Cloud DNS

‫Cloud DNS הוא ספק ה-DNS היחיד לאשכולות Autopilot שפועלים בגרסה 1.25.9-gke.400 ואילך, ובגרסה 1.26.4-gke.500 ואילך.

שירות Cloud DNS מספק פענוח DNS של Pod ושל שירות בלי ספק DNS שמארח אשכול כמו kube-dns. בקר Cloud DNS מקצה באופן אוטומטי רשומות DNS לפודים ולשירותים ב-Cloud DNS עבור ClusterIP, שירותים ללא כתובת IP ושירותים עם שם חיצוני.

מידע על הגדרת Cloud DNS זמין במאמר שימוש ב-Cloud DNS ל-GKE.

NodeLocal DNSCache

‫NodeLocal DNSCache פועל כ-DaemonSet שמתזמן Pod של מטמון DNS בכל צומת של אשכול. מטמון ה-DNS הזה משפר את זמן האחזור של חיפוש ה-DNS, הופך את זמני החיפוש של ה-DNS לעקביים יותר ויכול להפחית את מספר שאילתות ה-DNS ל-kube-dns או ל-Cloud DNS.

הוראות להגדרה של NodeLocal DNSCache זמינות במאמר הגדרה של NodeLocal DNSCache.

זיהוי שירותים מחוץ לאשכול יחיד

אפשר להגדיר גילוי שירותים מעבר להיקף של אשכול יחיד באחת מהשיטות הבאות.

היקף ה-VPC של Cloud DNS

אשכול שמשתמש ב-Cloud DNS ל-DNS של האשכול חייב לפעול באחד משני המצבים האפשריים: היקף אשכול GKE או היקף ענן וירטואלי פרטי (VPC).

כשמגדירים אשכול בהיקף האשכול, אפשר לפתור רשומות DNS רק בתוך האשכול באמצעות הסכימה <svc>.<ns>.svc.cluster.local. ההתנהגות הזו זהה לזו של kube-dns.

כשמגדירים אשכול בהיקף של VPC, אפשר לפתור רשומות DNS של שירותי אשכול בכל ה-VPC. המשמעות היא שלקוחות באותו VPC או לקוחות שמחוברים ל-VPC דרך Cloud VPN או Cloud Interconnect יכולים לפתור ישירות את רשומות ה-DNS של שירותים באשכול GKE. אתם יכולים גם להגדיר שמות DNS ייחודיים לאשכולות, כדי שלקוחות שהם לא GKE יוכלו לפענח רשומות DNS. לדוגמה, לקוח שאינו GKE יכול לפתור את gke-svc.ns.svc.cluster1 מ-gke-svc.ns.svc.cluster2.

מידע נוסף על DNS בהיקף VPC זמין במאמר שימוש ב-Cloud DNS ל-GKE.

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

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

התכונה "שירותים מרובי אשכולות" צוברת שירותים באשכולות שונים ומאפשרת להפנות אליהם כרשומת DNS אחת מרובת אשכולות באמצעות הסכימה <svc>.<ns>.svc.clusterset.local. כך אפשר לתת שם ייחודי לשירות מסוים, שהוא עקבי וניתן לגישה מכל אשכול GKE באמצעות שירותים מרובי-אשכולות.

מידע נוסף על שירותים מרובי-אשכולות זמין במאמר שירותים מרובי-אשכולות.

Service Directory ל-GKE

‫Service Directory for GKE מספק תצוגה אחת של שירותים בכל פריסות Kubernetes. ב-Service Directory אפשר לרשום גם שירותי GKE וגם שירותים שלא שייכים ל-GKE במאגר רישום יחיד. ספריית השירותים שימושית במיוחד אם רוצים:

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

אפשר לפענח שירותים של Service Directory באמצעות DNS,‏ HTTP ו-gRPC. ‫Service Directory משולב עם Cloud DNS, ויכול לאכלס רשומות של Cloud DNS שתואמות לשירותים ב-Service Directory.

מידע נוסף זמין במאמר הגדרת Service Directory ל-GKE.

/etc/resolv.conf

ב-Pods שמשתמשים בClusterFirst DNS Policy, הערך של /etc/resolv.conf תלוי בתכונות שמופעלות באשכול:

‫Cloud DNS ל-GKE ‫NodeLocal DNSCache ערך של /etc/resolv.conf
מופעל מופעל 169.254.20.10
מופעל מושבת 169.254.169.254
מושבת מופעל כתובת ה-IP של שירות kube-dns
מושבת מושבת כתובת ה-IP של שירות kube-dns

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