במאמר הזה מוסבר איך להגדיר את Cloud DNS ולהשתמש בו כספק ה-DNS של אשכולות Google Kubernetes Engine (GKE).
מערכת Cloud DNS מנהלת באופן אוטומטי את רשומות ה-DNS של שירותי Kubernetes. כברירת מחדל, אפשר לגשת לרשומות האלה רק מתוך האשכול (היקף האשכול).
אם אתם צריכים לפתור שירותים ללא ממשק משתמש מחוץ לאשכול, למשל ממכונות וירטואליות של Compute Engine, אתם צריכים להפעיל את היקף ה-VPC או את היקף ה-VPC הנוסף.
המסמך הזה מיועד למשתמשי GKE, כולל מפתחים, אדמינים וארכיטקטים. במאמר תפקידים ומשימות נפוצים של משתמשי GKE תוכלו לקרוא מידע נוסף על תפקידים נפוצים ומשימות לדוגמה ב- Google Cloud.
כדי להפיק את המרב מהמסמך הזה, כדאי להכיר את הנושאים הבאים:
כדי ששירותי ClusterIP או NodePort יהיו נגישים מחוץ לאשכול, צריך לחשוף את השירות באמצעות LoadBalancer או שיטה אחרת, ולרשום את כתובת ה-IP החיצונית שלו ב-Cloud DNS.
מידע נוסף על השימוש ב-kube-dns כספק DNS זמין במאמר זיהוי שירותים ו-DNS.
כדי ללמוד איך להשתמש בגרסה מותאמת אישית של kube-dns או בספק DNS מותאם אישית, קראו את המאמר הגדרת פריסה מותאמת אישית של kube-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 באזורים האלה לא נשמרים כשהבקר מופעל מחדש.
- אחרי שמפעילים את Cloud DNS ל-GKE באשכול,
kube-dnsממשיך לפעול באשכול. כדי להשבית אתkube-dns, צריך לשנות את קנה המידה של פריסתkube-dnsושל ה-autoscaler לאפס. - אשכולות IPv6 עם מחסנית אחת מחייבים שימוש ב-Cloud DNS כספק ה-DNS של האשכול. ב-GKE אין תמיכה ב-
kube-dnsלפודים ולצמתים עם IPv6 בלבד. - אי אפשר לשנות את היקף ה-DNS באשכול אחרי שמגדירים את ההיקף באמצעות הדגל
--cluster-dns-scope. אם אתם צריכים לשנות את היקף ה-DNS, תצטרכו ליצור מחדש את האשכול עם היקף DNS אחר. - בכפוף למגבלות של משאבי Cloud DNS. במיוחד, אפשר לקשר לכל היותר אזור מדיניות תגובה אחד לרשת VPC בכל פעם. ב-VPC וב-VPC עם היקף נוסף, יצירת האשכול תיכשל אם כבר יש אזור מדיניות תגובה שלא פועל לפי מוסכמות מתן השמות, שקשור לרשת ה-VPC של האשכול.
- הגדרות של דומיינים מותאמים אישית של שרתי DNS ושל שרתי DNS במעלה הזרם חלות על הגדרות ה-DNS של Pods וצמתים. פודים שמשתמשים ברשתות מארח או בתהליכים שפועלים ישירות במארח משתמשים גם בהגדרות של דומיין ה-stub ושל שרת השמות במעלה הזרם. ההתנהגות הזו נתמכת רק ב-Standard.
- דומיינים מותאמים אישית של שרתי stub ושרתי שמות במעלה הזרם שמוגדרים באמצעות
kube-dnsConfigmap מוחלים באופן אוטומטי על Cloud DNS בשביל DNS ברמת האשכול. ה-DNS ברמת ה-VPC מתעלם מ-ConfigMap שלkube-dns, וצריך להחיל את ההגדרות האלה ישירות ב-Cloud DNS. ההתנהגות הזו נתמכת רק ב-Standard. - העברה מהיקף
kube-dnsלהיקף VPC היא פעולה שמשבשת את העבודה. צריך ליצור מחדש את האשכול כשעוברים מהיקףkube-dnsלהיקף VPC, או כשעושים את ההפך. - בהיקף VPC, אסור לשתף את טווח כתובות ה-IP המשני של השירותים עם אשכולות אחרים באותה רשת משנה.
- בהיקף VPC, מדיניות התגובה שמשויכת לרשומת PTR מצורפת לרשת ה-VPC. אם כללי מדיניות תגובה אחרים מקושרים לרשת האשכול, הרזולוציה של רשומת ה-PTR לכתובות ה-IP של שירות Kubernetes נכשלת.
- אם תנסו ליצור שירות ללא ממשק משתמש עם מספר Pods שחורג מהמכסה המותרת, Cloud DNS לא ייצור קבוצות של רשומות או רשומות לשירות.
- שמות השירותים והיציאות מוגבלים ל-62 תווים, למרות שהמגבלה המקסימלית של תוויות DNS היא 63 תווים. הסיבה לכך היא ש-GKE מוסיף קידומת של קו תחתון לרשומות DNS.
לפני שמתחילים
לפני שמתחילים, חשוב לוודא שביצעתם את המשימות הבאות:
- מפעילים את Google Kubernetes Engine API. הפעלת Google Kubernetes Engine API
- כדי להשתמש ב-Google Cloud CLI למשימה הזו, מתקינים ואז מאתחלים את ה-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 בלי זמן השבתה או שינויים באפליקציות.
בתרשים הבא מוצג איך Cloud DNS יוצר תחום DNS פרטי לאשכול GKE. רק תהליכים ו-Pods שפועלים בצמתים באשכול יכולים לפתור את רשומות ה-DNS של האשכול, כי רק הצמתים נמצאים בהיקף ה-DNS.
הפעלת היקף האשכול באשכול חדש
אשכולות Autopilot חדשים בגרסאות 1.25.9-gke.400, 1.26.4-gke.500 ואילך מוגדרים כברירת מחדל להיקף אשכול של Cloud DNS. בקטע הבא מוסבר איך להפעיל את היקף האשכול באשכול Standard חדש.
יצירת אשכול רגיל עם היקף אשכול מופעל
כדי ליצור אשכול 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_NAME: שם האשכול. COMPUTE_LOCATION: המיקום של Compute Engine לאשכול.
הדגל --cluster-dns-scope=cluster הוא אופציונלי בפקודה כי cluster הוא ערך ברירת המחדל.
המסוף
נכנסים לדף Create a Kubernetes cluster במסוף Google Cloud .
בחלונית הניווט, בקטע Cluster, לוחצים על Networking.
בקטע ספק DNS, לוחצים על Cloud DNS.
בוחרים באפשרות Cluster scope.
מגדירים את האשכול לפי הצורך.
לוחצים על יצירה.
הפעלת היקף האשכול באשכול קיים
אי אפשר להעביר אשכול 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
מעדכנים את האשכול הקיים:
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. עם זאת, הפודים לא משתמשים ב-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 במסוף Google Cloud .
לוחצים על שם האשכול שרוצים לשנות.
בקטע רישות, בשדה ספק DNS, לוחצים על edit עריכת ספק DNS.
לוחצים על Cloud DNS.
לוחצים על Cluster scope.
לוחצים על שמירת השינויים.
הפעלת היקף 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 מאפשר את תרחישי השימוש הבאים:
- זיהוי שירותים ללא ממשק משתמש ללקוחות שאינם GKE באותו VPC.
- רזולוציית שירות GKE מלקוחות בענן מקומי או בענן של צד שלישי. מידע נוסף זמין במאמר מדיניות שרת נכנס.
- רזולוציית שירות שבה לקוח יכול להחליט עם איזה אשכול לתקשר באמצעות דומיין ה-DNS של האשכול בהתאמה אישית.
בתרשים הבא, שני אשכולות GKE משתמשים ב-DNS בהיקף VPC באותו VPC. לשני האשכולות יש דומיין DNS בהתאמה אישית, .cluster1 ו-.cluster2, במקום דומיין ברירת המחדל .cluster.local. מכונה וירטואלית מתקשרת עם שירות לקצה העורפי ללא ממשק משתמש באמצעות פתרון של backend.default.svc.cluster1. Cloud DNS מבצע פענוח DNS של השירות ללא ממשק משתמש לכתובות ה-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 או מסוף Google Cloud .
כשעוברים להיקף 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 במסוף Google Cloud .
לוחצים על שם האשכול שרוצים לשנות.
בקטע רישות, בשדה ספק DNS, לוחצים על edit עריכת ספק DNS.
לוחצים על Cloud DNS.
לוחצים על VPC scope.
לוחצים על שמירת השינויים.
אימות של Cloud DNS
מוודאים ש-Cloud DNS ל-GKE פועל כמו שצריך באשכול:
כדי לוודא שהצמתים משתמשים ב-Cloud DNS, מתחברים לפוד בצומת ומריצים את הפקודה
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 לדוגמה הזה, הערך של
nameserverהוא169.254.169.254, כתובת ה-IP של שרת המטא-נתונים שבו מישור הנתונים של Cloud DNS מאזין לבקשות ביציאה53. הצמתים לא משתמשים יותר בכתובת השירות שלkube-dnsלפענוח DNS, וכל פענוח ה-DNS מתרחש בצומת המקומי.אם הפלט הוא כתובת IP שדומה ל-
10.x.y.10, הפוד משתמש ב-kube-dns. כדי להבין למה ה-Pod עדיין משתמש ב-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חושפים את האפליקציה לדוגמה באמצעות שירות:
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. אפשר למצוא את שמות תחום ה-DNS בדף Cloud DNS zones במסוף Google Cloud , או לעיין במוסכמות למתן שמות. -
DOMAIN_NAME: הערךcluster.localאם אתם משתמשים בהיקף אשכול בלי היקף VPC נוסף, או הדומיין המותאם אישית שהגדרתם כשהפעלתם את היקף ה-VPC או את היקף ה-VPC הנוסף.
הפלט אמור להיראות כך:
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
מחליפים את מה שכתוב בשדות הבאים:
-
CLUSTER_NAME: שם האשכול. -
COMPUTE_LOCATION: המיקום ב-Compute Engine של האשכול.
המסוף
נכנסים לדף Google Kubernetes Engine במסוף Google Cloud .
לוחצים על שם האשכול שרוצים לשנות.
בקטע רישות, בשדה ספק DNS, לוחצים על edit עריכת ספק DNS.
לוחצים על Kube-dns.
לוחצים על שמירת השינויים.
אחרי שמשביתים את Cloud DNS, צריך ליצור מחדש את מאגרי הצמתים כדי שהצמתים יוכלו להשתמש ב-kube-dns לפתרון. אם בעבר הפחתתם את מספר הצמתים של kube-dns לאפס, אתם צריכים להגדיל את מספר הצמתים של kube-dns כדי שהצמתים יוכלו להשתמש בו לפענוח DNS. אם לא תיצרו מחדש את מאגרי הצמתים, Pods בצמתים קיימים ימשיכו להשתמש ב-Cloud DNS לפענוח DNS, כי קובץ ה-/etc/resolv.conf שלהם לא יעודכן עד שהצומת ייווצר מחדש.
השבתת היקף VPC נוסף
כשמשביתים את היקף ה-VPC הנוסף באשכול, רק רשומות ה-DNS באזורים הפרטיים שמצורפים לרשת ה-VPC נמחקות. הרשומות בתחומי ה-DNS הפרטיים של אשכול GKE יישארו, וינוהלו על ידי Cloud DNS ל-GKE, עד שהשירות ללא ראש יימחק מהאשכול.
כדי להשבית את היקף ה-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, תוכלו להיעזר במאמר פתרון בעיות ב-Cloud DNS.
- לייעוץ כללי בנושא אבחון בעיות DNS ב-Kubernetes, קראו את המאמר ניפוי באגים של רזולוציית DNS.
המאמרים הבאים
- סקירה כללית על האופן שבו GKE מספק DNS מנוהל.
- במאמר DNS לשירותים ול-Pods מוסבר באופן כללי איך משתמשים ב-DNS באשכולות של Kubernetes.
- מידע על היקפים והיררכיות ב-Cloud DNS
- איך מפעילים ומשביתים את הרישום ביומן של אזורים מנוהלים פרטיים