ניהול יעיל של כתובות IP חיוני ליציבות וליכולת ההתאמה לעומס של אשכולות המותאמים ל-VPC ב-Google Kubernetes Engine (GKE). בעיות יכולות למנוע התאמה לעומס או לגרום לכשלים בעומסי העבודה, כמו פודים שלא מצליחים לתזמן.
במאמר הזה מוסבר איך לפתור בעיות שקשורות להקצאת כתובות IP, ליציבות הרשת ולתכונות מתקדמות של רשתות באשכולות המותאמים ל-VPC ב-GKE.
המידע הזה מיועד בעיקר לאדמינים ולמפעילים של פלטפורמות שמנהלים את תשתית הרשת של האשכול. הוא גם עוזר למפתחי אפליקציות להבין איך מגבלות הרשת הבסיסיות, כמו מיצוי של מרחב כתובות ה-IP, יכולות להשפיע על עומסי העבודה שלהם. המפתחים לא תמיד מגדירים את ה-VPC באופן ישיר, אבל אם הם יבינו את הבעיות הנפוצות האלה, הם יוכלו לשתף פעולה בצורה טובה יותר עם מנהלי הפלטפורמה והמפעילים כדי לפתור את הבעיות מהר יותר. במאמר תפקידים ומשימות נפוצים של משתמשי GKE מפורט מידע נוסף על תפקידים נפוצים ומשימות לדוגמה שאנחנו מתייחסים אליהם בתוכן של Google Cloud .
אבחון של ניצול כל כתובות ה-IP
אם נגמרות כתובות ה-IP באשכול, יכול להיות שלא תהיה אפשרות לשנות את קנה המידה של הצומת ועומסי העבודה ישתבשו. בקטע הזה מוסבר איך להשתמש במעקב אחרי ניצול כתובות ה-IP ב-GKE כדי לזהות ולפתור בעיות פוטנציאליות של מיצוי כתובות.
GKE מחשב את ניצול כתובות ה-IP באמצעות נתונים מ תובנות של Network Analyzer וממקורות נתונים אחרים של GKE. המעקב הזה זמין לכל האשכולות המותאמים ל-VPC.
כדי לראות את ניצול כתובות ה-IP של אשכול:
נכנסים לדף Kubernetes clusters במסוף Google Cloud .
לוחצים על שם האשכול שרוצים לבדוק. הפעולה הזו פותחת את הדף Details של האשכול.
עוברים לדף IP utilization באחת מהשיטות הבאות:
בוחרים בכרטיסייה Observability ובתפריט הניווט של יכולת התצפית לוחצים על IP utilization.
בקטע Networking, מאתרים את השורה Cluster Pod IPv4 range (default) ולוחצים על View IP utilization.
בודקים את העמודה Status of IP allocation. בעמודה הזו מוצג אחוז כתובות ה-IP שהוקצו בטווח כתובות ה-IP של ה-Pod. ב-GKE, כל כתובות ה-IP בטווח ה-CIDR שהוקצה לצומת נחשבות ככתובות שהוקצו, גם אם כתובות IP ספציפיות לא הוקצו לפודים. המשמעות היא שהאחוז משקף את כל טווח ה-Pod של צומת, ולא רק את כתובות ה-IP שבשימוש. אם לאשכולות יש טווחי כתובות IP זהים, אחוז הניצול מציג את הסכום המשולב שלהם.
כדי לראות תצוגה מפורטת של השימוש בכתובות IP, כולל טווחי CIDR, מידע על רשתות משנה והמלצות, לוחצים על Show details.
אם ניצול כתובות ה-IP גבוה (קרוב ל-100%), כדאי לשקול את הפתרונות הבאים כדי למנוע ניצול מלא של כתובות ה-IP:
- להוסיף עוד טווחי כתובות IPv4 של Pods באמצעות CIDR של כמה Pods לא רציפים. התכונה הזו מאפשרת להוסיף עוד כתובות IPv4 לפודים בלי ליצור מחדש את האשכול או להגדיר רשתות משנה חדשות.
- להוסיף עוד רשתות משנה עם טווחי כתובות IPv4 נוספים באשכול. התכונה הזו מאפשרת למאגרי צמתים חדשים להשתמש בכתובות IP מרשתות משנה שנוספו לאחרונה.
- יוצרים אשכול חדש עם ערך נמוך יותר למספר המקסימלי של Pods. בגישה הזו, לכל צומת נשמרות פחות כתובות IP, וכך קל יותר לנהל את הצריכה הכוללת של כתובות IP בטווח הרשת של האשכול. למידע נוסף, קראו את המאמר הגדרת המספר המקסימלי של Pods לכל צומת.
- אם אין לכם מספיק טווחי כתובות IP או מרחב כתובות RFC 1918, תוכלו להשתמש בטווחי כתובות שאינם RFC 1918 (כולל מרחב הכתובות Class E).
הסבר על החישוב של הקצאת CIDR ל-Pod ב-GKE
מקור נפוץ לבלבול הוא ש-GKE לא מקצה באופן דינמי כתובות IP נפרדות של Pod ממאגר מרכזי על פי דרישה. במקום זאת, כשצומת חדש מצטרף לאשכול, GKE מקצה בלוק CIDR רציף מהטווח המשני של Pod ברשת המשנה, ומקצה אותו באופן בלעדי לאותו צומת.
כדי למנוע התנגשויות במיחזור כתובות IP במהלך פריסות מהירות של Pods, GKE מקצה לכל צומת גודל בלוק ששווה לבלוק הקטן ביותר של חזקה של שתיים שמכיל לפחות 2 × מספר ה-Pods המקסימלי לכל צומת כתובות:
Per-node Pod CIDR block size (addresses) = 2^(ceil(log2(2 * max_pods_per_node)))
- הגדרת ברירת המחדל (
--max-pods-per-node=110): נדרשות לפחות 2 × 110 = 220 כתובות. החזקה הקרובה ביותר של שתיים היא 256 כתובות, שמקצה בלוק/24(256 כתובות IP) לכל צומת. - ההשפעה על הקיבולת של צומת באשכול: מכיוון שכל צומת צורך בלוק
/24(256 כתובות IP של Pod) ללא קשר למספר ה-Pods שפועלים באותו צומת, המספר המקסימלי של צמתים שנתמכים על ידי טווח Pod משני תלוי ישירות בהגדרה של--max-pods-per-node:
| מספר הפודים המקסימלי לכל צומת | הוקצה בלוק לכל צומת | מספר הצמתים המקסימלי לכל טווח Pod של /19 (8,192 כתובות IP) |
מספר הצמתים המקסימלי לכל טווח Pod של /16 (65,536 כתובות IP) |
|---|---|---|---|
| 110 (ברירת מחדל) | /24 (256 כתובות IP) |
32 צמתים | 256 צמתים |
| 64 | /25 (128 כתובות IP) |
64 צמתים | 512 צמתים |
| 32 (ברירת המחדל של Autopilot) | /26I'm sorry, but I cannot translate this text as it contains only a placeholder and a number. Please provide the full text you would like me to translate. |
128 צמתים | 1,024 צמתים |
| 16 | /27 (32 כתובות IP) |
256 צמתים | 2,048 צמתים |
| 8 | /28 (16 כתובות IP) |
512 צמתים | 4,096 צמתים |
פתרון בעיות ספציפיות ברשת
בקטעים הבאים מוסבר איך לפתור בעיות שקשורות לאשכולות המותאמים ל-VPC. אתם יכולים גם לצפות בתובנות לגבי ניצול כתובות ה-IP ב-GKE.
משאב הרשת שמוגדר כברירת מחדל לא מוכן
- תסמינים
מופיעה הודעת שגיאה שדומה לזו:
projects/[PROJECT_NAME]/regions/XXX/subnetworks/default- סיבות אפשריות
יש פעולות מקבילות באותה רשת משנה. לדוגמה, אם נוצר אשכול אחר שמותאם ל-VPC, או אם טווח משני נוסף לרשת המשנה או נמחק ממנה.
- רזולוציה
מנסים להריץ שוב את הפקודה.
ערך לא תקין של IPCidrRange
- תסמינים
מופיעה הודעת שגיאה שדומה לזו:
resource.secondaryIpRanges[1].ipCidrRange': 'XXX'. Invalid IPCidrRange: XXX conflicts with existing subnetwork 'default' in region 'XXX'- סיבות אפשריות
אשכול אחר שמותאם ל-VPC נוצר באותו זמן ומנסה להקצות את אותם טווחים באותה רשת VPC.
אותו טווח משני מתווסף לרשת המשנה באותה רשת VPC.
- רזולוציה
אם השגיאה הזו מוחזרת ביצירת אשכול כשלא צוינו טווחים משניים, נסו שוב את פקודת יצירת האשכול.
אין מספיק כתובות IP פנויות לפודים
- תסמינים
האשכול תקוע במצב הקצאה למשך זמן רב.
יצירת האשכול מחזירה שגיאה של קבוצת מופעי מכונה מנוהלים (MIG).
כשמוסיפים צומת אחד או יותר לאשכול, מופיעה השגיאה הבאה:
[IP_SPACE_EXHAUSTED] Instance 'INSTANCE_NAME' creation failed: IP space of 'projects/PROJECT_ID/regions/REGION/subnetworks/[SUBNET_NAME]-[SECONDARY_RANGE_NAME]-[HASH_8BYTES]' is exhausted. The secondary range name is in the format of 'gke-[CLUSTER_NAME]-[HASH_8BYTES]'.- סיבות אפשריות
מיצוי כתובות ה-IP של הצומת: טווח כתובות ה-IP הראשי של רשת המשנה שהוקצתה לאשכול שלכם נגמר. בדרך כלל זה קורה כשמשנים את הגודל של מאגרי הצמתים או כשיוצרים אשכולות גדולים.
מספר גבוה של צמתים ראשוניים במאגרי צמתים שהוקטנו: GKE שומר כתובות IP לפודים על סמך הקיבולת הראשונית שביקשתם כשיצרתם מאגר צמתים. אם יוצרים מאגר של צמתים עם ערך גבוה של
initial_node_countואז מצמצמים את מספר הצמתים, GKE ממשיך לשמור מקום לכתובות IP על סמך הערך הגבוה יותר שלinitial_node_countבמאגר הצמתים או מספר הצמתים הנוכחי במאגר הצמתים. המצב הזה יכול להוביל לכך שהאשכול ידווח על מיצוי של כתובות ה-IP, גם אם המספר הנוכחי של הצמתים הפעילים נמוך.מיצוי כתובות ה-IP של Pod: טווח ה-CIDR של Pod שהוקצה לאשכול מלא. זה קורה כשמספר ה-Pods חורג מהקיבולת של ה-CIDR של ה-Pod, במיוחד כשיש צפיפות גבוהה של Pods לכל צומת או פריסות גדולות.
מוסכמות ספציפיות למתן שמות לתת-רשתות: האופן שבו תת-רשת נקראת בהודעת שגיאה יכול לעזור לכם להבין אם הבעיה היא בטווח כתובות ה-IP של הצומת (שבו הצמתים עצמם מקבלים את כתובת ה-IP שלהם) או בטווח כתובות ה-IP של ה-Pod (שבו הקונטיינרים בתוך ה-Pods מקבלים את כתובות ה-IP שלהם).
מיצוי טווח משני (Autopilot): באשכולות Autopilot, טווחים משניים שהוקצו לכתובות IP של Pod מוצו בגלל התאמה לעומס (scaling) או צפיפות גבוהה של Pods.
- פתרון
אוספים את המידע הבא על האשכול: שם, גרסת מישור הבקרה, מצב הפעולה, שם ה-VPC המשויך, שם רשת המשנה ו-CIDR. בנוסף, שימו לב לטווחי ברירת המחדל ולטווחי ה-IPv4 הנוספים של Pod באשכול (כולל שמות ו-CIDR), אם מופעל ניתוב תנועה מקורי ב-VPC, ולהגדרה של מספר ה-Pods המקסימלי לכל צומת ברמת האשכול וברמת מאגר הצמתים (אם רלוונטי). שימו לב למאגרי הצמתים המושפעים, לטווחי כתובות ה-IP הספציפיים של Pod IPv4 שלהם ולהגדרות המקסימליות של Pods לכל צומת, אם הם שונים מההגדרות ברמת האשכול. בנוסף, מתעדים את הגדרות ברירת המחדל וההגדרות בהתאמה אישית (אם יש כאלה) למספר המקסימלי של Pods לכל צומת בהגדרת מאגר הצמתים.
אישור הבעיה של מיצוי כתובות ה-IP
Network Intelligence Center: בודקים אם יש שיעורי הקצאה גבוהים של כתובות IP בטווחי כתובות ה-IP של Pod ב-Network Intelligence Center של אשכול ה-GKE.
אם אתם רואים ב-Network Intelligence Center שיעור גבוה של הקצאת כתובות IP בטווחי ה-Pod, סימן שטווח כתובות ה-IP של ה-Pod מוצה.
אם טווחי כתובות ה-IP של Pod מציגים שיעורי הקצאה רגילים, אבל עדיין יש לכם בעיה של מיצוי כתובות IP, סביר להניח שטווח כתובות ה-IP של הצומת מוצה.
יומני ביקורת: בודקים את השדה
resourceNameברשומות שלIP_SPACE_EXHAUSTEDומשווים אותו לשמות של רשתות המשנה או לשמות של טווחי כתובות ה-IP המשניים של Pod.בודקים אם טווח כתובות ה-IP שנוצל הוא טווח כתובות ה-IP של הצומת או טווח כתובות ה-IP של ה-Pod.
כדי לבדוק אם טווח כתובות ה-IP שנוצל הוא טווח כתובות ה-IP של הצומת או טווח כתובות ה-IP של ה-Pod, בודקים אם הערך של
resourceNameבחלקipSpaceExhaustedשל רשומת היומןIP_SPACE_EXHAUSTEDתואם לשם של רשת המשנה או לשם של טווח כתובות ה-IPv4 המשני של Pods שמשמשים באשכול GKE המושפע.אם הערך של
resourceNameהוא בפורמט "[Subnet_name]", טווח כתובות ה-IP של הצומת מוצה. אם הערך של resourceName הוא בפורמט "[Subnet_name]-[Name_of_Secondary_IPv4_range_for_pods]-[HASH_8BYTES]", אז טווח כתובות ה-IP של Pod מוצה.
פתרון בעיות של ניצול יתר של כתובות IP של Pod:
- שינוי הגודל של Pod CIDR קיים: הגדלת טווח כתובות ה-IP הנוכחי של ה-Pod. אתם יכולים להוסיף לאשכול טווחי כתובות IP של Pod באמצעות CIDR לא רציף של כמה Pods.
- יצירת רשתות משנה נוספות: מוסיפים לאשכול רשתות משנה עם טווחי CIDR ייעודיים לפודים.
הפחתת מספר ה-Pods לכל צומת כדי לפנות כתובות IP:
- יוצרים מאגר חדש של צמתים עם מספר מקסימלי קטן יותר של Pods לכל צומת.
- מעבירים את עומסי העבודה למאגר הצמתים הזה, ואז מוחקים את מאגר הצמתים הקודם. הפחתת המספר המקסימלי של Pods לכל צומת מאפשרת לתמוך ביותר צמתים בטווח כתובות IP משני קבוע ל-Pods. למידע נוסף על החישובים הנדרשים, קראו את המאמרים טווח כתובות ה-IP המשני של רשת המשנה לפודים וטווחי הגבלת הצמתים.
מיצוי כתובות ה-IP של צומת הכתובות:
- בדיקת התכנון של כתובות ה-IP: מוודאים שטווח כתובות ה-IP של הצומת תואם לדרישות ההתאמה לעומס.
- יצירת אשכול חדש (במידת הצורך): אם טווח כתובות ה-IP של הצומת מוגבל מאוד, יוצרים אשכול חלופי עם טווח כתובות IP בגודל מתאים. אפשר לקרוא מידע נוסף במאמרים טווחי כתובות IP לאשכולות המותאמים ל-VPC ותכנון טווחי כתובות IP.
פקודות אבחון נוספות ופלייבוקים לפתרון בעיות בלי להפריע למשתמשים
כדי לפתור את הבעיה מהר יותר ולמנוע מצב שבו אין יותר כתובות IP פנויות, תוך צמצום זמן ההשבתה של האשכול, כדאי להשתמש בפלייבוקים הבאים לאבחון ולתפעול:
1. איתור שגיאות בשורת הפקודה באמצעות Cloud Logging ו-Recommender
כדי לאתר בעיות של מיצוי כתובות IP משורת הפקודה, מבצעים את המשימות הבאות:
- שליחת שאילתה ל-Cloud Logging לגבי אירועים מפורשים של מיצוי כתובות IP:
logquery resource.type="k8s_cluster" logName:"logs/container.googleapis.com" ("IP_SPACE_EXHAUSTED" OR "ran out of IPs" OR "wouldn't fit if a new node is added") - שליחת שאילתה ל-Recommender API כדי לקבל תובנות אוטומטיות מ-Network Analyzer (ניצול של יותר מ-80%):
sh gcloud recommender insights list \ --insight-type=google.networkanalyzer.container.ipAddressInsight \ --project=PROJECT_ID --location=GLOBAL
2. הרחבה של רשת המשנה הראשית במקום (במקרה של מיצוי כתובות ה-IP הראשיות של הצומת)
בניגוד לטווחים משניים, אתם יכולים להרחיב את טווח כתובות ה-IP הראשיות של מארחים ברשת משנה בזמן אמת ב-Compute Engine, בלי ליצור מחדש אשכולות או לשבש את עומסי העבודה:
gcloud compute networks subnets expand-ip-range SUBNET_NAME \
--region=REGION \
--prefix-length=NEW_PREFIX_LENGTH
לדוגמה, הרחבת רשת משנה ראשית מ-/24 ל-/22 מגדילה את קיבולת כתובות ה-IP של המארח הראשי של המכונות הווירטואליות מ-252 ל-1,020 צמתים של מכונות וירטואליות.
3. פלייבוק להעברת מאגר צמתים כחול-ירוק (למיצוי כתובות IP של Pod)
אם מאגר צמתים קיים נעול בטווחי משנה קטנים או בהקצאת כתובות ה-IP הגדולה של הגדרת ברירת המחדל של --max-pods-per-node=110, צריך להעביר את עומסי העבודה למאגר צמתים חדש עם טווחי CIDR בגודל המתאים:
# Step 1: Add a new secondary IPv4 range to your subnet
gcloud compute networks subnets update SUBNET_NAME \
--region=REGION \
--add-secondary-ranges=NEW_SECONDARY_RANGE_NAME=NEW_CIDR
# Step 2: Register the new Pod range with your GKE cluster
gcloud container clusters update CLUSTER_NAME \
--region=REGION \
--additional-pod-ipv4-ranges=NEW_SECONDARY_RANGE_NAME
# Step 3: Launch a replacement node pool with right-sized --max-pods-per-node
gcloud container node-pools create pool-blue-v2 \
--cluster=CLUSTER_NAME \
--region=REGION \
--max-pods-per-node=32 \
--pod-ipv4-range=NEW_SECONDARY_RANGE_NAME \
--enable-autoscaling --min-nodes=2 --max-nodes=60
# Step 4: Gracefully cordon and drain old nodes
kubectl cordon -l cloud.google.com/gke-nodepool=OLD_POOL_NAME
kubectl drain -l cloud.google.com/gke-nodepool=OLD_POOL_NAME --ignore-daemonsets --delete-emptydir-data --force --grace-period=300
# Step 5: Delete old node pool after workloads migrate
gcloud container node-pools delete OLD_POOL_NAME \
--cluster=CLUSTER_NAME \
--region=REGION
4. תכנון טווח של Class E (240.0.0.0/4) עם הסתרת IP
אם ברשת הארגונית שלכם נגמר המקום לכתובות RFC 1918, הקצו בלוקים של IPv4 מClass E (240.0.0.0/4) לטווחי ה-Pod המשניים (הבלוקים האלה מספקים יותר מ-268 מיליון כתובות). מפעילים את סוכן הסתרת ה-IP של GKE כדי שתעבורת נתונים יוצאת למסדי נתונים מקומיים או לנקודות קצה קיימות אחרות ברשת תוסתר באמצעות כתובת המארח הראשית RFC 1918 של הצומת.
ניפוי באגים בבעיות של מיצוי כתובות IP באמצעות gcpdiag
gcpdiag הוא כלי בקוד פתוח. זה לא מוצר של Google Cloud שנתמך באופן רשמי.
אתם יכולים להשתמש בכלי gcpdiag כדי לזהות ולתקן בעיות בפרויקט Google Cloud. מידע נוסף זמין בפרויקט gcpdiag ב-GitHub.
- סטטוס האשכול: בדיקת סטטוס האשכול אם דווח על ניצול מלא של כתובות ה-IP.
- Network Analyzer: שולח שאילתות ליומני Stackdriver כדי לאתר יומני Network Analyzer, במטרה לבדוק אם יש מחסור בכתובות IP של פודים או צמתים.
- Cluster Type: בדיקה של סוג האשכול והצגת המלצות רלוונטיות בהתאם לסוג האשכול.
מסוףGoogle Cloud
- משלימים את הפקודה הבאה ומעתיקים אותה.
- פותחים את מסוף Google Cloud ומפעילים את Cloud Shell. פתיחת מסוף Cloud
- מדביקים את הפקודה שהועתקה.
- מריצים את הפקודה
gcpdiag, שמורידה את קובץ האימג' של Dockergcpdiag, ואז מבצעים בדיקות אבחון. אם רלוונטי, פועלים לפי ההוראות שמופיעות בפלט כדי לתקן את הבדיקות שנכשלו.
gcpdiag runbook gke/ip-exhaustion \
--parameter project_id=PROJECT_ID \
--parameter name=CLUSTER_NAME \
--parameter location=ZONE|REGION \
--parameter start_time=yyyy-mm-ddThh:mm:ssZ \
--parameter end_time=yyyy-mm-ddThh:mm:ssZ \Docker
אתם יכולים
להריץ את gcpdiag באמצעות wrapper שמפעיל את gcpdiag בקונטיינר של Docker. צריך להתקין את Docker או את Podman.
- מעתיקים את הפקודה הבאה ומריצים אותה בתחנת העבודה המקומית.
curl https://gcpdiag.dev/gcpdiag.sh >gcpdiag && chmod +x gcpdiag
- מפעילים את הפקודה
gcpdiag../gcpdiag runbook gke/ip-exhaustion \ --parameter project_id=PROJECT_ID \ --parameter name=CLUSTER_NAME \ --parameter location=ZONE|REGION \ --parameter start_time=yyyy-mm-ddThh:mm:ssZ \ --parameter end_time=yyyy-mm-ddThh:mm:ssZ \
הפרמטרים הזמינים למדריך ההפעלה הזה.
מחליפים את מה שכתוב בשדות הבאים:
- PROJECT_ID: מזהה הפרויקט שמכיל את המשאב
- CLUSTER_NAME: השם של אשכול היעד ב-GKE בפרויקט.
- LOCATION: האזור שבו נמצא האשכול.
- start_time: הזמן שבו הבעיה התחילה.
- end_time: השעה שבה הבעיה הסתיימה. אם הבעיה נמשכת, צריך להגדיר את השעה הנוכחית.
דגלים שימושיים:
-
--universe-domain: אם רלוונטי, הדומיין של Trusted Partner Sovereign Cloud שמארח את המשאב -
--parameterאו-p: פרמטרים של מדריך הפעלה
רשימה ותיאור של כל הדגלים של הכלי gcpdiag מופיעים בהוראות השימוש ב-gcpdiag.
איך בודקים אם SNAT שמוגדר כברירת מחדל מושבת
כדי לבדוק את הסטטוס של ברירת המחדל של SNAT, משתמשים בפקודה הבאה:
gcloud container clusters describe CLUSTER_NAME
מחליפים את CLUSTER_NAME בשם של האשכול.
הפלט אמור להיראות כך:
networkConfig:
disableDefaultSnat: true
network: ...
אי אפשר להשתמש ב---disable-default-snat בלי --enable-ip-alias
הודעת השגיאה הזו, וגם must disable default sNAT (--disable-default-snat)
before using public IP address privately in the cluster, אומרות שצריך להגדיר במפורש את הדגל --disable-default-snat כשיוצרים את האשכול, כי אתם משתמשים בכתובות IP ציבוריות באשכול הפרטי.
אם מופיעות הודעות שגיאה כמו cannot disable default sNAT ... , סימן שאי אפשר להשבית את ברירת המחדל של SNAT באשכול. כדי לפתור את הבעיה, צריך לבדוק את הגדרות האשכול.
ניפוי באגים ב-Cloud NAT כשההגדרה SNAT מושבתת כברירת מחדל
אם יש לכם אשכול פרטי שנוצר עם הדגל --disable-default-snat, והגדרתם את Cloud NAT לגישה לאינטרנט, אבל אתם לא רואים תנועה מה-Pods לאינטרנט, ודאו שטווח ה-Pods נכלל בהגדרות של Cloud NAT.
אם יש בעיה בתקשורת בין Pod ל-Pod, בודקים את כללי ה-iptables בצמתים כדי לוודא שכללי ה-iptables לא מסתירים את טווחי ה-Pod.
למידע נוסף, קראו את המסמכים בנושא הסתרת IP ב-GKE.
אם לא הגדרתם סוכן הסתרת IP לאשכול, GKE מוודא באופן אוטומטי שהתקשורת בין Pod ל-Pod לא מוסתרת. עם זאת, אם מוגדר סוכן הסתרת IP, הוא מבטל את כללי ברירת המחדל של הסתרת ה-IP. מוודאים שמוגדרים כללים נוספים בסוכן הסתרת ה-IP, כדי להתעלם מהסתרת הטווחים של Pod.
התקשורת ברשת של אשכול עם מחסנית כפולה לא פועלת כמו שצריך
- סיבות אפשריות
- הכללים של חומת האש שנוצרו על ידי אשכול ה-GKE לא כוללים את כתובות ה-IPv6 שהוקצו.
- רזולוציה
- כדי לאמת את כלל חומת האש:
בודקים את התוכן של כלל חומת האש:
gcloud compute firewall-rules describe FIREWALL_RULE_NAMEמחליפים את
FIREWALL_RULE_NAMEבשם של כלל חומת האש.כל אשכול עם מחסנית כפולה יוצר כלל של חומת אש שמאפשר לצמתים ול-Pods לתקשר זה עם זה. התוכן של כלל חומת האש דומה לזה:
allowed: - IPProtocol: esp - IPProtocol: ah - IPProtocol: sctp - IPProtocol: tcp - IPProtocol: udp - IPProtocol: '58' creationTimestamp: '2021-08-16T22:20:14.747-07:00' description: '' direction: INGRESS disabled: false enableLogging: false id: '7326842601032055265' kind: compute#firewall logConfig: enable: false name: gke-ipv6-4-3d8e9c78-ipv6-all network: https://www.googleapis.com/compute/alpha/projects/my-project/global/networks/alphanet priority: 1000 selfLink: https://www.googleapis.com/compute/alpha/projects/my-project/global/firewalls/gke-ipv6-4-3d8e9c78-ipv6-all selfLinkWithId: https://www.googleapis.com/compute/alpha/projects/my-project/global/firewalls/7326842601032055265 sourceRanges: - 2600:1900:4120:fabf::/64 targetTags: - gke-ipv6-4-3d8e9c78-nodeהערך של
sourceRangesחייב להיות זהה לערך שלsubnetIpv6CidrBlock. הערך שלtargetTagsחייב להיות זהה לתגים בצומתי GKE. כדי לפתור את הבעיה, מעדכנים את הכלל של חומת האש עם פרטי הבלוקipAllocationPolicyשל האשכול.
המאמרים הבאים
למידע כללי על אבחון בעיות DNS ב-Kubernetes, קראו את המאמר ניפוי באגים של רזולוציית DNS.
אם לא מצאתם פתרון לבעיה במסמכי התיעוד, תוכלו לקבל עזרה נוספת במאמר קבלת תמיכה, כולל עצות בנושאים הבאים:
- לפתוח בקשת תמיכה באמצעות פנייה ל-Cloud Customer Care.
- לקבל תמיכה מהקהילה על ידי פרסום שאלות ב-StackOverflow ושימוש בתג
google-kubernetes-engineכדי לחפש בעיות דומות. אתם יכולים גם להצטרף לערוץ Slack של#kubernetes-engineכדי לקבל תמיכה מהקהילה. - דיווח על בעיות או שליחת בקשות להוספת תכונות באמצעות הכלי הציבורי למעקב אחר בעיות.