סקירה כללית על זיהוי שירותים ו-DNS

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

AWS VPC DNS

בקטע הזה מוסבר איך להגדיר VPC ל-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 מארח

כדי להשתמש ב-DNS מתארח, קבוצות האבטחה של מישור הבקרה ושל מאגר הצמתים צריכות לאפשר תנועה יוצאת ביציאות TCP ו-UDP מספר 53.

הגדרות 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.cluster.local

כאשר:

  • service: השם של השירות
  • namespace: מרחב השמות של השירות

עומסי עבודה ניגשים גם לשירותים חיצוניים – לדוגמה 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

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