בדף הזה מפורטים קודי השגיאות של Config Sync ופעולות מומלצות לטיפול בשגיאות האלה.
הודעות השגיאה של Config Sync כוללות מזהה שגיאה בפורמט KNV1234
כאשר 1234 הוא מספר ייחודי, ואחריו תיאור של הבעיה והצעה לפתרון. הכללים של K הם כללים שמועברים ממוסכמות של Kubernetes, כללים עם הקידומת N הם ספציפיים ל-nomos, ו-V הוא ספציפי לשגיאות שאפשר לזהות במצב הראשוני של המאגר והאשכול. הקודים
של שגיאות שאפשר לזהות במצב הראשוני של המאגר והאשכול הם
בפורמט KNV1XXX. הקודים של שגיאות שאפשר לזהות רק בזמן הריצה הם מהצורה KNV2XXX.
טבלת שגיאות של KNV
| קוד שגיאה | תיאור | הפעולה המומלצת |
|---|---|---|
|
המזהה של InternalError השתנה ל- |
לא רלוונטי |
|
הוצא משימוש ב-Config Sync 1.3. |
לא רלוונטי |
|
הוצא משימוש ב-Config Sync 1.3. |
לא רלוונטי |
|
כשמשתמשים במבנה היררכי של מאגר, ספרייה שמכילה הגדרת מרחב שמות לא יכולה להכיל ספריות משנה. ספרייה ללא הגדרת מרחב שמות היא ספרייה מופשטת של מרחב שמות, ויש לה ספריות שיורשות ממנה. לכן, בספריות של מרחבי שמות מופשטים צריכות להיות ספריות משנה. ספרייה שמכילה הגדרת מרחב שמות היא ספריית מרחב שמות, ואי אפשר להוריש ממנה הגדרות, ולכן היא לא יכולה להכיל ספריות משנה. |
צריך להסיר את ההגדרה של מרחב השמות מהספרייה הראשית, או להעביר את ספריית המשנה למקום אחר. |
|
באובייקט בהיקף אשכול אסור להצהיר על ההערה
|
מסירים את |
|
ההגדרה התקפה היחידה להערת הניהול היא
|
מוודאים שההערה לניהול היא למידע נוסף, ראו ניהול אובייקטים. |
|
לא הייתה אפשרות לנתח אובייקט שהוגדר במאגר. |
בודקים את פורמט ה-YAML. לדוגמה, אפשר להשתמש בפקודה
אם הפקודה |
|
כשמשתמשים במאגר לא מובנה, אסור להצהיר על הגדרות בתקייה של מרחב שמות מופשט. |
מעבירים את ההגדרה שמופיעה בהודעת השגיאה לספריית מרחב שמות. מידע נוסף מופיע במאמר בנושא שימוש במאגר לא מובנה. |
|
כשמשתמשים במבנה מאגר היררכי, קובצי ההגדרות צריכים להצהיר על מרחבי שמות שתואמים לספריית מרחבי השמות שמכילה אותם, או להשמיט את השדה. |
מעדכנים את שדה מרחב השמות שצוין בהודעת השגיאה. מידע נוסף זמין במאמר מבנה המאגר ההיררכי. |
|
החל מ- |
חשוב לוודא שאתם משתמשים באחת מההערות הנתמכות הבאות:
|
|
אסור להגדרות להכיל תוויות עם מפתחות שמתחילים ב- |
מעדכנים את התוויות שמופיעות בהודעת השגיאה. לדוגמה, אם ניסיתם להצהיר על תווית בשם |
|
הוצא משימוש ב-Config Sync 1.3. |
לא רלוונטי |
|
ההגדרה מפנה ל-ClusterSelector או ל-NamespaceSelector שלא קיימים. כדי להשתמש בסלקטור בהערה להגדרה, הסלקטור צריך להתקיים. |
יוצרים את הסלקטורים החסרים, או שאם הסלקטור הוסר, מסירים את ההגדרות שמתייחסות אליו. |
|
התחביר של ההגדרות ClusterSelector ו-NamespaceSelector תקין, אבל נמצאה שגיאת תחביר. |
חשוב לוודא שציינתם את ההגדרה באמצעות סכימת הנתונים המתאימה: |
|
הוצא משימוש ב-סנכרון תצורות 1.3.2. | לא רלוונטי |
|
כשמשתמשים במבנה היררכי של מאגר, צריך להגדיר את ConfigManagement Operator בספרייה |
צריך להגדיר לפחות תצורה מינימלית לאופרטור ConfigManagement. מידע נוסף זמין במאמר מבנה המאגר ההיררכי. |
|
הוצא משימוש ב-Config Sync 1.3. | לא רלוונטי |
|
כשמשתמשים במבנה מאגר היררכי, אסור להצהיר על מרחבי שמות ישירות בספרייה |
יוצרים ספריית משנה להגדרות של מרחב השמות שמופיעות בהודעת השגיאה. מידע נוסף זמין במאמר מבנה המאגר ההיררכי. |
|
כשמשתמשים במבנה מאגר היררכי, בהגדרת מרחב השמות מציינים את metadata.name, והערך שלו חייב להיות זהה לשם של ספריית מרחב השמות.
|
מתקנים את metadata.name או את הספרייה של מרחב השמות. |
|
לא מוגדר CustomResourceDefinition למשאב באשכול. |
יוצרים CustomResourceDefinition עבור המשאב שמצוין בהודעת השגיאה. לסוגי משאבים שהם לא אובייקטים מובנים של Kubernetes צריך להיות CustomResourceDefinition. |
|
כשמשתמשים במאגר היררכי, אי אפשר להצהיר על הגדרות מהסוג הזה בספרייה |
מעבירים את המשאב שמופיע בהודעת השגיאה אל מחוץ לספרייה |
|
השדה |
אם הפורמט של המאגר תואם לגרסה הנתמכת, צריך לעדכן את השדה |
|
שמות של ספריות צריכים להיות באורך של עד 64 תווים, להכיל רק תווים אלפאנומריים באותיות קטנות או '-', ולהתחיל ולהסתיים בתו אלפאנומרי. |
משנים את השם של הספרייה או מסירים אותה. |
|
להגדרות מאותו סוג צריכים להיות שמות ייחודיים באותו מרחב שמות ובמרחבי השמות המופשטים של ההורה שלהן. |
משנים את השם של כל ההגדרות שמופיעות בהודעת השגיאה או מסירים אותן, כך שלכולן יהיו שמות ייחודיים. |
|
לא יכולים להיות כמה משאבים של מרחב שמות באותה ספרייה. |
מסירים את הגדרות הכפילות כך שיישאר רק משאב אחד של מרחב שמות. |
|
בכל ההגדרות צריך להצהיר על |
מוסיפים את השדה |
|
אסור להשתמש בסוג |
מסירים את ההגדרה הבעייתית או ממירים את המאגר לשימוש ב- |
|
אם משתמשים במאגר היררכי, אפשר להצהיר רק על סוגי |
מוודאים שכל ההגדרות שמוצהרות בספרייה |
|
אסור להצהיר על |
אם הצהרתם על מרחב השמות
אם הצהרתם על מרחבי השמות
אם בעבר סנכרנתם עם מאגר היררכי והייתם צריכים להצהיר על מרחב השמות של בקר לצד משאבים כלשהם, כדאי לעבור למאגר לא מובנה כדי לקבל גמישות רבה יותר במבנה המקור. |
|
הפורמט של הערך |
משנים את
אם הערך של |
|
הוצא משימוש ב-Config Sync 1.3. | לא רלוונטי |
|
אסור להצהיר על אובייקט בהיקף מרחב שמות מחוץ לספרייה |
מעבירים את ההגדרות הבעייתיות לספרייה חוקית. מידע נוסף על אובייקטים בהיקף של מרחב שמות זמין במאמר אובייקטים בהיקף של מרחב שמות. |
|
אסור להצהיר על אובייקט בהיקף אשכול מחוץ לספרייה |
מעבירים את ההגדרות הבעייתיות לספרייה חוקית. למידע נוסף על אובייקטים בהיקף אשכול, אפשר לעיין במאמר אובייקטים בהיקף אשכול. |
|
הוצא משימוש ב-Config Sync 1.3. | לא רלוונטי |
|
אסור להצהיר על סוג המשאב הזה ב- |
מסירים את המשאב הבעייתי. מידע נוסף על |
|
זוהה ערך לא חוקי של |
מחליפים את |
|
אי אפשר להגדיר את האובייקט הזה באמצעות סנכרון תצורות. |
מסירים את ההגדרה הבעייתית מהמאגר. |
|
בספרייה של מרחב שמות מופשט עם הגדרות חייבת להיות לפחות ספריית משנה אחת של מרחב שמות. |
אפשר להוסיף ספריית מרחב שמות מתחת לספריית מרחב השמות המופשטת, להוסיף הגדרת מרחב שמות לספריית מרחב השמות המופשטת או להסיר את ההגדרות בספריית מרחב השמות המופשטת. |
|
אסור להשתמש בהגדרות עם הערך |
מסירים את השדה |
|
ההפניה |
מעדכנים את |
|
אסור להסיר הגדרת משאב מותאם אישית (CRD) ולהשאיר את המשאבים המותאמים אישית התואמים במאגר. |
מסירים את ה-CRD יחד עם המשאבים המותאמים אישית. |
|
ל-CustomResourceDefinition יש שם לא תקין. |
משנים את השם להמלצה שמופיעה בהודעת השגיאה. |
|
ההגדרה משתמשת ב-Group וב-Kind שהוצאו משימוש. |
משנים את הערך של Group או Kind להמלצה שמופיעה בהודעת השגיאה. |
|
במשאבים בהיקף אשכול אסור להצהיר על |
צריך להסיר את השדה metadata.namespace מהמשאב בהיקף האשכול. |
|
משאבים בהיקף של מרחב שמות חייבים להצהיר על |
מוסיפים את השדה החסר למשאב בהיקף מרחב השמות. |
|
ההגדרות מכילות ערך לא חוקי עבור הערה. |
פועלים לפי ההנחיות בהודעת השגיאה כדי לפתור את השגיאה. |
|
הערך של |
מעדכנים את הערך של
|
|
המשאב מוצהר במרחב שמות לא מנוהל. |
צריך להסיר את ההערה |
|
למשאב יש תווית לא חוקית. |
מסירים את התוויות הלא חוקיות שמפורטות בהודעת השגיאה. |
|
מאגר מרחבי שמות יכול להצהיר רק על משאבים בהיקף מרחב השמות במרחב השמות שאליו המאגר חל. |
מוודאים שכל מאגרי מרחבי השמות מכריזים על משאבים בהיקף מרחב השמות בצורה נכונה.
לדוגמה, מאגר המאגרים של מרחב השמות
לדוגמה, אם בהגדרת מאגר השמות בנוסף לווידוא שהמשאבים בהיקף מרחב השמות מוצהרים בצורה נכונה, צריך לוודא שמרחבי השמות מוצהרים במאגר הבסיסי. הדבר נחוץ כי מרחבי שמות הם בהיקף האשכול. |
|
מאגר שמות יכול להכריז על משאב Kptfile אחד לכל היותר. |
מסירים את כל משאבי Kptfile חוץ מאחד. |
|
כשמנהלים אובייקטים בכמה מקורות אמת, יכולות להתעורר מחלוקות כשמצהירים על אותו אובייקט (קבוצה תואמת, סוג, שם ומרחב שמות) ביותר ממקור אחד. לדוגמה, אם אותו אובייקט מנוהל על ידי RootSync ו-RepoSync, RootSync מנצח. אם RootSync מוחל קודם, RepoSync מדווח על שגיאת סטטוס KNV1060. אם RepoSync מוחל ראשון, RootSync מחליף את האובייקט של RepoSync ו-RepoSync מדווח על שגיאת סטטוס KNV1060 כשהוא רואה את העדכון. |
כדי לפתור את הבעיה, מעדכנים את ההגדרה כך שתתאים למקור האמת השני, או מוחקים את האובייקט שגורם לבעיה מאחד המקורות.
הפקודה |
|
|
פועלים לפי ההוראות שבהודעת השגיאה כדי לתקן את שגיאות ההגדרה. |
|
לקובץ Kptfile אין שדה מלאי תקין. קובץ Kptfile צריך לכלול שדה מלאי לא ריק עם מזהה ומרחב שמות. |
מציינים את הערכים של |
|
נמצאו קבצי Kpt במאגר השורש. קבצים מסוג Kptfile נתמכים רק במאגרי מידע בהיקף מרחב שמות. |
מסירים את קובצי ה-Kptfiles ממאגר הבסיס. |
|
לא ניתן היה לנתח את הקובץ |
פועלים לפי ההוראות שמופיעות בהודעת השגיאה. לדוגמה, יכול להיות שתצטרכו להריץ מחדש את הפקודה |
|
הפורמט של CustomResourceDefinition שגוי. |
צריך לבדוק את השדה שצוין בהודעת השגיאה ולוודא שהערך שלו בפורמט הנכון. |
|
אובייקט config חייב להכריז רק על הערת cluster-selector. השגיאה הזו מתרחשת כשקיימות גם
ההערה מדור קודם ( |
מסירים אחת מההערות מהשדה |
|
הכלי להשוואה לא מצליח לקודד את השדות המוצהרים לפורמט שתואם להחלה בצד השרת. יכול להיות שהסיבה לכך היא סכימה לא מעודכנת. |
בודקים את השדה שצוין בהודעת השגיאה ומוודאים שהוא תואם לסכימה של סוג המשאב. |
|
תהליך העיבוד נתקל בבעיה שדורשת פעולה מצד המשתמש. |
אם מאגר Git מכיל הגדרות Kustomize, אבל לא קיים קובץ
אם השגיאה נגרמת בגלל כשלים ב-
אם מתרחשת שגיאת |
|
תהליך ה-reconciler סיים את ההתאמה של אובייקט RootSync או RepoSync משלו. אובייקט RootSync יכול לנהל אובייקטים אחרים מסוג RootSync ו-RepoSync. אובייקט RepoSync יכול לנהל אובייקטים אחרים מסוג RepoSync, אבל הוא לא יכול לנהל את עצמו. |
מסירים את אובייקט RootSync או RepoSync ממקור האמת שממנו האובייקט מסתנכרן. |
|
קריאת מערכת ברמת מערכת ההפעלה שמנסה לגשת למשאב של מערכת קבצים נכשלת. |
השגיאה הזו כנראה נגרמת בגלל הגדרת YAML לא תקינה או בגלל שימוש בתווים מיוחדים. אם יש לכם הגדרת YAML לא תקינה, תופיע הודעת שגיאה דומה להודעה הבאה:
אם שם הקובץ או הנתיב מכילים תווים מיוחדים, יכול להיות שתופיע הודעת שגיאה
בדומה ל- |
|
בקשה לגישה לשרת Kubernetes API נכשלת. |
בקשות ל-Kubernetes API יכולות להיכשל מסיבות רבות. היא מופיעה בדרך כלל מהסיבות הבאות:
אחרי רוב השגיאות בשרת ה-API, סנכרון תצורות מנסה שוב. חלק מהבעיות הן זמניות ויסתדרו מעצמן, אבל ברוב המקרים נדרשת התערבות של המשתמש כדי לפתור אותן. שגיאות בשרת API נגרמות לעיתים רחוקות על ידי סנכרון תצורות עצמו, אבל אם אתם חושדים שזה המקרה, אתם יכולים לשלוח דוח על באג. |
|
קריאת מערכת כללית ברמת מערכת ההפעלה נכשלת. | |
|
סנכרון תצורות לא יכול לקרוא ממקור האמת. |
יש כמה בעיות שיכולות לגרום לשגיאה הזו. כדי לפתור בעיות בחיבור למקור האמת, אפשר לעיין במאמר פתרון בעיות בחיבור למקור האמת.
כדי לקרוא על בעיות מוכרות שגורמות לשגיאות |
|
סנכרון תצורות מתחרה עם בקר אחר על משאב. התנגשויות כאלה צורכות כמות גדולה של משאבים ויכולות לפגוע בביצועים. | לקבלת טיפים לאבחון ולפתרון של בעיות שקשורות להשתלטות על בקרים, אפשר לעיין במאמר פתרון בעיות שקשורות להשתלטות על בקרים. |
|
כדי למנוע מחיקה מקרית, סנכרון תצורות לא מאפשר להסיר את כל מרחבי השמות או את המשאבים ברמת האשכול בהתחייבות אחת. |
אם ה-webhook של סנכרון תצורות admission מושבת, צריך לבטל את הקומיט שמוחק את כל המשאבים.
כדי למחוק את כל המשאבים שמנוהלים, מבצעים את השלבים הבאים:
|
|
משאב בשרת ה-API משתנה או נמחק בזמן ש-סנכרון תצורות מנסה לשנות אותו. |
אם השגיאה הזו מופיעה רק בהפעלה או לעיתים רחוקות, אפשר להתעלם ממנה.
אם השגיאות האלה לא זמניות (כלומר, הן נמשכות כמה דקות), יכול להיות שמדובר בבעיה חמורה ו |
|
זו שגיאה כללית שמציינת ש-סנכרון תצורות לא הצליח לסנכרן חלק מההגדרות עם האשכול. |
יש כמה בעיות שיכולות לגרום לשגיאה הזו. לקבלת טיפים לפתרון בעיות נפוצות בסנכרון, אפשר לעיין במאמר פתרון בעיות בסנכרון. |
|
זו שגיאה כללית שמציינת בעיה במשאב או בקבוצת משאבים. |
הודעת השגיאה כוללת את המשאבים הספציפיים שגרמו לשגיאה. כדאי לעיין במקורות המידע הבאים. |
|
כדי להמשיך, נדרש משאב ספציפי, אבל המשאב לא נמצא. לדוגמה, ConfigManagement Operator ניסה לעדכן משאב, אבל המשאב נמחק בזמן חישוב העדכון. |
יוצרים או משחזרים את המשאב החסר. |
|
השגיאה הזו מציינת שנמצא יותר ממופע אחד של APIResource בהקשר שבו מותר רק מופע אחד של APIResource. לדוגמה, צריך להיות רק משאב אחד של |
מסירים את APIResource הנוסף. |
|
לכלי לתיקון מרחב שמות אין הרשאות מספיקות לניהול משאבים. |
מוודאים שיש למנגנון ההתאמה הרשאות מספיקות. |
|
האזהרה הזו מופיעה כשמבצעים שינוי לא חוקי בהגדרות של webhook של סנכרון תצורות. המערכת מתעלמת מהגדרות לא חוקיות של תגובה לפעולה מאתר אחר (webhook). |
מסירים את ה-webhook ששונה באופן לא חוקי. |
|
תהליך העיבוד נתקל בבעיה פנימית. לדוגמה, לסנכרון תצורות אין גישה למערכת הקבצים. |
יכול להיות שהשגיאה הזו מצביעה על כך שה-Pod לא תקין. כדי להפעיל מחדש את ה-Pods של Reconciler, מריצים את הפקודות הבאות: # restart a root reconciler kubectl delete pod -n config-management-system -l configsync.gke.io/reconciler=root-reconciler # restart a namespace reconciler kubectl delete pod -n config-management-system -l configsync.gke.io/reconciler=ns-reconciler-NAMESPACE |
|
השגיאה הזו מייצגת בעיה זמנית שאמורה להיפתר באופן אוטומטי בשלב מאוחר יותר. לדוגמה, אם מצב העיבוד לא תואם להגדרת המקור, יכול להיות שתופיע השגיאה הזו. |
השגיאה אמורה להיפתר באופן אוטומטי. |
|
יש בעיה ב-Config Sync עצמו. |
מומלץ לשלוח דוח על באג. |
|
נתקלתם בשגיאה ללא הודעת שגיאה מתועדת. |
עדיין לא כתבנו מסמכים שמתייחסים ספציפית לשגיאה שנתקלת בה. |
הודעות שגיאה ללא קוד KNV
לשגיאות שמדווחות על ידי תהליכי ה-reconciler של סנכרון תצורות יש קוד שגיאה מסוג KNV, אבל לשגיאות שמדווחות מרכיבים אחרים אין קוד KNV. לדוגמה, השגיאה 'ההרשאה נדחתה' מגיעה מ-fleet controller, שהוא שכבה מעל סנכרון תצורות.
בטבלה הבאה מפורטות כמה שגיאות נפוצות ללא הקידומת KNV.
| הודעת השגיאה | הפעולה המומלצת |
|---|---|
|
|
אי אפשר ליצור כלי ייצוא
אם לרכיב ב-Open Telemetry Collector אין גישה לחשבון השירות שמוגדר כברירת מחדל באותו מרחב שמות, יכול להיות שתבחינו שה-Pod הבעיה הזו מתרחשת בדרך כלל כשאיחוד זהויות של עומסי עבודה ל-GKE מופעל באשכול. כדי לפתור את הבעיה, פועלים לפי ההוראות שבקטע מעקב אחרי סנכרון תצורות כדי להעניק הרשאת כתיבה של מדדים לחשבון השירות שמוגדר כברירת מחדל.
אם השגיאה נמשכת אחרי הגדרת ה-IAM, צריך להפעיל מחדש את
|
server certificate verification failed. CAfile:/etc/ca-cert/cert CRLfile: none
|
אימות אישור השרת נכשל
אם מאגר הנתונים ההודעה הזו מציינת שהשרת מוגדר עם אישורים מרשות אישורים (CA) מותאמת אישית. עם זאת, ה-CA המותאם אישית לא מוגדר בצורה תקינה, ולכן הקונטיינר לא מצליח לאחזר נתונים מהשרת.
כדי לפתור את הבעיה, קודם צריך לוודא שהשדה
לאחר מכן, אם השדה הוגדר ואובייקט הסוד קיים,
מוודאים שאובייקט הסוד מכיל את האישורים המלאים. דוגמה לאופן שבו אפשר לפרט את אישורי השרת: echo -n | openssl s_client -showcerts -connect HOST:PORT -servername SERVER_NAME 2>/dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' אתם יכולים לבקש מצוות ניהול הרשת שלכם לקבל בשבילכם את האישורים של רשות האישורים (CA). |
Error message: "MESSAGE": "Unable to retrieve pull secret, the image pull may not succeed."
|
לא ניתן לאחזר את סוד המשיכה, יכול להיות שמשיכת התמונה לא תצליחאם אתם משתמשים במאגר פרטי עם Google Distributed Cloud, יכול להיות שההתקנה או השדרוג של סנכרון תצורות ייתקעו. תוצג הודעת שגיאה דומה להודעה הזו. כדי לפתור את הבעיה, פועלים לפי השלבים במאמר עדכון סנכרון תצורות באמצעות מאגר פרטי לפני שמתקינים או משדרגים את סנכרון תצורות. |
Permission 'gkehub.features.create' denied on 'projects/PROJECT_ID/locations/global/features/configmanagement'
|
ההרשאה נדחתהאם מופיעה שגיאה דומה לדוגמה הזו כשמנסים להגדיר את סנכרון תצורות, יכול להיות שאין לכם את התפקיד GKE Hub Admin. כדי לוודא שיש לכם את ההרשאות הנדרשות, צריך לוודא שהקציתם את תפקידי ה-IAM הנדרשים. |
המאמרים הבאים
- צפייה בבעיות ידועות
- כדאי לקרוא את ההקדמה לפתרון בעיות בסנכרון תצורות.
- אם אתם צריכים תמיכה נוספת, תוכלו לפנות אל Cloud Customer Care.