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

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

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

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

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

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

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

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

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

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

ההגבלות הבאות חלות:

  • היקף VPC לא נתמך באשכולות Autopilot; רק היקף אשכול נתמך. אם אתם צריכים לפתור שמות של שירותים ללא ראש שפועלים באשכולות GKE Autopilot, אתם צריכים להשתמש בהיקף VPC מצטבר.
  • אפשר להפעיל את ההגדרה של היקף VPC מצטבר באשכולות GKE Autopilot רק בזמן יצירת האשכול. אי אפשר להפעיל או להשבית את ההגדרה של היקף VPC מצטבר באשכולות קיימים של GKE Autopilot.
  • אין תמיכה ביצירת אשכולות עם היקף VPC מצטבר בפרויקטים של שירותים של רשתות VPC משותפות.
  • ‫Cloud DNS for GKE לא זמין ל-Assured Workload עם משטר תאימות IL4. kube-dns is forced in such regulated environments.
  • אין תמיכה בשינויים ידניים בתחומים פרטיים מנוהלים של DNS, והם נמחקים על ידי בקר Cloud DNS. שינויים ברשומות ה-DNS באזורים האלה לא נשמרים כשמפעילים מחדש את בקר התחום.
  • אחרי שמפעילים את Cloud DNS ל-GKE באשכול, kube-dns ממשיך לפעול באשכול. אפשר להשבית את kube-dns על ידי שינוי הגודל של הפריסה של kube-dns והקצאת המשאבים האוטומטית לאפס.
  • אחרי שמגדירים את היקף ה-DNS באשכול באמצעות הדגל --cluster-dns-scope, אי אפשר לשנות אותו. אם צריך לשנות את היקף ה-DNS, צריך ליצור מחדש את האשכול עם היקף DNS שונה.
  • חלות מגבלות על משאבי CloudDNS. בפרט, אפשר לקשר לרשת VPC לכל היותר אזור אחד של מדיניות תגובה בכל פעם. במקרים של היקפי VPC והיקפי VPC מצטברים, יצירת האשכול תיכשל אם כבר יש אזור מדיניות תגובה שלא עומד במוסכמות למתן שמות שקשורות לרשת ה-VPC של האשכול.
  • הגדרות של דומיינים מותאמים אישית ושרת DNS במעלה הזרם חלות על הגדרות ה-DNS של פודים וצמתים. גם פודים שמשתמשים ברשת המארח או בתהליכים שפועלים ישירות במארח משתמשים בהגדרות של שרת השמות במעלה הזרם ושל דומיין stub. ההתנהגות הזו נתמכת רק בגרסה הרגילה.
  • דומיינים מותאמים אישית של stub ושרתי שמות במעלה הזרם שמוגדרים באמצעות kube-dnsConfigmap מוחלים אוטומטית על 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 בצמתים שונים שמבצעים רזולוציה של Services באשכול GKE.
תרשים: DNS בהיקף אשכול

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

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

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

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

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 במסוף Cloud de Confiance .

    מעבר אל יצירת אשכול 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 אוCloud de Confiance המסוף.

כשמעבירים קלאסטר קיים מ-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 במסוף Cloud de Confiance .

    מעבר אל Google Kubernetes Engine

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

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

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

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

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

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

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

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

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

יצירת אשכול 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 מאפשר את תרחישי השימוש הבאים:

  • גילוי שירותים ללא ממשק משתמש ללקוחות שאינם 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 או מסוף Cloud de Confiance .

כשעוברים להיקף 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 במסוף Cloud de Confiance .

    מעבר אל Google Kubernetes Engine

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

  3. בקטע Networking (רשת), בשדה DNS provider (ספק DNS), לוחצים על Edit DNS provider (עריכת ספק 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 לדוגמה הזה נעשה שימוש ב-169.254.169.254 כ-nameserver, שהיא כתובת ה-IP של שרת המטא-נתונים שבו מישור הנתונים של Cloud DNS מאזין לבקשות ביציאה 53. הצמתים כבר לא משתמשים בכתובת השירות של 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. חושפים את האפליקציה לדוגמה באמצעות Service:

    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 במסוף Cloud de Confiance או במוסכמות השמות.
    • 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 אוCloud de Confiance המסוף.

gcloud

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

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

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

המסוף

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

    מעבר אל Google Kubernetes Engine

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

  3. בקטע Networking (רשת), בשדה DNS provider (ספק DNS), לוחצים על Edit DNS provider (עריכת ספק 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, ראו את הדפים הבאים:

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