הגדרת DNS לאשכול

במאמר הזה מוסבר איך להגדיר DNS לאשכול אדמין או לאשכול משתמש.

הגדרת ה-DNS של אשכול מוחזקת במשאב בהתאמה אישית של ClusterDNS בשם default. זהו משאב ברמת האשכול, כלומר הוא לא מוגדר במרחב שמות.

הצגת משאב ClusterDNS

כדי להציג את המשאב ClusterDNS:

kubectl --kubeconfig CLUSTER_KUBECONFIG get clusterdns default --output yaml

מחליפים את CLUSTER_KUBECONFIG בנתיב של קובץ ה-kubeconfig של האשכול.

הגדרת ה-DNS נמצאת בקטע spec. אם הקטע spec ריק או חסר, האשכול משתמש בהגדרת ברירת מחדל של Kubernetes CoreDNS.

שינוי הגדרת ה-DNS

יוצרים מניפסט למשאב ClusterDNS בשם default. ממלאים את spec לפי הצורך. לדוגמה:

apiVersion: networking.gke.io/v1alpha1
kind: ClusterDNS
metadata:
  name: default
spec:
  upstreamNameservers:
  - serverIP: 8.8.8.8
  - serverIP: 8.8.4.4
  domains:
  - name: altostrat.com
    nameservers:
    - serverIP: 198.51.100.1
  - name: my-own-personal-domain.com
    nameservers:
    - serverIP: 203.0.113.1
    - serverIP: 203.0.113.2
      serverPort: 54
  googleAccess: private

שומרים את המניפסט בקובץ בשם my-dns.yaml ומחילים את המשאב על האשכול:

kubectl --kubeconfig CLUSTER_KUBECONFIG apply -f my-dns.yaml

מפרט ClusterDNS

spec.upstreamNameservers

מערך של אובייקטים, שלכל אחד מהם יש כתובת IP של שרת, ויציאת שרת אופציונלית. יציאת השרת שמוגדרת כברירת מחדל היא 53.

שרתי השמות שמוגדרים כברירת מחדל בשרתים במעלה הזרם. כברירת מחדל, בקשות לדומיינים שלא שייכים לאשכול מועברות לקבוצת השרתים הזו. לדוגמה:

spec:
  upstreamNameservers:
  - serverIP: 8.8.8.8
  - serverIP: 1.2.3.4
    serverPort: 54

אם לא מציינים ערכים ל-upstreamNameservers, ספק ה-DNS משתמש בקובץ /etc/resolv.conf בצומת כדי למצוא את רשימת שרתי השמות במעלה הזרם.

spec.domains

הגדרה לדומיינים ספציפיים. כך אפשר לבטל את ההגדרה ב-upstreamNameservers.

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

אפשר גם להפעיל רישום ביומן של שאילתות עבור דומיין. אפשר לעשות את זה לכל דומיין שצוין או לדומיין של האשכול, cluster.local.

לדוגמה:

spec:
  domains:
  - name: altostrat.com
    nameservers:
    - serverIP: 198.51.100.1
  - name: my-own-personal-domain.com
    nameservers:
    - serverIP: 203.0.113.1
    - serverIP: 203.0.113.2
      serverPort: 50000
  - name: cluster.local
    queryLogging: true

spec.googleAccess

מחרוזת. אם רוצים שדומיינים של Google יפנו לכתובות IP עם גישה פרטית, צריך להגדיר את הערך הזה ל-"private". אם רוצים שדומיינים של Google יפנו לכתובות IP עם גישה מוגבלת, צריך להגדיר את הערך הזה ל-restricted. אם אתם לא רוצים שדומיינים של Google יקבלו יחס מיוחד, צריך להגדיר את הערך הזה ל-default או להסיר אותו. מידע נוסף זמין במאמר הגדרת גישה פרטית ל-Google למארחים מקומיים.

לדוגמה:

spec:
  googleAccess: private

spec.orderPolicy

מחרוזת. אם רוצים לציין את מדיניות הסדר שבה נבחרים שרתים במעלה הזרם. ברירת המחדל היא "random". הסוגים הנתמכים הם "random",‏ "round_robin" ו-"sequential". שימו לב: מדיניות ההזמנות הזו חלה גם על דומיינים מוגדרים. מידע נוסף על policy ועל הפעולות של כל הגדרה זמין במסמכי התיעוד של coredns.

לדוגמה:

spec:
  orderPolicy: sequential