שימוש ב-Cloud DNS ל-GKE

במאמר הזה מוסבר איך להגדיר את Cloud DNS כספק DNS עבור אשכולות Google Kubernetes Engine ‏ (GKE) ולהשתמש בו.

‫Cloud DNS מנהל אוטומטית את רשומות ה-DNS של שירותי Kubernetes. כברירת מחדל, אפשר לגשת לרשומות האלה רק מתוך האשכול (היקף האשכול).

אם אתם צריכים לפתור בעיות בשירותים ללא ראש (headless) מחוץ לאשכול, למשל ממכונות וירטואליות ב-Compute Engine, אתם צריכים להפעיל היקף של VPC או היקף של VPC מצטבר.

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

כדי להפיק את המרב מהמסמך הזה, כדאי להכיר את הנושאים הבאים:

כדי לאפשר גישה לשירותים ClusterIP או NodePort מחוץ לאשכול, צריך לחשוף את השירות באמצעות LoadBalancer או שיטה אחרת, ולרשום את כתובת ה-IP החיצונית שלו ב-Cloud DNS.

מידע נוסף על שימוש ב-kube-dns כספק DNS זמין במאמר Service discovery and DNS.

כדי ללמוד איך להשתמש בגרסה מותאמת אישית של kube-dns או בספק DNS מותאם אישית, אפשר לעיין במאמר הגדרה של פריסת kube-dns מותאמת אישית.

תמחור

כש-Cloud DNS הוא ספק ה-DNS של אשכולות GKE Standard, שאילתות DNS מ-Pods שנמצאים באשכול GKE מחויבות בהתאם לתמחור של Cloud DNS.

שאילתות לאזור DNS בהיקף VPC שמנוהל על ידי GKE מחויבות לפי התמחור הרגיל של Cloud DNS.

הגבלות ומגבלות

יש הגבלות:

  • טווח VPC לא אפשרי באשכולות Autopilot; יש תמיכה רק בטווח אשכול. אם אתם צריכים לפתור שמות של שירותים ללא ממשק משתמש שפועלים באשכולות GKE Autopilot, אתם צריכים להשתמש בהיקף מצטבר של VPC.
  • אפשר להפעיל את ההגדרה של היקף מצטבר של VPC באשכולות GKE Autopilot רק בזמן יצירת האשכול. הפעלה או השבתה של היקף VPC מצטבר באשכולות GKE Autopilot קיימים אינה נתמכת.
  • אין תמיכה ביצירת אשכולות עם היקף VPC מצטבר בפרויקטים של שירותים של רשתות VPC משותפות.
  • ‫Cloud DNS ל-GKE לא זמין ל-Assured Workload עם משטר תאימות IL4. ההגדרה kube-dns נאכפת בסביבות מפוקחות כאלה.
  • אין תמיכה בשינויים ידניים בתחומי DNS פרטיים מנוהלים, והם מוחלפים על ידי בקר Cloud DNS. שינויים ברשומות ה-DNS באזורים האלה לא נשמרים כשמפעילים מחדש את בקר ה-DNS.
  • אחרי שמפעילים את Cloud DNS ל-GKE באשכול, ‏kube-dns ממשיך לפעול באשכול. אפשר להשבית את kube-dns על ידי שינוי קנה המידה של הפריסה של kube-dns ושל קנה המידה האוטומטי לאפס.
  • אחרי שמגדירים את היקף ה-DNS באשכול באמצעות הדגל --cluster-dns-scope, אי אפשר לשנות אותו. אם צריך לשנות את היקף ה-DNS, צריך ליצור מחדש את האשכול עם היקף DNS שונה.
  • חלות מגבלות על משאבי CloudDNS. בפרט, אפשר לקשר לרשת VPC לכל היותר אזור אחד של מדיניות תגובה בכל פעם. במקרים של היקפי VPC והיקפי VPC מצטברים, יצירת האשכול תיכשל אם כבר יש אזור מדיניות תגובה שלא עומד במוסכמות למתן שמות שקשורות לרשת ה-VPC של האשכול.
  • הגדרות של דומיינים מותאמים אישית ושרת DNS במעלה הזרם חלות על הגדרות ה-DNS של Podים וצמתים. גם פודים שמשתמשים ברשת מארחת או בתהליכים שפועלים ישירות במארח משתמשים בהגדרות של שרת שמות במעלה הזרם ושל דומיין stub. ההתנהגות הזו נתמכת רק בגרסה הרגילה.
  • דומיינים מותאמים אישית של stub ושרתי שמות במעלה הזרם שמוגדרים דרך kube-dns Configmap מוחלים אוטומטית על Cloud DNS עבור DNS בהיקף האשכול. ה-DNS בהיקף VPC מתעלם מ-kube-dns ConfigMap, ולכן צריך להחיל את ההגדרות האלה ישירות ב-Cloud DNS. ההתנהגות הזו נתמכת רק בגרסה הרגילה.
  • ההעברה מ-kube-dns להיקף VPC היא פעולה שגורמת לשיבוש. צריך ליצור מחדש את האשכול כשעוברים מ-kube-dns להיקף VPC, או כשעושים את הפעולה ההפוכה.
  • בטווח ה-VPC, טווח כתובות ה-IP המשני של Services לא יכול להיות משותף עם אף אשכול אחר באותה רשת משנה.
  • במקרה של היקף VPC, מדיניות התגובה שמשויכת לרשומת PTR מצורפת לרשת ה-VPC. אם כללי מדיניות אחרים של תגובה קשורים לרשת האשכול, לא ניתן לבצע רזולוציה של רשומת PTR לכתובות IP של שירות Kubernetes.
  • אם מנסים ליצור שירות ללא כתובת IP עם מספר Pods שגדול מהמכסה המותרת, Cloud DNS לא יוצר קבוצות של רשומות או רשומות עבור השירות.
  • שמות השירותים והיציאות מוגבלים ל-62 תווים, למרות שלתוויות DNS יש מגבלה מקסימלית של 63 תווים. ההתנהגות הזו נובעת מכך ש-GKE מוסיף קו תחתון כקידומת לרשומות DNS.

לפני שמתחילים

לפני שמתחילים, חשוב לוודא שביצעתם את הפעולות הבאות:

  • מפעילים את ממשק Google Kubernetes Engine API.
  • הפעלת Google Kubernetes Engine API
  • אם רוצים להשתמש ב-CLI של Google Cloud למשימה הזו, צריך להתקין ואז להפעיל את ה-CLI של gcloud. אם התקנתם בעבר את ה-CLI של gcloud, מריצים את הפקודה gcloud components update כדי לקבל את הגרסה העדכנית. יכול להיות שגרסאות קודמות של ה-CLI של gcloud לא יתמכו בהרצת הפקודות שמופיעות במסמך הזה.
  • מפעילים את Cloud DNS API בפרויקט:

    הפעלת Cloud DNS API

  • כדי להשתמש ב-Cloud DNS בהיקף אשכול, צריך אחת מהגרסאות הבאות:

    • ב-Standard: גרסאות GKE‏ ‎1.24.7-gke.800 או ‎1.25.3-gke.700 ואילך.
    • ב-Autopilot: גרסאות GKE‏ 1.25.9-gke.400 או 1.26.4-gke.500 ומעלה.
    • ‫Google Cloud CLI בגרסה 411.0.0 ואילך.
  • כדי להשתמש ב-Cloud DNS בהיקף VPC מצטבר, צריך אחת מהגרסאות הבאות:

    • ‫GKE גרסה ‎1.28.3-gke.1430000 ואילך.
    • ‫Google Cloud CLI בגרסה 503.0.0 ואילך.

הפעלת DNS בהיקף האשכול

ב-DNS בהיקף האשכול, רק צמתים שפועלים באשכול GKE יכולים לפתור שמות של שירותים, ושמות של שירותים לא מתנגשים בין אשכולות. ההתנהגות הזו זהה לזו של kube-dns באשכולות GKE, כלומר אפשר להעביר אשכולות מ-kube-dns להיקף אשכול Cloud DNS בלי השבתה או שינויים באפליקציות.

בתרשים הבא מוצג אופן היצירה של תחום DNS פרטי עבור אשכול GKE ב-Cloud DNS. רק תהליכים ו-Pods שפועלים בצמתים באשכול יכולים לפתור את רשומות ה-DNS של האשכול, כי רק הצמתים נמצאים בהיקף ה-DNS.

‫Pods בצמתים שונים שפותרים שירותים באשכול GKE.
תרשים: DNS בהיקף אשכול

הפעלת היקף האשכול באשכול חדש

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

יצירת אשכול רגיל עם היקף אשכול מופעל

אפשר ליצור אשכול GKE Standard עם היקף אשכול Cloud DNS מופעל באמצעות ה-CLI של gcloud או מסוף Google Cloud :

gcloud

יוצרים אשכול באמצעות הדגל --cluster-dns:

gcloud container clusters create CLUSTER_NAME \
    --cluster-dns=clouddns \
    --cluster-dns-scope=cluster \
    --location=COMPUTE_LOCATION

מחליפים את מה שכתוב בשדות הבאים:

הדגל --cluster-dns-scope=cluster הוא אופציונלי בפקודה כי cluster הוא ערך ברירת המחדל.

המסוף

  1. נכנסים לדף Create a Kubernetes cluster במסוף Google Cloud .

    מעבר אל יצירת אשכול Kubernetes

  2. בחלונית הניווט, בקטע Cluster, לוחצים על Networking.

  3. בקטע ספק DNS, לוחצים על Cloud DNS.

  4. בוחרים באפשרות היקף האשכול.

  5. מגדירים את האשכול לפי הצורך.

  6. לוחצים על יצירה.

הפעלת היקף אשכול באשכול קיים

אין תמיכה בהעברת אשכול Autopilot קיים מ-kube-dns להיקף אשכול Cloud DNS. כדי להפעיל את היקף האשכול של Cloud DNS, צריך ליצור מחדש אשכולות Autopilot בגרסאות GKE‏ 1.25.9-gke.400,‏ 1.26.4-gke.500 ואילך.

אפשר להעביר קלאסטר קיים מסוג Standard מ-kube-dns להיקף קלאסטר של Cloud DNS באמצעות ה-CLI של gcloud אוGoogle Cloud המסוף.

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

gcloud

  1. מעדכנים את האשכול הקיים:

    gcloud container clusters update CLUSTER_NAME \
        --cluster-dns=clouddns \
        --cluster-dns-scope=cluster \
        --location=COMPUTE_LOCATION
    

    מחליפים את מה שכתוב בשדות הבאים:

    הדגל --cluster-dns-scope=cluster הוא אופציונלי בפקודה כי cluster הוא ערך ברירת המחדל.

    התגובה אמורה להיראות כך:

    All the node-pools in the cluster need to be re-created by the user to start using Cloud DNS for DNS lookups. It is highly recommended to complete this step
    shortly after enabling Cloud DNS.
    Do you want to continue (Y/n)?
    

    אחרי שתאשרו, בקר Cloud DNS יפעל במישור הבקרה של GKE. עם זאת, ה-Pods לא משתמשים ב-Cloud DNS לפתרון בעיות DNS עד שתשדרגו את מאגר הצמתים או תוסיפו מאגרי צמתים חדשים לאשכול.

  2. משדרגים את מאגרי הצמתים באשכול לשימוש ב-Cloud DNS:

    gcloud container clusters upgrade CLUSTER_NAME \
        --node-pool=POOL_NAME \
        --location=COMPUTE_LOCATION
    

    מחליפים את מה שכתוב בשדות הבאים:

    • CLUSTER_NAME: שם האשכול.
    • POOL_NAME: השם של מאגר הצמתים לשדרוג.

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

    מאשרים את התגובה וחוזרים על הפקודה הזו לכל מאגר צמתים באשכול. אם באשכול יש מאגר צמתים אחד, לא צריך להשתמש בדגל --node-pool.

המסוף

  1. נכנסים לדף Google Kubernetes Engine במסוף Google Cloud .

    מעבר אל Google Kubernetes Engine

  2. לוחצים על השם של האשכול שרוצים לשנות.

  3. בקטע רישות, בשדה ספק DNS, לוחצים על עריכת ספק DNS.

  4. לוחצים על Cloud DNS.

  5. לוחצים על היקף האשכול.

  6. לוחצים על שמירת השינויים.

הפעלת היקף מצטבר של VPC

בקטע הזה מוסבר איך להפעיל או להשבית את ההיקף המצטבר של VPC, כתוסף להיקף של אשכול Cloud DNS.

הפעלת היקף מצטבר של VPC באשכול חדש

אפשר להפעיל DNS עם היקף VPC מצטבר באשכול GKE חדש באמצעות ה-CLI של gcloud או מסוף Google Cloud .

יצירת אשכול Autopilot עם היקף VPC מצטבר

gcloud container clusters create-auto CLUSTER_NAME \
    --additive-vpc-scope-dns-domain=UNIQUE_CLUSTER_DOMAIN

מחליפים את מה שכתוב בשדות הבאים:

  • CLUSTER_NAME: שם האשכול.
  • UNIQUE_CLUSTER_DOMAIN: שם של דומיין. צריך לוודא שהשם הזה ייחודי ב-VPC, כי GKE לא מאמת את הערך הזה. אי אפשר לשנות את הערך הזה אחרי שמגדירים אותו. אסור להשתמש בדומיין שמסתיים ב-.local, אחרת יכול להיות שיהיו כשלים בפתרון DNS.

יצירת אשכול רגיל עם היקף VPC מצטבר

gcloud container clusters create CLUSTER_NAME \
    --cluster-dns=clouddns \
    --cluster-dns-scope=cluster \
    --additive-vpc-scope-dns-domain=UNIQUE_CLUSTER_DOMAIN

הדגל --cluster-dns-scope=cluster הוא אופציונלי כי cluster הוא ערך ברירת המחדל.

מחליפים את מה שכתוב בשדות הבאים:

  • CLUSTER_NAME: שם האשכול.
  • UNIQUE_CLUSTER_DOMAIN: שם של דומיין. צריך לוודא שהשם הזה ייחודי ב-VPC, כי GKE לא מאשר את הערך הזה. אי אפשר לשנות את הערך הזה אחרי שמגדירים אותו. אסור להשתמש בדומיין שמסתיים ב-.local, אחרת יכול להיות שיהיו כשלים בפתרון DNS.

הפעלת היקף מצטבר של VPC באשכול רגיל קיים

הפעלת היקף VPC מצטבר באשכול Autopilot קיים אינה נתמכת.

כדי להפעיל את היקף ה-VPC המצטבר באשכול Standard קיים, מריצים את הפקודה הבאה:

gcloud container clusters update CLUSTER_NAME \
    --additive-vpc-scope-dns-domain=UNIQUE_CLUSTER_DOMAIN \
    --location=COMPUTE_LOCATION

מחליפים את מה שכתוב בשדות הבאים:

  • CLUSTER_NAME: שם האשכול.
  • UNIQUE_CLUSTER_DOMAIN: שם של דומיין. צריך לוודא שהשם הזה ייחודי ב-VPC, כי GKE לא מאשר את הערך הזה. אי אפשר לשנות את הערך הזה אחרי שמגדירים אותו. אסור להשתמש בדומיין שמסתיים ב-.local, כי אחרת יכול להיות שפענוח ה-DNS ייכשל.
  • COMPUTE_LOCATION: המיקום של Compute Engine של האשכול.

הפעלת DNS בהיקף VPC

ב-DNS בהיקף VPC, אפשר לפענח את שמות ה-DNS של אשכול בתוך ה-VPC כולו. כל לקוח ב-VPC יכול לפתור רשומות DNS של אשכול.

DNS בהיקף VPC מאפשר את תרחישי השימוש הבאים:

  • גילוי שירותים ללא ראש (headless) ללקוחות שאינם GKE באותו VPC.
  • רזולוציית שירות GKE מלקוחות מקומיים או מלקוחות בענן של צד שלישי. מידע נוסף מופיע במאמר בנושא מדיניות שרתים עבור אימיילים נכנסים.
  • רזולוציית שירות שבה לקוח יכול להחליט עם איזה אשכול לתקשר באמצעות דומיין DNS של אשכול בהתאמה אישית.

בתרשים הבא, שני אשכולות GKE משתמשים ב-DNS בהיקף VPC באותו VPC. לשני האשכולות יש דומיין DNS מותאם אישית, .cluster1 ו-.cluster2, במקום הדומיין .cluster.local שמוגדר כברירת מחדל. מכונה וירטואלית מתקשרת עם שירות העורף חסר הראש על ידי פתרון backend.default.svc.cluster1. שירות Cloud DNS מבצע התאמת נתונים (resolve) של השירות חסר הראש לכתובות ה-IP של הפודים בשירות, והמכונה הווירטואלית מתקשרת ישירות עם כתובות ה-IP של הפודים.

לקוחות שמבצעים המרה לשירותים ללא ראש מחוץ לאשכול GKE.
דיאגרמה: DNS בהיקף VPC

אפשר גם לבצע את סוג ההגדרה הזה מרשתות אחרות כשמתחברים ל-VPC באמצעות Cloud Interconnect או Cloud VPN. מדיניות שרתי DNS מאפשרת ללקוחות מרשתות שמחוברות ל-VPC לפתור שמות ב-Cloud DNS, כולל שירותי GKE אם האשכול משתמש ב-DNS בהיקף VPC.

הפעלת היקף VPC באשכול קיים

העברה להיקף VPC נתמכת רק ב-Standard, ולא נתמכת ב-Autopilot.

אפשר להעביר קלאסטר קיים מסוג Standard מ-kube-dns להיקף VPC של Cloud DNS באמצעות ה-CLI של gcloud או מסוף Google Cloud .

כשעוברים להיקף VPC, צריך ליצור מחדש את הצמתים כדי שהשינוי ייכנס לתוקף.

gcloud

  1. מעדכנים את האשכול הקיים:

    gcloud container clusters update CLUSTER_NAME \
        --cluster-dns=clouddns \
        --cluster-dns-scope=vpc \
        --cluster-dns-domain=CUSTOM_DOMAIN \
        --location=COMPUTE_LOCATION
    

    מחליפים את מה שכתוב בשדות הבאים:

    • CLUSTER_NAME: שם האשכול.
    • COMPUTE_LOCATION: המיקום של Compute Engine עבור האשכול.
    • CUSTOM_DOMAIN: שם של דומיין. צריך לוודא שהשם הזה ייחודי ב-VPC, כי GKE לא מאשר את הערך הזה. אי אפשר לשנות את הערך הזה אחרי שמגדירים אותו. אסור להשתמש בדומיין שמסתיים ב-.local, כי אחרת יכול להיות שפענוח ה-DNS ייכשל.

    התגובה אמורה להיראות כך:

    All the node-pools in the cluster need to be re-created by the user to start using Cloud DNS for DNS lookups. It is highly recommended to complete this step
    shortly after enabling Cloud DNS.
    Do you want to continue (Y/n)?
    

    אחרי שתאשרו, בקר Cloud DNS יפעל במישור הבקרה של GKE. ה-Pods לא משתמשים ב-Cloud DNS לפתרון בעיות DNS עד שתשדרגו את מאגר הצמתים או תוסיפו מאגרי צמתים חדשים לאשכול.

  2. משדרגים את מאגרי הצמתים באשכול לשימוש ב-Cloud DNS:

    gcloud container clusters upgrade CLUSTER_NAME \
        --node-pool=POOL_NAME
    

    מחליפים את מה שכתוב בשדות הבאים:

    • CLUSTER_NAME: שם האשכול.
    • POOL_NAME: השם של מאגר הצמתים לשדרוג.

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

    מאשרים את התגובה וחוזרים על הפקודה הזו לכל מאגר צמתים באשכול. אם באשכול יש מאגר צמתים אחד, לא צריך להשתמש בדגל --node-pool.

המסוף

  1. נכנסים לדף Google Kubernetes Engine במסוף Google Cloud .

    מעבר אל Google Kubernetes Engine

  2. לוחצים על השם של האשכול שרוצים לשנות.

  3. בקטע רישות, בשדה ספק DNS, לוחצים על עריכת ספק DNS.

  4. לוחצים על Cloud DNS.

  5. לוחצים על VPC scope (היקף VPC).

  6. לוחצים על שמירת השינויים.

אימות של Cloud DNS

מוודאים ש-Cloud DNS ל-GKE פועל בצורה תקינה עבור האשכול:

  1. כדי לוודא שהצמתים משתמשים ב-Cloud DNS, מתחברים ל-Pod בצומת ומריצים את הפקודה cat /etc/resolv.conf:

    kubectl exec -it POD_NAME -- cat /etc/resolv.conf | grep nameserver
    

    מחליפים את POD_NAME בשם של ה-Pod.

    בהתאם למצב האשכול, הפלט אמור להיראות כך:

    אשכול GKE Autopilot

    nameserver 169.254.20.10
    

    NodeLocal DNSCache מופעל כברירת מחדל ב-GKE Autopilot, ולכן ה-Pod משתמש ב-NodeLocal DNSCache.

    אם במטמון המקומי אין רשומה לשם שמחפשים, התוסף NodeLocal DNSCache מעביר את הבקשה ל-Cloud DNS.

    אשכול GKE Standard

    nameserver 169.254.169.254
    

    ב-Pod לדוגמה הזה, כתובת ה-IP של שרת המטא-נתונים שבו מישור הנתונים של Cloud DNS מאזין לבקשות ביציאה 53 היא 169.254.169.254.nameserver הצמתים כבר לא משתמשים בכתובת השירות של kube-dns לצורך פענוח DNS, וכל פענוח ה-DNS מתבצע בצומת המקומי.

    אם הפלט הוא כתובת IP שדומה ל-10.x.y.10, אז ה-Pod משתמש ב-kube-dns. כדי להבין למה הפודקאסט שלכם עדיין משתמש ב-kube-dns, אפשר לעיין בקטע פתרון בעיות .

    אם הפלט הוא 169.254.20.10, הפעלתם את NodeLocal DNSCache באשכול, וה-Pod משתמש ב-NodeLocal DNSCache.

  2. פורסים אפליקציה לדוגמה באשכול:

    kubectl run dns-test --image us-docker.pkg.dev/google-samples/containers/gke/hello-app:2.0
    
  3. חושפים את האפליקציה לדוגמה באמצעות שירות:

    kubectl expose pod dns-test --name dns-test-svc --port 8080
    
  4. מוודאים שהשירות נפרס בהצלחה:

    kubectl get svc dns-test-svc
    

    הפלט אמור להיראות כך:

    NAME           TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE
    dns-test-svc   ClusterIP   10.47.255.11    <none>        8080/TCP   6m10s
    

    הערך בעמודה CLUSTER-IP הוא כתובת ה-IP הווירטואלית של האשכול. בדוגמה הזו, כתובת ה-IP הווירטואלית היא 10.47.255.11.

  5. מוודאים ששם השירות נוצר כרשומה באזור ה-DNS הפרטי של האשכול:

    gcloud dns record-sets list \
        --zone=PRIVATE_DNS_ZONE \
        --name=dns-test-svc.default.svc.DOMAIN_NAME.
    

    מחליפים את מה שכתוב בשדות הבאים:

    • PRIVATE_DNS_ZONE: השם של תחום ה-DNS המנוהל שנוצר על ידי GKE. אפשר למצוא את שמות האזורים בדף האזורים של Cloud DNS במסוף Google Cloud או במוסכמות השמות.
    • DOMAIN_NAME: cluster.local אם משתמשים ב-Cluster Scope בלי Additive VPC Scope, או הדומיין המותאם אישית שהגדרתם כשהפעלתם את Cluster Scope או Additive VPC Scope.

    הפלט אמור להיראות כך:

    NAME: dns-test-svc.default.svc.cluster.local.
    TYPE: A
    TTL: 30
    DATA: 10.47.255.11
    

השבתה של Cloud DNS באשכולות רגילים

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

השבתת היקף VPC בגרסה Standard אינה נתמכת. צריך ליצור מחדש את האשכול עם kube-dns כספק ה-DNS.

אפשר להשבית את היקף האשכול ולחזור ל-kube-dns באשכול רגיל באמצעות ה-CLI של gcloud או המסוףGoogle Cloud .

gcloud

מעדכנים את האשכול כדי להשתמש ב-kube-dns:

gcloud container clusters update CLUSTER_NAME \
    --cluster-dns=kube-dns \
    --location=COMPUTE_LOCATION

מחליפים את מה שכתוב בשדות הבאים:

המסוף

  1. נכנסים לדף Google Kubernetes Engine במסוף Google Cloud .

    מעבר אל Google Kubernetes Engine

  2. לוחצים על השם של האשכול שרוצים לשנות.

  3. בקטע רישות, בשדה ספק DNS, לוחצים על עריכת ספק DNS.

  4. לוחצים על Kube-dns.

  5. לוחצים על שמירת השינויים.

אחרי שמשביתים את Cloud DNS, צריך ליצור מחדש את מאגרי הצמתים כדי שהצמתים יוכלו להשתמש ב-kube-dns לרזולוציה. אם הקטנתם בעבר את מספר הצמתים של kube-dns לאפס, תצטרכו להגדיל את מספר הצמתים של kube-dns כדי שהצמתים יוכלו להשתמש בו לפתרון DNS. אם לא תיצרו מחדש את מאגרי הצמתים, הפודים בצמתים הקיימים ימשיכו להשתמש ב-Cloud DNS לרזולוציית DNS, כי קובץ ה-/etc/resolv.conf שלהם לא יעודכן עד שהצומת ייצור מחדש.

השבתת היקף ה-VPC המצטבר

כשמשביתים את ההגדרה 'היקף VPC מצטבר' באשכול, רק רשומות ה-DNS באזורים הפרטיים שמצורפים לרשת ה-VPC יימחקו. הרשומות בתחומי ה-DNS הפרטיים של אשכול GKE יישארו, וינוהלו על ידי Cloud DNS for GKE, עד שמחיקת שירות ה-headless מהאשכול.

כדי להשבית את ההיקף המצטבר של ה-VPC, מריצים את הפקודה הבאה:

gcloud container clusters update CLUSTER_NAME \
    --disable-additive-vpc-scope

מחליפים את CLUSTER_NAME בשם האשכול.

ההגדרה הזו משאירה את האפשרות 'היקף האשכול' של Cloud DNS מופעלת באשכול, וכך מתאפשר פענוח DNS מתוך האשכול.

הסרת המשאבים

אחרי שתשלימו את התרגילים במסמך הזה, תצטרכו לפעול לפי השלבים הבאים כדי להסיר משאבים ולמנוע חיובים לא רצויים בחשבון:

  1. מוחקים את השירות:

    kubectl delete service dns-test-svc
    
  2. מוחקים את ה-Pod:

    kubectl delete Pod dns-test
    
  3. אפשר גם למחוק את האשכול.

פתרון בעיות

למידע על פתרון בעיות ב-Cloud DNS, ראו את הדפים הבאים:

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