בדף הזה מפורטות בעיות מוכרות ב-GKE. הדף הזה מיועד לאדמינים ולארכיטקטים שמנהלים את מחזור החיים של תשתית הטכנולוגיה הבסיסית, ומגיבים להתראות ולדפים כשיעדי רמת השירות (SLO) לא מתקיימים או כשהאפליקציות נכשלות.
בדף הזה מפורטות בעיות מוכרות בכל הגרסאות הנתמכות ובשתי גרסאות המשנה שקודמות לגרסה המוקדמת ביותר בתמיכה מורחבת. אחרי שגרסה מגיעה לסוף התמיכה המורחבת, כל הבעיות ב-N-2 מוסרות. לדוגמה, כשגרסה 1.30 מגיעה לסוף תקופת התמיכה המורחבת, הבעיות הידועות שספציפיות לגרסאות 1.28 וגרסאות קודמות מוסרות.
אם אתם משתתפים ב-Google Developer Program, שמרו את הדף הזה כדי לקבל התראות כשמתפרסמים נתוני גרסה שקשורים לדף הזה. מידע נוסף זמין במאמר דפים שמורים.
כדי לסנן את הבעיות המוכרות לפי גרסת מוצר או קטגוריה, בוחרים את המסננים מהתפריטים הנפתחים הבאים.
בוחרים את גרסת GKE:
בוחרים את קטגוריית הבעיה:
אפשר גם לחפש את הבעיה:
| קטגוריה | הגרסאות שזוהו | גרסאות מתוקנות | הבעיה והפתרון העקיף |
|---|---|---|---|
| פעולה |
|
|
tpu-device-plugin Pods exit with OOMKilled on large TPU clusters
באשכולות גדולים של GKE TPU, כמו אשכולות עם יותר מ-1,000 צומתי TPU או עומסי עבודה בכמה פרוסות, יכול להיות שהקונטיינרים ב-DaemonSet של
אם UnexpectedAdmissionError: Allocate failed due to rpc error פתרון עקיף:
משדרגים את מישור הבקרה של אשכול GKE לגרסה 1.36.5-gke.1259000 ואילך, שמגדילה את מגבלות ברירת המחדל של הזיכרון למאגרי DaemonSet של |
| פעולה |
|
|
פודים נשארים במצב Pending כש-ComputeClass מובנה של Autopilot מוגדר כברירת המחדל ברמת האשכול
אם מגדירים ComputeClass מובנה של Autopilot (כמו
כשמישור הבקרה משודרג לגרסה 1.37.1-gke.2432000 ואילך, GKE מעדכן את ComputeClass פתרון עקיף: אפשר לבחור באחת מהאפשרויות הבאות:
|
| שדרוגים ועדכונים |
|
עומסי העבודה של Agent Sandbox נכשלים אחרי שדרוג האשכול
התוסף Agent Sandbox ( פתרון עקיף:
לפני שמשדרגים את מישור הבקרה של האשכול לגרסה 1.36.3-gke.1767000 או לגרסה חדשה יותר, צריך להעביר את המניפסטים ועומסי העבודה של Agent Sandbox מ- |
|
| פעולה |
|
|
בקשות HTTP POST לטוקנים משרת המטא-נתונים נכשלות עם השגיאה 400 Bad Request
עומסי עבודה שמשתמשים באיחוד זהויות של עומסי עבודה ל-GKE כדי לאמת את ממשקי ה-API של Google Cloud על ידי בקשה של טוקני גישה או אסימוני זהות של חשבון שירות משרת המטא-נתונים של GKE (כמו
הבעיה הזו מתרחשת כשאפליקציה, ספריית לקוח או API Gateway שולחים בקשת HTTP כדי לפתור את הבעיה, שדרגו לגרסה האחרונה עם התיקון בגרסה המשנית של כל ערוץ הפצה. פתרון עקיף:
כדי לפתור את הבעיה, צריך להגדיר את האפליקציה, את ספריית הלקוח או את API Gateway כך שישתמשו ב-method curl -H "Metadata-Flavor: Google" "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/token"
אם עומס העבודה משתמש ב-SDK או בשער של צד שלישי (כמו MuleSoft Flex Gateway, IBM App Connect או סקריפטים מותאמים אישית של HTTP) ששולח כברירת מחדל בקשות |
| שדרוגים ועדכונים |
|
TBD |
פודים שלא תזמנו ומכסות שנוצלו במהלך שדרוגים קלים בשני שלבים של מישור הבקרה.
במהלך שדרוגים של שתי גרסאות משניות למישורי בקרה באשכולות Autopilot שמשתמשים בפודים עם משך זמן מורחב, יכול להיות שמאגרי צמתים חדשים יוקצו באמצעות גרסת הצומת הקודמת. הכלי Cluster Autoscaler בודק את הצמתים החדשים שהוקצו מול הגרסה המשודרגת של מישור הבקרה, מזהה חוסר התאמה בגרסאות ומחיל את ה-taint ההתנהגות הזו מונעת תזמון של Pods ומפעילה לולאת התאמה אינסופית. במקום להגדיל את מאגר הצמתים הקיים, הקצאת צמתים אוטומטית יוצרת מאגר חדש של צומת יחיד בכל איטרציה של הגדלה, כדי להתאים לעומסי העבודה הממתינים. הלולאה הזו יוצרת מאות מאגרים נפרדים של צמתים ריקים, שבסופו של דבר יכולים למצות את המכסות של קבוצות מופעי המכונה המנוהלים באזור. פתרון עקיף: כדי לפתור את הבעיה של לולאת ההתאמה לעומס, צריך להשלים ידנית את השדרוג של מישור הבקרה באמצעות הפקודה הבאה: אפשר גם להחיל את ה-toleration הבא על עומסי העבודה המושפעים, כדי שאפשר יהיה לתזמן אותם בצמתים של הגרסה הקודמת: |
| פעולה | 1.37.0-gke.2941000 ואילך | 1.37.1-gke.1131000 |
צמתים שמתקינים אמצעי אחסון של NFS צוברים רשומות התקנה ומפסיקים ליצור קונטיינריםבצמתים שבהם פועלות הגרסאות המושפעות, טעינה של נפח NFS משאירה רשומות נוספות בטבלת הטעינה של הצומת. בנוסף, כש-Pod שמשתמש בנפח NFS מסתיים, ניסיונות הניתוק נכשלים, וגורמים ל- כשטבלת ה-mount מגיעה למגבלת הליבה, סביבת זמן הריצה של הקונטיינר לא יכולה יותר ליצור קונטיינרים בצומת הזה. הצומת מפסיק להריץ Pods חדשים, יכול להיות שהוא ידווח על סטטוס באירועי Pod וביומני MountVolume.SetUp failed for volume "VOLUME_NAME" : mount failed: exit status 1 mount: /etc: mount(2) system call failed: No space left on device הבעיה הזו משפיעה על מאגרי צמתים שמתקינים אמצעי אחסון של NFS באמצעות מנהל ההתקן של NFS בתוך העץ של Kubernetes. צמתים שלא משתמשים במנהל ההתקן של NFS בעץ כדי לטעון נפחי NFS לא מושפעים. פתרון עקיף: כדי לשחזר צומת שהושפע, צריך להפעיל אותו מחדש או ליצור אותו מחדש. רשומות הטעינה הנוספות קיימות רק במצב ההפעלה של הצומת, ולכן הן נמחקות כשהצומת מופעל מחדש. אפשר להסיר Pods שנתקעו במצב kubectl delete pod POD_NAME --namespace NAMESPACE --force --grace-period=0 כדי למנוע את הישנות הבעיה באשכולות Standard, שדרגו לאחור לגרסה 1.36 את מאגרי הצמתים שבהם מותקנים אמצעי אחסון של NFS. מגדירים החרגה מתחזוקה כדי ש-GKE לא ישדרג באופן אוטומטי את מאגרי הצמתים בחזרה לגרסה המושפעת. אם באשכול Autopilot פועלת גרסה שמושפעת מהבעיה, צריך להשתמש באחת מהאפשרויות הבאות:
|
| שדרוגים | 1.34.9-gke.1065000 ואילך, 1.35.6-gke.1049000 ואילך וכל גרסאות התיקונים של 1.36 | 1.34.10-gke.1328000 ואילך, 1.35.8-gke.1026000 ואילך, 1.36.4-gke.1058000 ואילך (עדיין אין תיקון לגרסה 1.37) |
כשלים בעומסי עבודה של GPU מסוג A4X Max (GB300)יצירה או שדרוג של מאגרי צמתים של A4X Max ב-GKE ( הפתרון: לשדרג כל אשכול ומאגר צמתים שהושפעו לגרסה מתוקנת. GKE מונע יצירה של מאגרי צמתים מסוג A4X Max עם הגרסאות המושפעות, ולא ישדרג אוטומטית את מאגרי הצמתים לגרסאות המושפעות. GKE לא מונע שדרוגים ידניים לגרסאות המושפעות. עם זאת, כדי להימנע מהכשלים, מומלץ לא לשדרג לגרסאות שמושפעות מהבעיה. פתרון עקיף: אם אתם לא יכולים לשדרג, מחקו את כל מאגרי הצמתים של A4X Max שפועלים בגרסאות המושפעות, וצרו מחדש את מאגרי הצמתים באמצעות גרסה קודמת שלא מושפעת. שימו לב: מכיוון שצריך להזמין מראש את הקיבולת המקסימלית של A4X, לא תאבדו קיבולת אם תמחקו את מאגרי הצמתים. |
| פעולה | 1.33 גרסאות קודמות ל-1.33.5-gke.2469000, 1.34 גרסאות קודמות ל-1.34.1-gke.2037001 | 1.33.5-gke.2469000 ואילך, 1.34.1-gke.2037001 ואילך, 1.35 ואילך |
צומתי GPU או TPU תקועים עם פגמים מסוג impending-node-termination אחרי תחזוקת מארחבאשכולות GKE עם צומתי מאיצים (GPU או TPU) שפועלות בהם גרסאות מושפעות, הצמתים עלולים להיתקע עם הכתמים פתרון עקיף: כדי לפתור את הבעיה, צריך להסיר באופן ידני את התוויות של התחזוקה הפעילה שמנוהלת על ידי GKE ואת ה-taints מהצמתים המושפעים. אם רק תסירו את הכתמים, בקר התחזוקה של GKE יחיל אותם מחדש באופן אוטומטי. כדי לנקות את התוויות והכתמים, מריצים את הפקודות הבאות: kubectl label nodes NODE_NAME cloud.google.com/active-node-maintenance- kubectl label nodes NODE_NAME cloud.google.com/scheduled-maintenance-time- kubectl label nodes NODE_NAME cloud.google.com/scheduled-maintenance-time-latest- kubectl taint nodes NODE_NAME cloud.google.com/impending-node-termination- kubectl taint nodes NODE_NAME cloud.google.com/maintenance-window-started- מחליפים את |
| פעולה |
|
1.34.1-gke.1829001 ואילך |
כשלים בקבלת Pod לעומסי עבודה של TPU v7 בגלל דיווח על מספר שגוי של צ'יפים.GKE מפרסם באופן שגוי שמונה שבבי TPU שניתנים להקצאה למאיצי TPU v7 (tpu7x) עם טופולוגיה של 2x2x1, שמכילה פיזית רק ארבעה שבבים. חוסר ההתאמה הזה בדיווח מונע תזמון של Pod לעומסי עבודה ב-TPU v7. גרסאות קודמות לא מטפלות בצורה נכונה בארכיטקטורת הצ'יפלט הכפול של TPU v7, וכתוצאה מכך יש כשלים בקבלת Pod. בהתאם למשאבי ה-TPU שביקשתם, יכולות להופיע השגיאות הבאות:
פתרון עקיף: כדי לפתור את הבעיה, צריך לשדרג את אשכול GKE לגרסה 1.34.1-gke.1829001 ואילך. |
| פעולה | 1.35.3-gke.1234000 ואילך | TBD |
לקוח Lustre לא משתמש בכרטיסי רשת משניים בצמתים עם כמה כרטיסי רשתבצומתי GKE עם כמה כרטיסי רשת (NIC), מנהל ההתקן של Managed Lustre CSI מופעל כברירת מחדל כדי להשתמש בכל כרטיסי הרשת הזמינים לצבירת רוחב פס על ידי פיזור תנועת האחסון של TCP בין ממשקי הרשת. עם זאת, בגלל בעיה ידועה, יכול להיות שלקוחות Lustre מגרסה פתרון עקיף: אם עומסי העבודה שלכם דורשים צבירת רוחב פס של כמה כרטיסי רשת (multi-NIC) בשביל Managed Lustre, שדרגו לאחור את מאגרי הצמתים לגרסת GKE שקודמת ל-1.35.3-gke.1234000, כמו 1.35.2-gke.1842000. |
| פעולה | 1.35 ואילך | TBD |
זמן קצוב לתפוגה של החיבור או סירוב לחיבור של תהליכים שהופנו לשרת המטא-נתונים של GKEב-GKE בגרסה 1.35 ואילך, בעומסי עבודה שמשתמשים ב-Workload Identity כדי לבצע אימות מול Google Cloud APIs, יכול להיות שיהיו זמני קצובים לתפוגה זמניים של קישוריות או חיבורים שנדחו לשרת המטא-נתונים של GKE מיד אחרי הפעלת הצומת. פתרון עקיף: במאמר פתרון בעיות של שגיאות זמן קצוב לתפוגה בהפעלת Pod מפורטות המלצות ודרכים לעקיפת הבעיה. |
| פעולה | 1.33.8-gke.1026000 ואילך | 1.35.1 ואילך |
ה-shim של gVisor לא מצליח לנקות, ומתעד את השגיאה
|
| פעולה | 1.35.0-gke.2232000 ואילך | 1.35.3-gke.1.35.3-gke.1290000 ואילך |
נפחים דינמיים חוזרים לסוג הדיסק שמוגדר כברירת מחדליכול להיות שעומסי עבודה שמשתמשים בנפחים דינמיים ב-GKE בגרסה 1.35.0-gke.2232000 ואילך לא יצליחו לתזמן או לצרף. הבעיה הזו יכולה גם לגרום להקצאת נפחים באמצעות ה- הסיבה לכך היא ששרת הצומת של PDCSI לא מאכלס את האובייקט פתרון עקיף: צריך לשדרג לגרסה 1.35.3-gke.1290000 ואילך. |
| שדרוגים ועדכונים |
|
|
בעיות בהפעלת Pod במהלך שדרוגים ל-GKE 1.35 באשכולות GKE Dataplane V2אשכולות שמשדרגים את מישור הבקרה לגרסה 1.35.0-gke.2232000 ואילך של GKE, מהגרסאות הבאות:
anetd DaemonSet.
עומסי עבודה חדשים לא יופעלו במהלך ההשקה של
זה קורה כי GKE משתמש ב-Operator identity-management-mode, שמחייב שלכל הסוכנים ול-Operator תהיה תצוגה מסונכרנת של תוויות שרלוונטיות לזהות. החל מגרסה 1.35.0-gke.2232000 של GKE, תוויות פתרון עקיף:
|
| שדרוגים ועדכונים |
|
|
עיכובים בתזמון Pod בצמתים חדשים כשמדיניות הרשת ב-Kubernetes של Calico מופעלת
באשכולות GKE שבהם מופעלת מדיניות רשת ב-Kubernetes של Calico, רגרסיה בגרסאות המושפעות עלולה לגרום לעיכובים משמעותיים בתזמון Pod בצמתים חדשים או בצמתים שנוצרו מחדש.
העיכובים האלה יכולים לגרום לצמתים להישאר במצב הבעיה נגרמת כי הסקריפט לטעינה בזמן ההפעלה של Calico CNI לא מעצב נכון את כתובת ה-URL של שרת ה-API של Kubernetes לכתובות IPv4, ומוסיף להן סוגריים מרובעים ([]). הגישה הזו מובילה לשגיאה בניתוח של כתובת ה-URL כשיוצרים ארגזי חול חדשים של Pod, שמופיעה ביומני `kubelet`:
פתרון עקיף: גרסת הרכיב של Calico נקבעת לפי גרסת מישור הבקרה של האשכול. כדי לפתור את הבעיה, שדרגו את מישור הבקרה של האשכול לאחת מהגרסאות המתוקנות. אחרי שמשדרגים את מישור הבקרה, צריך ליצור מחדש את הצמתים במאגרי הצמתים כדי לוודא שהם משתמשים בפורמט הנכון של כתובת ה-URL של שרת ה-API של Kubernetes. כדי לעשות את זה, אתם יכולים לשדרג את מאגר הצמתים לאותה גרסה או לגרסה חדשה יותר, או ליצור מחדש באופן ידני את מאגרי הצמתים. |
| ביצועים |
|
|
ירידה בביצועים של רשתות למטרות כלליות בסוגי מכונות עם GPU מסדרת A ו-G4באשכולות GKE עם צומתי GPU מסדרת A ו-G4, יש ירידה בביצועים של רישות למטרות כלליות ב-GKE מגרסה 1.32.8-gke.1134000 ואילך ל-GKE מגרסה 1.32, וב-GKE מגרסה 1.33.3-gke.1392000 ואילך. הירידה בביצועים ברשתות לשימוש כללי משפיעה על סוגי מכונות GPU, כולל סדרות המכונות A3, A4, A4X ו-G4. חשוב לדעת שהשינוי לא משפיע על GPUDirect-TCPXO ב-A3 Mega ועל GPUDirect-RDMA ב-A3 Ultra, A4 ו-A4X. הסיבה לכך היא שהסקריפט ברמת הצומת ( פתרון עקיף: משדרגים כל מאגר צמתים שהושפע לגרסה מתוקנת. |
| ביצועים |
|
|
ירידה בביצועים של GPUDirect-TCPX ב-A3 Highבאשכולות GKE עם צומתי A3 High ( הסיבה לכך היא שהסקריפט ברמת הצומת ( פתרון עקיף: במאגרי צמתים של GKE בגרסה 1.32, שדרגו את גרסאות מאגר הצמתים של GKE לגרסה 1.32.11-gke.1075000 ואילך. במאגרי צמתים של GKE מגרסה 1.33 ואילך, צריך לשדרג את גרסאות מאגרי הצמתים של GKE לגרסה 1.33.5-gke.2392000 ואילך. למאגרי צמתים של GKE 1.34, קראו את המאמר GPUDirect-TCPX לא זמין עם A3 High ל-GKE בגרסה 1.34 ואילך. |
| שדרוגים | 1.35 |
1.35.0-gke.2232000 ואילך. |
שכפול זהויות של Cilium באשכולות של GKE Dataplane V2באשכולות GKE שפועלים בגרסה 1.35 עם GKE Dataplane V2, יכול להיות שתהיה עלייה במספר המשאבים המותאמים אישית של גם באשכולות אזוריים וגם באשכולות של אזורים, תזמון של עומס עבודה חדש יכול לגרום לשכפול זמני של זהות Cilium. הכפילות הזו מתרחשת כי Pods מקבלים זהות אחת בזמן היצירה על סמך תוויות ראשוניות, וזהות אחרת אחרי שמוסיפים תוויות טופולוגיה כשה-Pod מתוזמן לצומת. באשכולות אזוריים, מספר הזהויות עשוי לגדול גם בפקטור שפרופורציונלי למספר האזורים שהאשכול משתרע עליהם. השפעה: אם המספר הכולל של הזהויות חורג מ-65,535, יכול להיות שלא תצליחו לתזמן עומסי עבודה חדשים. פתרון עקיף: כדי להגביל את המספר הכולל של הזהויות, אל תוסיפו לפודים תוויות עם מספר גדול של ערכים ייחודיים. למידע נוסף, קראו את המאמרים הבאים של Cilium: צריך לבצע שדרוגים ידניים מגרסאות 1.34.3-gke.1208000 ואילך. אם תתחילו את השדרוג מגרסה שקודמת ל-1.34.3-gke.1208000, יכול להיות שתיתקלו בבעיות זמניות בתזמון Pod במהלך תהליך השדרוג. |
| שדרוגים |
|
צריך גם להשתמש בגרסה 3.1.9 ואילך של תוכנת ההתקנה של GPUDirect-TCPX ובגרסה 2.0.12 ואילך של ה-sidecar. גרסאות ההתקנה וה-sidecar ממופות ביחס של אחד לאחד וצריכות להתאים. לדוגמה, גרסה 3.1.12 של תוכנת ההתקנה של GPUDirect-TCPX תואמת לגרסה 2.0.15 של ה-sidecar. למידע נוסף על גרסאות של מנהל ההתקנה ו-sidecar, קראו את נתוני הגרסה של GPUDirect-TCPX. |
GPUDirect-TCPX לא זמין עם A3 High בגרסאות ספציפיות של GKEאשכולות GKE עם צומתי A3 High ( סוגי מכונות אחרים של GPU מסוג A3 High ( הפתרון: כדי לפתור את הבעיה, צריך לשדרג לגרסאות התיקון של GKE. לפרטים על הגדרה ושדרוג של מאגרי צמתים באמצעות GPUDirect-TCPX, קראו את המאמרים הגדלת רוחב הפס של רשת ה-GPU באשכולות Standard או הגדלת רוחב הפס של רשת ה-GPU באשכולות Autopilot. כשמריצים בדיקות NCCL בגרסאות קבועות, יכול להיות שיופיעו האזהרות הבאות, שלא משפיעות על הביצועים או על הפונקציונליות:
|
| פעולה | כל הגרסאות שלפני 1.34.0-gke.2285000 | 1.34.0-gke.2285000 ואילך |
קיבולת המכונות המינימלית עודכנההקיבולת המינימלית של מכונות Managed Lustre עודכנה ל-9,000GiB. באשכולות שפועלים בגרסאות שקודמות ל-1.34.0-gke.2285000, אי אפשר ליצור מכונות עם הקיבולת המינימלית הזו באמצעות מנהל ההתקן של Managed Lustre CSI. פתרון עקיף: כדי ליצור מכונות של Managed Lustre עם קיבולת מינימלית של 9,000GiB, צריך לשדרג את גרסת האשכול ל-1.34.0-gke.2285000 ואילך. |
| פעולה | כל הגרסאות | TBD |
ממשק המשתמש של מסוףGoogle Cloud לא ניתן לעריכה במהלך תיקון אוטומטי של צומתכשצומת GKE עובר תיקון אוטומטי, אי אפשר לערוך את מאגר הצמתים דרך מסוף Google Cloud בגלל פעולה שמתבצעת. פתרון עקיף: עדיין אפשר לערוך את ההגדרות של מאגר הצמתים באמצעות פקודות של ה-CLI של gcloud. |
| פעולה | גרסאות 1.33 לפני 1.33.4-gke.1036000 | 1.33.4-gke.1036000 ואילך |
רמת ביצועים שגויה למכונות Lustre שהוקצו באופן דינמיכשמקצים באופן דינמי מכונה של Lustre, יצירת המכונה נכשלת עם השגיאה פתרון עקיף: משדרגים את אשכול GKE לגרסה 1.33.4-gke.1036000 ואילך. אם אתם משתמשים בערוץ היציב, יכול להיות שגרסה חדשה יותר עדיין לא זמינה. במקרה כזה, אתם יכולים לבחור באופן ידני גרסה מהערוץ הרגיל או המהיר שכוללת את התיקון. |
| פעולה |
|
1.33.3-gke.1266000 ואילך |
שגיאת קלט/פלט כשמשנים שם של קבצים או מעבירים אותם באמצעות מנהל התקן ה-CSI של Cloud Storage FUSEכשמשתמשים בגרסה מושפעת של מנהל התקן ה-CSI של Cloud Storage FUSE, יכול להיות ששינוי השם או ההעברה של קבצים בקטגוריות של Cloud Storage ייכשלו עם שגיאת קלט/פלט. פתרון עקיף: מוסיפים באופן זמני הגדרה ספציפית של קובץ תמונת Sidecar למניפסט של ה-Pod. בקטע # Add the following block to use the fixed sidecar image - name: gke-gcsfuse-sidecar image: gcr.io/gke-release/gcs-fuse-csi-driver-sidecar-mounter:v1.8.9-gke.2 מידע נוסף זמין במניפסט של Pod בקטע הגדרת קובץ אימג' פרטי לקונטיינר המשני (sidecar). אחרי שמשדרגים את האשכול לגרסה קבועה של GKE או לגרסה מאוחרת יותר, צריך להסיר את כל הבלוק |
| רישום ביומן ומעקב | כל הגרסאות | TBD |
מרוץ תהליכים ב-DaemonSets של
|
| שדרוגים | 1.33 | 1.33.2-gke.1043000 |
מגבלה נמוכה יותר של קבצים פתוחים ב-containerd 2.0במאגרי צמתים שפועלת בהם גרסה 1.33 של GKE, שמשתמשת ב-containerd 2.0, מגבלת ברירת המחדל הגמישה לקבצים פתוחים ( זהו שינוי ב-containerd עצמו (ראו containerd PR #8924) שבו עומסי עבודה שמצפים למגבלת ברירת מחדל גבוהה יותר (לדוגמה, כאלה שמסתמכים באופן משתמע על ברירת המחדל הגבוהה יותר הקודמת) עלולים להיכשל, למשל שגיאות הפתרון: שדרוג מגרסת תיקון קודמת של 1.33 לגרסה 1.33.2-gke.1043000 ואילך. פתרון עקיף: כדי להגדיל את מכסת הקבצים הפתוחים לעומסי העבודה, אפשר להשתמש באחת מהשיטות הבאות:
|
| שדרוגים | 1.31.5-gke.1169000, 1.32.1-gke.1376000 | 1.31.7-gke.1164000, 1.32.3-gke.1512000 |
CRD status.storedVersions לא חוקי ל-CRD מנוהליםיכול להיות שבחלק מה-CRD שמנוהלים על ידי GKE יש שדה הבעיה הזו משפיעה על אשכולות שעונים על שני התנאים הבאים:
פתרון עקיף: הפתרון המומלץ הוא לדחות את השדרוגים של האשכולות עד שהבעיה תיפתר. לחלופין, אם אתם יודעים שהאשכול מכיל גרסאות לא נתמכות של אובייקטים מסוג CRD, אתם יכולים להוסיף את הגרסאות האלה לשדה |
| תפעול, רישום ביומן ומעקב | 1.32.2-gke.1652000, 1.31.6-gke.1221000, 1.30.10-gke.1227000 |
|
מדדים חסרים או שהמידרוג האוטומטי של עומס העבודה לא פועליכול להיות שיהיו פערים בנתוני המדדים בגרסאות המושפעות אחרי שגודל האשכול יגדל ביותר מחמישה צמתים. הבעיה הזו יכולה להשפיע גם על פעולות של התאמה אוטומטית לעומס. הבעיה משפיעה רק על אשכולות ששודרגו לגרסאות המושפעות. אשכולות חדשים שנוצרו אמורים לפעול כצפוי. פתרון עקיף: אם הבעיה משפיעה עליכם, אתם יכולים לשדרג לאחור לגרסה קודמת עם תיקון או לשדרג לגרסאות החדשות יותר עם התיקון. |
| פעולה |
מגבלות הגודל והחיבור של Google Cloud Hyperdiskבדרך כלל, Pod שלא ניתן לתזמן בגלל מגבלות של צירוף נפח של צומת מפעיל הקצאת משאבים אוטומטית של צומת חדש. כשעומסי עבודה שמשתמשים בנפח Hyperdisk מתוזמנים לצומת שמריץ VM מסוג C3 או C3D, לא מתבצעת הקצאת צמתים אוטומטית וה-Pod מתוזמן לצומת שכבר מלא. עומס העבודה מתוזמן לצומת למרות שאין חיבור זמין לדיסק. גם עומס העבודה לא מתחיל בגלל שגיאה כמו זו: AttachVolume.Attach failed for volume "[VOLUME NAME]" : rpc error: code = InvalidArgument desc = Failed to Attach: failed when waiting for zonal op: rpc error: code = InvalidArgument desc = operation operation-[OPERATION NUMBERS] failed (UNSUPPORTED_OPERATION): Maximum hyperdisk-balanced disks count should be less than or equal to [16], Requested : [17] הבעיה קיימת בכל מוצרי Hyperdisk במכונות C3 ו-C3D, כי מנהל ההתקן של Compute Engine Persistent Disk CSI מדווח למתזמן של Kubernetes על מגבלת החיבור של 127 דיסקים מתמידים, במקום על מגבלת החיבור הנמוכה יותר של Hyperdisk לכל סוג. מגבלות הצירוף של Hyperdisk משתנות בהתאם למספר ה-vCPU של ה-VM ולמוצר Hyperdisk. מידע נוסף זמין במאמר מגבלות הביצועים של Hyperdisk. פתרון עקיף: אפשר להשתמש באחד מהפתרונות הבאים:
|
||
| פעולה | 1.32.3-gke.1927000, 1.32.3-gke.1785000, 1.32.3-gke.1717000, 1.32.3-gke.1440000, 1.32.3-gke.1170000, 1.32.3-gke.1250000, 1.32.3-gke.1671000, 1.32.3-gke.1596000, 1.32.3-gke.1298000 |
gke-metadata-server is OOMKilled on TPU/GPU nodesבצומתי TPU של GKE (לדוגמה פתרון עקיף: אם אתם רואים אירועים מסוג |
|
| פעולה |
|
|
שינוי גודל של נפח אחסון עלול להיתקע בגלל סטטוס NodePendingResize תלוי ב-PVC.באשכולות בגרסה 1.32 שיש בהם צמתים בגרסה 1.31 או בגרסאות קודמות, לא תתבצע בהצלחה עדכון של הסטטוס PersistentVolumeClaim במהלך שינוי הגודל. הסטטוס השגוי הזה מונע את תחילת הפעולות הבאות של שינוי הגודל, ולמעשה מונע שינויי גודל נוספים. ל-PVC במצב הזה יש שדה אם נוצר PVC כשהאשכול היה בגרסה המושפעת, יכול להיות שהבעיה תימשך גם אחרי שדרוג האשכול לגרסה מתוקנת ידועה. בתרחיש הזה, צריך לתקן את ה-PVC כדי להסיר את השדה פתרון עקיף: אפשר לתקן PVCs שנתקעו בגלל סטטוס תלוי כדי להסיר את הסטטוס הזה. כדי להסיר את הסטטוס "תלוי", אפשר להשתמש בפקודת תיקון כמו זו: kubectl patch pvc $PVC_NAME --subresource='status' --type='merge' -p '{"status":{"allocatedResourceStatuses":null}}'kubectl patch pvc $PVC_NAME --subresource='status' --type='merge' -p '{"status":{"allocatedResources":null}}' |
| פעולה |
|
|
יכול להיות שמנהל ההתקן של PDCSI יתעד יותר מדי נתוניםאשכולות GKE בגרסאות ספציפיות של 1.32 עלולים להפיק הודעות יומן מוגזמות ממנהל ההתקן של PDCSI. הרישום העודף הזה ביומן יצרוך את מכסת ה-API לכתיבה ב-Cloud Logging. פתרון עקיף: כדי לצמצם את רישום הנתונים המיותר, אפשר להוסיף מסנן החרגה. כדי להחריג את הודעות היומן מהטמעה ב-Cloud Logging, משתמשים בשאילתה הבאה:
resource.type="k8s_container"
resource.labels.container_name="gce-pd-driver"
(sourceLocation.file="cache.go" OR "Cannot process volume group")
|
| תפעול |
|
|
פודים שמנסים לטעון אמצעי אחסון קבועים של NFS בצומתי COS שהייתה להם בעבר טעינה לקריאה בלבד (RO), ייטענו רק במצב ROבגרסה 1.27 של GKE ואילך, נפחי NFS שמשתמשים במנהל התקן ה-CSI המובנה של Kubernetes יכולים לטעון נפחים קבועים במצב RO רק אחרי טעינת RO קודמת באותו צומת. פתרון עקיף: שדרוג לאחור של מאגרי הצמתים לגרסה שקודמת לגרסאות המושפעות |
| תפעול |
|
פודים שמנסים לטעון אמצעי אחסון קבועים של NFS בצומתי Ubuntu לא יוכלו לפעול.ב-GKE מגרסה 1.32 ואילך, נפחי NFS שמשתמשים במנהל התקן CSI מסוג in-tree של Kubernetes לא יוכלו לטעון נפחים קבועים בצמתים של Ubuntu. במקרים כאלה, יכול להיות שיופיעו הודעות השגיאה הבאות: "MountVolume.SetUp failed for volume 'nfs-storage' : mount failed: exit status 1" Output: Mount failed: mount failed: exit status 127 "Output: chroot: failed to run command 'mount': No such file or directory failed to run command mount on Ubuntu nodes" בנוסף להודעות השגיאה האלה, לא תהיה אפשרות להעלות Pods שמשתמשים בנפחים האלה. פתרון עקיף: שנמוך של מאגרי הצמתים לגרסה 1.31. |
|
| פעולה | >= 1.28.15-gke.1436000, < 1.28.15-gke.1668000, >= 1.29.12-gke.1040000, < 1.29.13-gke.1028000, >= 1.30.8-gke.1053000, < 1.30.8-gke.1287000, >= 1.31.4-gke.1057000, < 1.31.6-gke.1020000, >= 1.32.0-gke.1281000, < 1.32.1-gke.1369000 |
|
יכול להיות שפודים שמשתמשים בקריאות מערכת שקשורות ל-io_uring ייתקעו במצב Terminating (בסיום)
פודים שמשתמשים בקריאות מערכת שקשורות ל-io_uring עשויים להיכנס למצב D (שינה של הדיסק), שנקרא גם TASK_UNINTERRUPTIBLE, בגלל באג בליבת Linux. אי אפשר להעיר תהליכים במצב D באמצעות אותות, כולל
כשהבעיה הידועה הזו משפיעה על Pod, יכול להיות שהקונטיינרים שלו לא יסיימו את הפעולה שלהם בצורה תקינה. ביומני containerd, יכול להיות שתראו הודעות חוזרות כמו:
או
התסמינים האלה מצביעים על תהליכים בתוך הקונטיינר שנתקעו במצב שינה שלא ניתן להפריע לו (מצב D), מה שמונע את הסיום התקין של ה-Pod.
עומסי עבודה שמשתמשים ב-io_uring באופן ישיר, או שמשתמשים ב-io_uring באופן עקיף דרך סביבת זמן ריצה של שפה כמו NodeJS, עשויים להיות מושפעים מהבעיה הידועה הזו. בעומסי העבודה המושפעים יש תהליך במצב D (שינה של הדיסק) בקובץ פתרון עקיף: לשדרג את צומתי האשכול לגרסה המתוקנת או לגרסה חדשה יותר. |
| פעולה | 1.28, 1.29, 1.30, 1.31 |
|
עומסי עבודה שמשתמשים בסטרימינג של תמונות נכשלים עם שגיאות אימותבאג בתכונה "סטרימינג של קובצי אימג'" עלול לגרום לכשל בעומסי העבודה, אם מתקיים סט של תנאים ספציפיים בזמן שהקונטיינר קורא קבצים. יכול להיות שהודעות שגיאה שקשורות לכשלים באימות יופיעו ביומן של gcfsd.
כדי לבדוק אם הבעיה משפיעה עליכם, חפשו ביומנים באמצעות שאילתת החיפוש הזו:
השגיאות האלה מצביעות על כך שהצמתים מושפעים. אם הבעיה משפיעה עליכם, אתם יכולים לשדרג את מאגרי הצמתים לגרסה מתוקנת של GKE. |
| פעולה |
|
|
שיעורי פינוי הפודים עלו בגרסאות 1.30 ו-1.31 של GKE
בחלק מהגרסאות של GKE 1.30 ו-GKE 1.31 שמשתמשות ב-COS 113 וב-COS 117, בהתאמה, יש ליבות (kernels) שנבנו עם האפשרות
אפשרות ההגדרה יכול להיות שלא תמיד תראו שיעור פינוי פודים חריג, כי הבעיה הזו תלויה בדפוס השימוש בזיכרון של עומס העבודה. יש סיכון גבוה יותר שה-kubelet יפנה Pods של עומסי עבודה שלא הוגדרה להם מגבלת זיכרון בשדה המשאבים. הסיבה לכך היא שעומסי העבודה עשויים לבקש יותר זיכרון ממה ש-kubelet מדווח כזמין. אם אתם רואים שימוש גבוה יותר בזיכרון של אפליקציה אחרי שדרוג לגרסאות GKE שצוינו בלי שינויים אחרים, יכול להיות שאתם מושפעים מאפשרות הליבה.
כדי לבדוק אם יש שיעורים חריגים של פינוי Pod, נתחו את המדדים הבאים באמצעות Metrics Explorer:
אתם יכולים להשתמש בשאילתות הבאות ב-PromQL. מחליפים את הערכים של
max by (pod_name)(max_over_time(kubernetes_io:container_memory_used_bytes{monitored_resource="k8s_container",memory_type="non-evictable",cluster_name="REPLACE_cluster_name",namespace_name="REPLACE_namespace",metadata_system_top_level_controller_type="REPLACE_controller_type",metadata_system_top_level_controller_name="REPLACE_controller_name"}[${__interval}]))
sum by (pod_name)(avg_over_time(kubernetes_io:container_memory_request_bytes{monitored_resource="k8s_container",cluster_name="REPLACE_cluster_name",namespace_name="REPLACE_namespace",metadata_system_top_level_controller_type="REPLACE_controller_type",metadata_system_top_level_controller_name="REPLACE_controller_name"}[${__interval}]))
אם אתם רואים עליות חדות חריגות בשימוש בזיכרון שחורגות מהזיכרון המבוקש, יכול להיות שעומס העבודה נדחה לעיתים קרובות יותר. דרך לעקיפת הבעיהאם אתם לא יכולים לשדרג לגרסאות המתוקנות ואתם פועלים בסביבת GKE שבה אפשר לפרוס Pods עם הרשאות, אתם יכולים להשבית את האפשרות Multi-Gen LRU באמצעות DaemonSet.
אחרי ש-DaemonSet פועל בכל מאגרי הצמתים שנבחרו, השינוי נכנס לתוקף באופן מיידי וחישוב השימוש בזיכרון של kubelet חוזר למצב רגיל. |
| פעולה | 1.28, 1.29, 1.30, 1.31 |
|
פודים שנתקעו בסטטוס Terminatingבאג בסביבת זמן הריצה של הקונטיינר (containerd) עלול לגרום לפודים ולקונטיינרים להיתקע בסטטוס Terminating, עם שגיאות שדומות לשגיאות הבאות: OCI runtime exec failed: exec failed: cannot exec in a stopped container: unknown
אם הבעיה משפיעה עליכם, אתם יכולים לשדרג את הצמתים לגרסת GKE עם גרסה מתוקנת של containerd. |
| פעולה |
|
|
העברת התמונות נכשלת בגלל קישורים סמלייםבאג בתכונה "סטרימינג של קובצי אימג'" עלול לגרום לכך שהקונטיינרים לא יופעלו. יכול להיות שקונטיינרים שפועלים בצומת עם סטרימינג של קובצי אימג' שמופעל בגרסאות ספציפיות של GKE לא ייווצרו, ותופיע השגיאה הבאה: "CreateContainer in sandbox from runtime service failed" err="rpc error: code = Unknown desc = failed to create containerd container: failed to mount [PATH]: too many levels of symbolic links"
פתרון עקיף: כדי לפתור את הבעיה, צריך לשדרג את מאגרי הצמתים לגרסה מתוקנת (1.35.6-gke.1005000 ואילך, או 1.36.0-gke.2459000 ואילך). אם אתם לא יכולים לשדרג, אתם יכולים לבדוק אם יש שכבות ריקות או שכבות כפולות. אם אתם לא מצליחים להסיר שכבות ריקות או שכבות כפולות, השביתו את הסטרימינג של התמונות. |
| פעולה | 1.27,1.28,1.29 |
|
העברת התמונות נכשלה בגלל קבצים חסריםבאג בתכונה "סטרימינג של תמונות" עלול לגרום לכך שהקונטיינרים ייכשלו בגלל קובץ או קבצים חסרים. יכול להיות שקונטיינרים שפועלים בצומת עם סטרימינג של תמונות שמופעל בגרסאות הבאות לא יתחילו לפעול, או שיפעלו עם שגיאות שמודיעות שקבצים מסוימים לא קיימים. הנה כמה דוגמאות לשגיאות כאלה:
אם הבעיה הזו משפיעה עליכם, אתם יכולים להשבית את הסטרימינג של קובצי אימג'. |
| רשתות,שדרוגים ועדכונים | 1.28 |
שגיאה בהגדרת ה-TLS של השערזיהינו בעיה בהגדרת TLS לשערים באשכולות שבהם פועלת גרסת GKE 1.28.4-gke.1083000. הדבר משפיע על הגדרות TLS שמשתמשות ב-SSLCertificate או ב-CertificateMap. אם משדרגים אשכול עם שערים קיימים, העדכונים שבוצעו בשער ייכשלו. בשערי כניסה חדשים, מאזני העומסים לא יוקצו. הבעיה הזו תתוקן בגרסת תיקון עתידית של GKE 1.28. |
|
| שדרוגים ועדכונים | 1.27 | 1.27.8 ואילך |
בעיה בפלאגין של מכשיר GPU
באשכולות שפועלים בהם מעבדי GPU ושודרגו מגרסה 1.26 לגרסת תיקון 1.27 שקודמת ל-1.27.8, יכולות להיות בעיות בפלאגינים של מכשירי GPU בצמתים (
|
| פעולה | 1.27,1.28 |
|
ההתאמה האוטומטית לעומס (autoscaling) של כל עומסי העבודה נפסקת
יכול להיות שהתכונות HorizontalPodAutoscaler (HPA) ו-VerticalPodAutoscaler (VPA) יפסיקו את ההתאמה האוטומטית לעומס של כל עומסי העבודה באשכול, אם הוא מכיל אובייקטים של פתרון עקיף:
כדי לתקן אובייקטים של
למידע נוסף על הגדרת אובייקטים של |
| פעולה | 1.28,1.29 |
|
פריסת זיהוי איומים בקונטיינר נכשלהיכול להיות שהפריסה של זיהוי איומים בקונטיינר תיכשל באשכולות Autopilot שפועלות בהם גרסאות GKE הבאות:
|
| רשתות, שדרוגים | 1.27, 1.28, 1.29, 1.30 |
|
בעיות קישוריות של פודים ב-
|
| Networking | 1.31, 1.32 |
|
תנועת UDP פגומה בין Pods שפועלים באותו צומתבאשכולות שבהם מופעלת הרשאות גישה בתוך הצומת, יכול להיות שתנועת ה-UDP בין Pods שפועלים באותו צומת תהיה מקוטעת. הבעיה מתרחשת כשמשדרגים את הצומת של אשכול GKE לאחת מהגרסאות הבאות של GKE, או כשיוצרים אותו באחת מהגרסאות האלה:
הנתיב המושפע הוא תנועת UDP בין Pod ל-Pod באותו צומת דרך Hostport או Service. פתרון משדרגים את האשכול לאחת מהגרסאות המתוקנות הבאות:
|
| פעולה | 1.29,1.30,1.31 |
|
חוסר תאימות בין Ray Operator לבין הצפנת מסד הנתונים של Cloud KMSחלק מהגרסאות של Ray Operator לא תואמות להצפנת מסד הנתונים של Cloud KMS. פתרונות עקיפים: לשדרג את מישור הבקרה של האשכול לגרסה עם התיקון או לגרסה חדשה יותר. |
| שדרוגים ועדכונים | 1.30, 1.31 |
|
פוד של GPU Maintenance Handler תקוע במצב CrashLoopBackOffבבעיה הזו, הפודים של gpu-maintenance-handler תקועים במצב CrashLoopBackOff בצמתים המתאימים שלהם. המצב הזה מונע את החלת התווית `upcoming maintenance` על צומתי GKE, מה שיכול להשפיע על תהליכי ניקוז הצמתים ופינוי ה-Pods של עומסי העבודה.
"Node upcoming maintenance label not applied due to error: Node "gke-yyy-yyy" is invalid: metadata.labels: Invalid value: "-62135596800": a valid label must be an empty string or consist of alphanumeric characters, '-','' or '.', and must start and end with an alphanumeric character (e.g.'MyValue', or 'my_value', or '12345', regex used for validation is '(([A-Za-z0-9][-A-Za-z0-9.]*)?[A-Za-z0-9])?')"
אם הבעיה הזו משפיעה עליכם, אתם יכולים לשדרג את מישור הבקרה לגרסת GKE שכוללת את התיקון. |
| פעולה | 1.33.1-gke.1522000 ואילך | 1.33.4-gke.1142000 ואילך |
הפודים לא מופעלים בצמתים שבהם מופעל סטרימינג של תמונות
בצמתים שבהם מופעל סטרימינג של תמונות, יכול להיות שעומסי העבודה לא יתחילו, ותופיע חתימת השגיאה הבאה:
ביומני היציאה הטורית של הצומת המושפע מופיעה גם חתימת השגיאה הבאה:
הנוכחות של שתי חתימות השגיאה האלה מצביעה על מבוי סתום באחד מרכיבי הסטרימינג של התמונות. מצב הקיפאון הזה מונע מה-Pods להתחיל לפעול. השבתה זמנית של אותות אכיפה: להפעיל מחדש את הצומת כדי לפתור את הבעיה במהירות. חשוב לזכור שהצומת שהופעל מחדש עדיין עלול להיתקל שוב במבוי הסתום. כדי להפחית את הסיכון בצורה יעילה יותר, משביתים את הסטרימינג של קובצי אימג' במאגר הצמתים באמצעות הפקודה הבאה: gcloud container node-pools update NODE_POOL_NAME --cluster CLUSTER_NAME --no-enable-image-streaming |
| פעולה |
|
|
ComputeClasses בהתאמה אישית עם
|
המאמרים הבאים
אם לא מצאתם פתרון לבעיה במסמכי העזרה, תוכלו לקבל עזרה נוספת בקבלת תמיכה, כולל עצות בנושאים הבאים:
- לפתוח בקשת תמיכה באמצעות פנייה ל-Cloud Customer Care.
- לקבל תמיכה מהקהילה על ידי פרסום שאלות ב-StackOverflow ושימוש בתג
google-kubernetes-engineכדי לחפש בעיות דומות. אתם יכולים גם להצטרף לערוץ Slack של#kubernetes-engineכדי לקבל תמיכה מהקהילה. - לפתוח דיווחים על בעיות או הגשת בקשות להוספת תכונות באמצעות Issue Tracker הציבורי.