במאמר הזה מוסבר איך להגדיר את 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-dnsis 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-dnsConfigMap, ולכן צריך להחיל את ההגדרות האלה ישירות ב-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 בהיקף אשכול, צריך אחת מהגרסאות הבאות:
- ב-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.
הפעלת היקף האשכול באשכול חדש
באשכולות חדשים במצב 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_NAME: שם האשכול. -
COMPUTE_LOCATION: המיקום של Compute Engine של האשכול.
הדגל --cluster-dns-scope=cluster הוא אופציונלי בפקודה כי cluster הוא ערך ברירת המחדל.
המסוף
נכנסים לדף Create a Kubernetes cluster במסוף Cloud de Confiance .
בחלונית הניווט, בקטע Cluster, לוחצים על Networking.
בקטע ספק DNS, לוחצים על Cloud DNS.
בוחרים באפשרות היקף האשכול.
מגדירים את האשכול לפי הצורך.
לוחצים על יצירה.
הפעלת היקף אשכול באשכול קיים
אין תמיכה בהעברת אשכול 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
מעדכנים את האשכול הקיים:
gcloud container clusters update CLUSTER_NAME \ --cluster-dns=clouddns \ --cluster-dns-scope=cluster \ --location=COMPUTE_LOCATIONמחליפים את מה שכתוב בשדות הבאים:
-
CLUSTER_NAME: שם האשכול. -
COMPUTE_LOCATION: המיקום של Compute Engine של האשכול.
הדגל
--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 עד שמשדרגים את מאגר הצמתים או מוסיפים מאגרי צמתים חדשים לאשכול.
-
משדרגים את מאגרי הצמתים באשכול כדי להשתמש ב-Cloud DNS:
gcloud container clusters upgrade CLUSTER_NAME \ --node-pool=POOL_NAME \ --location=COMPUTE_LOCATIONמחליפים את מה שכתוב בשדות הבאים:
-
CLUSTER_NAME: שם האשכול. -
POOL_NAME: השם של מאגר הצמתים שרוצים לשדרג.
אם מאגר הצמתים ורמת הבקרה מריצים את אותה גרסה, צריך לשדרג קודם את רמת הבקרה, כמו שמתואר במאמר בנושא שדרוג ידני של רמת הבקרה. לאחר מכן, מבצעים את השדרוג של מאגר הצמתים.
מאשרים את התגובה וחוזרים על הפקודה הזו לכל מאגר צמתים באשכול. אם באשכול יש מאגר צמתים אחד, משמיטים את הדגל
--node-pool.-
המסוף
נכנסים לדף Google Kubernetes Engine במסוף Cloud de Confiance .
לוחצים על השם של האשכול שרוצים לשנות.
בקטע Networking (רשת), בשדה DNS provider (ספק DNS), לוחצים על edit Edit DNS provider (עריכת ספק DNS).
לוחצים על Cloud DNS.
לוחצים על היקף האשכול.
לוחצים על שמירת השינויים.
הפעלת היקף מצטבר של 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 של הפודים.
אפשר גם לבצע את סוג ההגדרה הזה מרשתות אחרות כשמתחברים ל-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
מעדכנים את האשכול הקיים:
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 עד שתשדרגו את מאגר הצמתים או תוסיפו מאגרי צמתים חדשים לאשכול.
-
משדרגים את מאגרי הצמתים באשכול כדי להשתמש ב-Cloud DNS:
gcloud container clusters upgrade CLUSTER_NAME \ --node-pool=POOL_NAMEמחליפים את מה שכתוב בשדות הבאים:
-
CLUSTER_NAME: שם האשכול. -
POOL_NAME: השם של מאגר הצמתים שרוצים לשדרג.
אם מאגר הצמתים ורמת הבקרה מריצים את אותה גרסה, צריך לשדרג קודם את רמת הבקרה, כמו שמתואר במאמר בנושא שדרוג ידני של רמת הבקרה. לאחר מכן, מבצעים את השדרוג של מאגר הצמתים.
מאשרים את התגובה וחוזרים על הפקודה הזו לכל מאגר צמתים באשכול. אם באשכול יש מאגר צמתים אחד, משמיטים את הדגל
--node-pool.-
המסוף
נכנסים לדף Google Kubernetes Engine במסוף Cloud de Confiance .
לוחצים על השם של האשכול שרוצים לשנות.
בקטע Networking (רשת), בשדה DNS provider (ספק DNS), לוחצים על edit Edit DNS provider (עריכת ספק DNS).
לוחצים על Cloud DNS.
לוחצים על VPC scope (היקף ה-VPC).
לוחצים על שמירת השינויים.
אימות של Cloud DNS
מוודאים ש-Cloud DNS ל-GKE פועל בצורה תקינה עבור האשכול:
כדי לוודא שהצמתים משתמשים ב-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.10NodeLocal 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.פורסים אפליקציה לדוגמה באשכול:
kubectl run dns-test --image us-docker.pkg.dev/google-samples/containers/gke/hello-app:2.0חושפים את האפליקציה לדוגמה באמצעות Service:
kubectl expose pod dns-test --name dns-test-svc --port 8080מוודאים שהשירות נפרס בהצלחה:
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.מוודאים ששם השירות נוצר כרשומה בתחום ה-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
מחליפים את מה שכתוב בשדות הבאים:
-
CLUSTER_NAME: שם האשכול. -
COMPUTE_LOCATION: המיקום של Compute Engine של האשכול.
המסוף
נכנסים לדף Google Kubernetes Engine במסוף Cloud de Confiance .
לוחצים על השם של האשכול שרוצים לשנות.
בקטע Networking (רשת), בשדה DNS provider (ספק DNS), לוחצים על edit Edit DNS provider (עריכת ספק DNS).
לוחצים על Kube-dns.
לוחצים על שמירת השינויים.
אחרי שמשביתים את 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 מתוך האשכול.
הסרת המשאבים
אחרי שתסיימו את התרגילים במסמך הזה, תצטרכו לפעול לפי השלבים הבאים כדי להסיר משאבים ולמנוע חיובים לא רצויים בחשבון:
מוחקים את השירות:
kubectl delete service dns-test-svcמוחקים את ה-Pod:
kubectl delete Pod dns-testאפשר גם למחוק את האשכול.
פתרון בעיות
למידע על פתרון בעיות ב-Cloud DNS, ראו את הדפים הבאים:
- לקבלת עצות לגבי Cloud DNS ב-GKE, אפשר לעיין במאמר פתרון בעיות ב-Cloud DNS ב-GKE.
- אם אתם רוצים עצות ספציפיות לגבי Cloud DNS, תוכלו להיעזר במאמר פתרון בעיות ב-Cloud DNS.
- לקבלת עצות כלליות לגבי אבחון בעיות DNS ב-Kubernetes, אפשר לעיין במאמר בנושא ניפוי באגים ברזולוציית DNS.
המאמרים הבאים
- סקירה כללית על האופן שבו GKE מספק DNS מנוהל
- במאמר DNS לשירותים ול-Pods מופיעה סקירה כללית על השימוש ב-DNS באשכולות Kubernetes.
- מידע נוסף על היקפים והיררכיות ב-Cloud DNS
- מידע נוסף על הפעלה והשבתה של רישום ביומן עבור אזורים פרטיים מנוהלים