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

במאמר הזה מוסבר איך GKE ב-AWS מתקשר עם שירותי שמות דומיינים (DNS) גם בענן הווירטואלי הפרטי (VPC) של AWS וגם באשכולות.

AWS VPC DNS

בקטע הזה מוסבר איך להגדיר ענן וירטואלי פרטי (VPC) של AWS ל-GKE ב-AWS.

הגדרת DNS של VPC

‫GKE ב-AWS תומך במגוון הגדרות DNS ב-AWS VPC. מגדירים את הגדרות ה-DNS של ה-VPC כשיוצרים קבוצת אפשרויות DHCP. מידע נוסף זמין במאמר בנושא תמיכה ב-DNS עבור VPC.

אפשר להגדיר את האפשרויות הבאות:

שמות מארחים ב-DNS
ההגדרה הזו קובעת אם מכונות EC2 עם כתובות IP ציבוריות יקבלו שמות מארח תואמים ב-DNS ציבורי. מגדירים את הערך הזה באמצעות השדה enableDNSHostnames בסט אפשרויות ה-DHCP של ה-VPC. מידע נוסף זמין במאמרים בנושא שמות מארחים של DNS ב-VPC וערכות אפשרויות DHCP ל-VPC.
שמות מארחים ב-DNS של EC2
ההגדרה הזו קובעת אם מופעלת קבלת שם מארח ב-DNS שמוגדר כברירת מחדל או שם מארח ב-DNS בהתאמה אישית במופעי EC2.
שרת DNS
אם קבוצת האפשרויות של ה-DHCP ב-VPC משתמשת בשרת ה-DNS של AWS Route53 (עם האפשרות AmazonProvidedDNS) או בשרת DNS מארח.

הגדרות DNS נתמכות ב-VPC

הטבלה הבאה כוללת הגדרות DNS שנתמכות על ידי GKE ב-AWS:

הפעלת שמות מארחים של DNS שמות מארחים של DNS ב-EC2 שרת DNS האם יש תמיכה?
true ברירת מחדל AWS Route53 כן
false ברירת מחדל AWS Route53 כן
true בהתאמה אישית AWS Route53 כן
false בהתאמה אישית AWS Route53 כן
true בהתאמה אישית מתארח כן
false בהתאמה אישית מתארח כן
true ברירת מחדל מתארח לא
false ברירת מחדל מתארח לא

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

זיהוי שירותים הוא תהליך שבו עומסי עבודה מזהים שירותים בלי לדעת את כתובת ה-IP שלהם. בקטע הזה מוסבר איך GKE on AWS מטמיע גילוי שירותים ו-DNS מנוהל.

מערכת Kubernetes יוצרת באופן אוטומטי שמות של שירותים לפי המפרט הבא:

service.namespace.svc.zone

כאשר:

  • service: השם של השירות
  • namespace: מרחב השמות של השירות
  • zone: האזור ב-AWS שבו נמצא השירות שלכם

עומסי עבודה ניגשים גם לשירותים חיצוניים – לדוגמה example.net – באמצעות שמות DNS. מידע נוסף על התנהגות ה-DNS ב-Kubernetes זמין במאמר DNS for Services and Pods.

CoreDNS

ב-GKE on AWS נעשה שימוש ב-CoreDNS כדי לפתור שמות DNS בתוך אשכולות. ‫CoreDNS פועל כפריסה מגובה וניתנת להרחבה במרחב השמות kube-system. לפריסת CoreDNS יש Service שמקבץ את ה-Pods של CoreDNS ומקצה להם כתובת IP אחת. הפריסה של CoreDNS מתרחבת בהתאם לגודל של האשכול ולשימוש בו.

NodeLocal DNSCache

‫GKE ב-AWS משתמש ב-NodeLocal DNSCache כדי לשפר את הביצועים של חיפוש DNS. ‫NodeLocal DNSCache פועל כ-DaemonSet בכל צומת באשכול. כש-Pod שולח בקשת DNS, הבקשה מועברת קודם למטמון ה-DNS באותו צומת. אם המטמון לא יכול לפתור את בקשת ה-DNS, הוא מעביר את הבקשה לאחת מהאפשרויות הבאות:

  • ‫CoreDNS עבור שם פנימי – לדוגמה foo.bar.svc.cluster.local
  • שרת ה-DNS של אמזון, לשם חיצוני – לדוגמה example.net

Calico

‫GKE ב-AWS משתמש ב-Calico כדי ליצור ניתוב BGP בין צמתי האשכול.

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