בדף הזה מוסבר איך Google Kubernetes Engine (GKE) מטמיע גילוי שירותים ו-DNS של אשכולות.
זיהוי שירותים
ב-Kubernetes, זיהוי השירותים מיושם באמצעות שמות שירותים שנוצרים באופן אוטומטי וממופים לכתובת ה-IP של השירות. שמות השירותים פועלים לפי מפרט סטנדרטי:
כך: my-svc.my-namespace.svc.cluster.local. לפודים יש גם גישה לשירותים חיצוניים דרך השמות שלהם, כמו example.com. מידע נוסף על האופן שבו DNS פועל ב-Kubernetes זמין במאמר DNS for Services and Pods.
DNS של אשכול ב-GKE
באשכולות חדשים של Autopilot נעשה שימוש ב-Cloud DNS ואי אפשר לשנות את ספק ה-DNS.
ב-Standard, GKE מספק את האפשרויות הבאות של DNS לאשכול כדי לפתור שמות של שירותים ושמות חיצוניים:
- kube-dns: תוסף לאשכול שנפרס כברירת מחדל בכל אשכולות GKE.
- Cloud DNS: תשתית DNS של אשכול שמנוהלת בענן, שמסתמכת על Cloud DNS ולא דורשת ניהול של שרתי DNS באשכול, כמו kube-dns.
אפשר גם לרשום את השירותים בService Directory for 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 שמתזמן פוד של מטמון 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 במאגר רישום יחיד. השימוש ב-Service Directory מועיל במיוחד אם רוצים:
- מאגר יחיד לאפליקציות 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 |
המאמרים הבאים
- איך משתמשים ב-Cloud DNS ל-GKE
- מידע נוסף על kube-dns ל-GKE
- איך מגדירים NodeLocal DNSCache
- איך מגדירים פריסת kube-dns בהתאמה אישית
- מידע נוסף על שירותים מרובי-אשכולות