הפניה לשגיאה

בדף הזה מפורטים קודי השגיאות של Config Sync ופעולות מומלצות לטיפול בשגיאות האלה.

הודעות השגיאה של Config Sync כוללות מזהה שגיאה בפורמט KNV1234 כאשר 1234 הוא מספר ייחודי, ואחריו תיאור של הבעיה והצעה לפתרון. הכללים של K הם כללים שמועברים ממוסכמות של Kubernetes, כללים עם הקידומת N הם ספציפיים ל-nomos, ו-V הוא ספציפי לשגיאות שאפשר לזהות במצב הראשוני של המאגר והאשכול. הקודים של שגיאות שאפשר לזהות במצב הראשוני של המאגר והאשכול הם בפורמט KNV1XXX. הקודים של שגיאות שאפשר לזהות רק בזמן הריצה הם מהצורה KNV2XXX.

טבלת שגיאות של KNV

קוד שגיאה תיאור הפעולה המומלצת

המזהה של InternalError השתנה ל-KNV9998 ב-סנכרון תצורות בגרסה 1.6.1.

לא רלוונטי

הוצא משימוש ב-Config Sync 1.3.

לא רלוונטי

הוצא משימוש ב-Config Sync 1.3.

לא רלוונטי

כשמשתמשים במבנה היררכי של מאגר, ספרייה שמכילה הגדרת מרחב שמות לא יכולה להכיל ספריות משנה.

ספרייה ללא הגדרת מרחב שמות היא ספרייה מופשטת של מרחב שמות, ויש לה ספריות שיורשות ממנה. לכן, בספריות של מרחבי שמות מופשטים צריכות להיות ספריות משנה. ספרייה שמכילה הגדרת מרחב שמות היא ספריית מרחב שמות, ואי אפשר להוריש ממנה הגדרות, ולכן היא לא יכולה להכיל ספריות משנה.

צריך להסיר את ההגדרה של מרחב השמות מהספרייה הראשית, או להעביר את ספריית המשנה למקום אחר.

באובייקט בהיקף אשכול אסור להצהיר על ההערה configmanagement.gke.io/namespace-selector. אפשר להצהיר על NamespaceSelectors רק לגבי אובייקטים בהיקף של מרחב שמות.

מסירים את configmanagement.gke.io/namespace-selector מהשדה metadata.annotations.

ההגדרה התקפה היחידה להערת הניהול היא configmanagement.gke.io/managed=disabled. ההגדרה הזו משמשת לביטול הניהול של משאב במאגר Git באופן מפורש, תוך השארת ההגדרה ב-commit. ההערה configmanagement.gke.io/managed=enabled לא נחוצה.

מוודאים שההערה לניהול היא configmanagement.gke.io/managed=disabled.

למידע נוסף, ראו ניהול אובייקטים.

לא הייתה אפשרות לנתח אובייקט שהוגדר במאגר.

בודקים את פורמט ה-YAML. לדוגמה, אפשר להשתמש בפקודה kubectl --validate.

אם הפקודה nomos vet מחזירה את השגיאה הזו בסוג עם group: configsync.gke.io, כמו RepoSync, צריך להוריד את v1.6.0-rc.6 או גרסה מאוחרת יותר מדף ההורדות כדי לפתור את הבעיה.

כשמשתמשים במאגר לא מובנה, אסור להצהיר על הגדרות בתקייה של מרחב שמות מופשט.

מעבירים את ההגדרה שמופיעה בהודעת השגיאה לספריית מרחב שמות.

מידע נוסף מופיע במאמר בנושא שימוש במאגר לא מובנה.

כשמשתמשים במבנה מאגר היררכי, קובצי ההגדרות צריכים להצהיר על מרחבי שמות שתואמים לספריית מרחבי השמות שמכילה אותם, או להשמיט את השדה.

מעדכנים את שדה מרחב השמות שצוין בהודעת השגיאה.

מידע נוסף זמין במאמר מבנה המאגר ההיררכי.

החל מ-configmanagement.gke.io, אסור להצהיר על הערות שלא נתמכות בקובצי הגדרות.

חשוב לוודא שאתם משתמשים באחת מההערות הנתמכות הבאות:

אסור להגדרות להכיל תוויות עם מפתחות שמתחילים ב-configmanagement.gke.io/. התחילית של מפתח התווית הזו שמורה לשימוש על ידי סנכרון תצורות.

מעדכנים את התוויות שמופיעות בהודעת השגיאה. לדוגמה, אם ניסיתם להצהיר על תווית בשם
configmanagement.gke.io/example-label: label-value,
אפשר לשנות אותה ל-
example-label: label-value.

הוצא משימוש ב-Config Sync 1.3.

לא רלוונטי

ההגדרה מפנה ל-ClusterSelector או ל-NamespaceSelector שלא קיימים. כדי להשתמש בסלקטור בהערה להגדרה, הסלקטור צריך להתקיים.

יוצרים את הסלקטורים החסרים, או שאם הסלקטור הוסר, מסירים את ההגדרות שמתייחסות אליו.

התחביר של ההגדרות ClusterSelector ו-NamespaceSelector תקין, אבל נמצאה שגיאת תחביר.

חשוב לוודא שציינתם את ההגדרה באמצעות סכימת הנתונים המתאימה:

הוצא משימוש ב-סנכרון תצורות 1.3.2. לא רלוונטי

כשמשתמשים במבנה היררכי של מאגר, צריך להגדיר את ConfigManagement Operator בספרייה system/ של המאגר. ההגדרה הזו חייבת לכלול מידע נדרש כמו הגרסה הסמנטית של המאגר.

צריך להגדיר לפחות תצורה מינימלית לאופרטור ConfigManagement. מידע נוסף זמין במאמר מבנה המאגר ההיררכי.

הוצא משימוש ב-Config Sync 1.3. לא רלוונטי

כשמשתמשים במבנה מאגר היררכי, אסור להצהיר על מרחבי שמות ישירות בספרייה namespaces/.

יוצרים ספריית משנה להגדרות של מרחב השמות שמופיעות בהודעת השגיאה. מידע נוסף זמין במאמר מבנה המאגר ההיררכי.

כשמשתמשים במבנה מאגר היררכי, בהגדרת מרחב השמות מציינים את metadata.name, והערך שלו חייב להיות זהה לשם של ספריית מרחב השמות. מתקנים את metadata.name או את הספרייה של מרחב השמות.

לא מוגדר CustomResourceDefinition למשאב באשכול.

יוצרים CustomResourceDefinition עבור המשאב שמצוין בהודעת השגיאה. לסוגי משאבים שהם לא אובייקטים מובנים של Kubernetes צריך להיות CustomResourceDefinition.

כשמשתמשים במאגר היררכי, אי אפשר להצהיר על הגדרות מהסוג הזה בספרייה system/.

מעבירים את המשאב שמופיע בהודעת השגיאה אל מחוץ לספרייה system/. מידע נוסף על המבנה של המאגר ההיררכי

השדה spec.version בהגדרת המאגר מייצג את הגרסה הסמנטית של המאגר. השגיאה הזו מציינת שאתם משתמשים בגרסה לא נתמכת.

אם הפורמט של המאגר תואם לגרסה הנתמכת, צריך לעדכן את השדה spec.version. אם אתם צריכים לשדרג, תוכלו להיעזר בהוראות בהערות לגבי הגרסה.

שמות של ספריות צריכים להיות באורך של עד 64 תווים, להכיל רק תווים אלפאנומריים באותיות קטנות או '-', ולהתחיל ולהסתיים בתו אלפאנומרי.

משנים את השם של הספרייה או מסירים אותה.

להגדרות מאותו סוג צריכים להיות שמות ייחודיים באותו מרחב שמות ובמרחבי השמות המופשטים של ההורה שלהן.

משנים את השם של כל ההגדרות שמופיעות בהודעת השגיאה או מסירים אותן, כך שלכולן יהיו שמות ייחודיים.

לא יכולים להיות כמה משאבים של מרחב שמות באותה ספרייה.

מסירים את הגדרות הכפילות כך שיישאר רק משאב אחד של מרחב שמות.

בכל ההגדרות צריך להצהיר על metadata.name.

מוסיפים את השדה metadata.name להגדרות הבעייתיות.

אסור להשתמש בסוג Repo.configmanagement.gke.io אם הערך של sourceFormat הוא unstructured.

מסירים את ההגדרה הבעייתית או ממירים את המאגר לשימוש ב-sourceFormat: hierarchy.

אם משתמשים במאגר היררכי, אפשר להצהיר רק על סוגי HierarchyConfig ו-Repo בספרייה system/.

מוודאים שכל ההגדרות שמוצהרות בספרייה system/ הן אחת מהסוגים המותרים. אם לא, מעבירים אותו לספרייה אחרת.

אסור להצהיר על config-management-system, resource-group-system ועל config-management-monitoring, או על משאבים בתוכם.

אם הצהרתם על מרחב השמות config-management-system, צריך להסיר אותו וכל הגדרה במרחב השמות הזה.

אם הצהרתם על מרחבי השמות resource-group-system או config-management-monitoring, צריך לבטל את הניהול של מרחב השמות של בקר התחום:

  1. מעדכנים את סנכרון תצורות כדי להפסיק לנהל את מרחב השמות וכל משאב שמוצהר מתחתיו.
  2. מחכים לסנכרון ואז מוודאים שהמשאבים המתאימים עדיין זמינים באשכול, אבל לא ב-nomos status.
  3. מסירים את קובץ ה-YAML של מרחב השמות של בקר התנועה מהמקור.
  4. מאפשרים ל-סנכרון תצורות להמשיך לנהל את המשאבים.

אם בעבר סנכרנתם עם מאגר היררכי והייתם צריכים להצהיר על מרחב השמות של בקר לצד משאבים כלשהם, כדאי לעבור למאגר לא מובנה כדי לקבל גמישות רבה יותר במבנה המקור.

הפורמט של הערך metadata.name שצוין לא תקין.

משנים את metadata.name כך שיעמוד בתנאים הבאים:

  • להיות באורך של עד 254 תווים
  • הערך חייב להכיל תווים אלפאנומריים באותיות קטנות, מקף ('-') או נקודה ('.')
  • מתחיל ומסתיים בתו אלפאנומרי

אם הערך של metadata.name לא תקין, והמשאב המקורי תומך בו, כדאי להשתמש בשדה spec.resourceID במקום זאת, כדי שלא תהיו מוגבלים על ידי המגבלות האלה. מידע נוסף זמין במאמר בנושא ניהול משאבים באמצעות השדה resourceID.

הוצא משימוש ב-Config Sync 1.3. לא רלוונטי

אסור להצהיר על אובייקט בהיקף מרחב שמות מחוץ לספרייה namespaces/.

מעבירים את ההגדרות הבעייתיות לספרייה חוקית. מידע נוסף על אובייקטים בהיקף של מרחב שמות זמין במאמר אובייקטים בהיקף של מרחב שמות.

אסור להצהיר על אובייקט בהיקף אשכול מחוץ לספרייה cluster/.

מעבירים את ההגדרות הבעייתיות לספרייה חוקית. למידע נוסף על אובייקטים בהיקף אשכול, אפשר לעיין במאמר אובייקטים בהיקף אשכול.

הוצא משימוש ב-Config Sync 1.3. לא רלוונטי

אסור להצהיר על סוג המשאב הזה ב-HierarchyConfig.

מסירים את המשאב הבעייתי. מידע נוסף על HierarchyConfig זמין במאמר בנושא השבתת ההורשה עבור סוג אובייקט.

זוהה ערך לא חוקי של HierarchyMode בHierarchyConfig.

מחליפים את HierarchyMode ב-none או ב-inherit. מידע נוסף על HierarchyConfigs זמין במאמר השבתת ירושה עבור סוג אובייקט.

אי אפשר להגדיר את האובייקט הזה באמצעות סנכרון תצורות.

מסירים את ההגדרה הבעייתית מהמאגר.

בספרייה של מרחב שמות מופשט עם הגדרות חייבת להיות לפחות ספריית משנה אחת של מרחב שמות.

אפשר להוסיף ספריית מרחב שמות מתחת לספריית מרחב השמות המופשטת, להוסיף הגדרת מרחב שמות לספריית מרחב השמות המופשטת או להסיר את ההגדרות בספריית מרחב השמות המופשטת.

אסור להשתמש בהגדרות עם הערך metadata.ownerReference.

מסירים את השדה status ממאגר המקור. במקרה של הגדרות של צד שלישי שאינן בבעלותכם, תוכלו להשתמש ב-kustomize patches כדי להסיר status שדות שצוינו במניפסטים שלכם בכמות גדולה.

ההפניה HierarchyConfig מתייחסת למשאב בהיקף האשכול. אסור להשתמש באובייקטים בהיקף אשכול ב-HierarchyConfig.

מעדכנים את HierarchyConfig כך שהוא לא יפנה יותר למשאב הבעייתי.

אסור להסיר הגדרת משאב מותאם אישית (CRD) ולהשאיר את המשאבים המותאמים אישית התואמים במאגר.

מסירים את ה-CRD יחד עם המשאבים המותאמים אישית.

ל-CustomResourceDefinition יש שם לא תקין.

משנים את השם להמלצה שמופיעה בהודעת השגיאה.

ההגדרה משתמשת ב-Group וב-Kind שהוצאו משימוש.

משנים את הערך של Group או Kind להמלצה שמופיעה בהודעת השגיאה.

במשאבים בהיקף אשכול אסור להצהיר על metadata.namespace.

צריך להסיר את השדה metadata.namespace מהמשאב בהיקף האשכול.

משאבים בהיקף של מרחב שמות חייבים להצהיר על metadata.namespace או על metadata.annotations.configmanagement.gke.io/namespace-selector.

מוסיפים את השדה החסר למשאב בהיקף מרחב השמות.

ההגדרות מכילות ערך לא חוקי עבור הערה.

פועלים לפי ההנחיות בהודעת השגיאה כדי לפתור את השגיאה.

הערך של metadata.namespace הוא לא שם תקין של מרחב שמות ב-Kubernetes.

מעדכנים את הערך של metadata.namespace כך שיעמוד בכללים הבאים:

  • האורך הוא 63 תווים או פחות
  • הקוד יכול להכיל רק אותיות קטנות (a-z), ספרות (0-9) ומקף '-'
  • מתחיל ומסתיים באות קטנה או בספרה

המשאב מוצהר במרחב שמות לא מנוהל.

צריך להסיר את ההערה configmanagement.gke.io/managed: disabled או להוסיף אותה למשאב המוצהר.

למשאב יש תווית לא חוקית.

מסירים את התוויות הלא חוקיות שמפורטות בהודעת השגיאה.

מאגר מרחבי שמות יכול להצהיר רק על משאבים בהיקף מרחב השמות במרחב השמות שאליו המאגר חל.

מוודאים שכל מאגרי מרחבי השמות מכריזים על משאבים בהיקף מרחב השמות בצורה נכונה. לדוגמה, מאגר המאגרים של מרחב השמות shipping יכול לנהל רק משאבים במרחב השמות shipping. הערך של metadata.namespace הוא אופציונלי. כברירת מחדל, סנכרון תצורות מניח שכל המשאבים במאגר מרחב שמות שייכים למרחב השמות הזה.

לדוגמה, אם בהגדרת מאגר השמות shipping הוגדר metadata.namespace: billing, תוצג שגיאה.

בנוסף לווידוא שהמשאבים בהיקף מרחב השמות מוצהרים בצורה נכונה, צריך לוודא שמרחבי השמות מוצהרים במאגר הבסיסי. הדבר נחוץ כי מרחבי שמות הם בהיקף האשכול.

מאגר שמות יכול להכריז על משאב Kptfile אחד לכל היותר.

מסירים את כל משאבי Kptfile חוץ מאחד.

כשמנהלים אובייקטים בכמה מקורות אמת, יכולות להתעורר מחלוקות כשמצהירים על אותו אובייקט (קבוצה תואמת, סוג, שם ומרחב שמות) ביותר ממקור אחד.

לדוגמה, אם אותו אובייקט מנוהל על ידי RootSync ו-RepoSync, ‏ RootSync מנצח. אם RootSync מוחל קודם, RepoSync מדווח על שגיאת סטטוס KNV1060. אם RepoSync מוחל ראשון, RootSync מחליף את האובייקט של RepoSync ו-RepoSync מדווח על שגיאת סטטוס KNV1060 כשהוא רואה את העדכון.

כדי לפתור את הבעיה, מעדכנים את ההגדרה כך שתתאים למקור האמת השני, או מוחקים את האובייקט שגורם לבעיה מאחד המקורות.

הפקודה nomos vet בודקת שגיאות רק במאגר אחד בכל פעם, ולכן היא לא יכולה לזהות את הבעיה הזו.

InvalidRepoSyncError מדווח על הגדרה שגויה של RepoSync. צריך להגדיר את אובייקטי RepoSync בצורה נכונה כדי ש-סנכרון תצורות יסנכרן את התצורה ממאגרי מרחבי שמות.

פועלים לפי ההוראות שבהודעת השגיאה כדי לתקן את שגיאות ההגדרה.

לקובץ Kptfile אין שדה מלאי תקין. קובץ Kptfile צריך לכלול שדה מלאי לא ריק עם מזהה ומרחב שמות.

מציינים את הערכים של .inventory.identifier ושל .inventory.namespace בקובץ Kptfile.

נמצאו קבצי Kpt במאגר השורש. קבצים מסוג Kptfile נתמכים רק במאגרי מידע בהיקף מרחב שמות.

מסירים את קובצי ה-Kptfiles ממאגר הבסיס.

לא ניתן היה לנתח את הקובץ api-resources.txt במאגר.

פועלים לפי ההוראות שמופיעות בהודעת השגיאה. לדוגמה, יכול להיות שתצטרכו להריץ מחדש את הפקודה kubectl api-resources > api-resources.txt.

הפורמט של CustomResourceDefinition שגוי.

צריך לבדוק את השדה שצוין בהודעת השגיאה ולוודא שהערך שלו בפורמט הנכון.

אובייקט config חייב להכריז רק על הערת cluster-selector. השגיאה הזו מתרחשת כשקיימות גם ההערה מדור קודם (configmanagement.gke.io/cluster-selector) וגם ההערה בתוך השורה (configsync.gke.io/cluster-name-selector).

מסירים אחת מההערות מהשדה metadata.annotations.

הכלי להשוואה לא מצליח לקודד את השדות המוצהרים לפורמט שתואם להחלה בצד השרת. יכול להיות שהסיבה לכך היא סכימה לא מעודכנת.

בודקים את השדה שצוין בהודעת השגיאה ומוודאים שהוא תואם לסכימה של סוג המשאב.

תהליך העיבוד נתקל בבעיה שדורשת פעולה מצד המשתמש.

אם מאגר Git מכיל הגדרות Kustomize, אבל לא קיים קובץ kustomization.yaml בספריית הסנכרון של Git, אפשר להוסיף את kustomization.yaml לספריית הסנכרון כדי להפעיל את תהליך העיבוד, או להסיר את kustomization.yaml מכל ספריות המשנה כדי לדלג על העיבוד.

אם השגיאה נגרמת בגלל כשלים ב-kustomize build, יכול להיות שתצטרכו לעדכן את הגדרות Kustomize במאגר Git. אפשר להשתמש בפקודות nomos hydrate ו-nomos vet כדי לראות תצוגה מקדימה של ההגדרות המעודכנות ולאמת אותן באופן מקומי. אם ההגדרות המעודכנות מוצגות בצורה תקינה, אפשר לשלוח קומיט חדש כדי לתקן את השגיאה KNV1068.

אם מתרחשת שגיאת kustomize build כשמושכים בסיסים מרוחקים ממאגרי מידע ציבוריים, צריך להגדיר את spec.override.enableShellInRendering ל-true.

תהליך ה-reconciler סיים את ההתאמה של אובייקט RootSync או RepoSync משלו. אובייקט RootSync יכול לנהל אובייקטים אחרים מסוג RootSync ו-RepoSync. אובייקט RepoSync יכול לנהל אובייקטים אחרים מסוג RepoSync, אבל הוא לא יכול לנהל את עצמו.

מסירים את אובייקט RootSync או RepoSync ממקור האמת שממנו האובייקט מסתנכרן.

קריאת מערכת ברמת מערכת ההפעלה שמנסה לגשת למשאב של מערכת קבצים נכשלת.

השגיאה הזו כנראה נגרמת בגלל הגדרת YAML לא תקינה או בגלל שימוש בתווים מיוחדים. אם יש לכם הגדרת YAML לא תקינה, תופיע הודעת שגיאה דומה להודעה הבאה: KNV2001: yaml: line 2: did not find expected node content path:.... כדי לפתור את הבעיה, צריך לבדוק את קובצי ה-YAML ולפתור בעיות בהגדרות. הסיבה לכך יכולה להיות הגדרת YAML כלשהי במאגר.

אם שם הקובץ או הנתיב מכילים תווים מיוחדים, יכול להיות שתופיע הודעת שגיאה בדומה ל-KNV2001: yaml: control characters are not allowed path:/repo/source/.../._pod.yaml. בדוגמה הזו, ._pod.yaml הוא לא שם קובץ תקין. כדי לפתור את הבעיה הזו, צריך להסיר תווים מיוחדים משמות הקבצים או הנתיבים.

בקשה לגישה לשרת Kubernetes API נכשלת.

בקשות ל-Kubernetes API יכולות להיכשל מסיבות רבות. היא מופיעה בדרך כלל מהסיבות הבאות:

  • שגיאה באיתור API
  • פסק זמן (timeout) של בקשה או תגובה בצד הלקוח או בצד השרת
  • שגיאה שקשורה לזהות, לאימות או להרשאה
  • שגיאה בחיבור לרשת
  • הבקשה נדחתה על ידי ה-webhook
  • ה-Webhook לא תקין או שהשרת של ה-API לא יכול לגשת אליו

אחרי רוב השגיאות בשרת ה-API, סנכרון תצורות מנסה שוב. חלק מהבעיות הן זמניות ויסתדרו מעצמן, אבל ברוב המקרים נדרשת התערבות של המשתמש כדי לפתור אותן. שגיאות בשרת API נגרמות לעיתים רחוקות על ידי סנכרון תצורות עצמו, אבל אם אתם חושדים שזה המקרה, אתם יכולים לשלוח דוח על באג.

קריאת מערכת כללית ברמת מערכת ההפעלה נכשלת.

‫סנכרון תצורות לא יכול לקרוא ממקור האמת.

יש כמה בעיות שיכולות לגרום לשגיאה הזו. כדי לפתור בעיות בחיבור למקור האמת, אפשר לעיין במאמר פתרון בעיות בחיבור למקור האמת. כדי לקרוא על בעיות מוכרות שגורמות לשגיאות KNV2004, אפשר לעיין במאמר בנושא בעיות מוכרות.

סנכרון תצורות מתחרה עם בקר אחר על משאב. התנגשויות כאלה צורכות כמות גדולה של משאבים ויכולות לפגוע בביצועים. לקבלת טיפים לאבחון ולפתרון של בעיות שקשורות להשתלטות על בקרים, אפשר לעיין במאמר פתרון בעיות שקשורות להשתלטות על בקרים.

כדי למנוע מחיקה מקרית, סנכרון תצורות לא מאפשר להסיר את כל מרחבי השמות או את המשאבים ברמת האשכול בהתחייבות אחת.

אם ה-webhook של סנכרון תצורות admission מושבת, צריך לבטל את הקומיט שמוחק את כל המשאבים.
אם ה-webhook של סנכרון תצורות admission מופעל, יכול להיות שמרחב השמות שלכם נתקע בתהליך הסיום. כדי לפתור את הבעיה, פועלים לפי השלבים הבאים:

  1. משביתים את סנכרון תצורות ומחכים עד שכל המשאבים ינוקו או יהיו במצב יציב. לדוגמה, אפשר להריץ את הפקודה kubectl get ns כדי לוודא שמרחבי השמות נמחקו.
  2. הפעלה מחדש של סנכרון התצורות
  3. ביטול השינוי (revert) של הקומיט שמוחק את כל המשאבים.

כדי למחוק את כל המשאבים שמנוהלים, מבצעים את השלבים הבאים:

  1. מסירים את כל המשאבים שמוגבלים למרחב שמות או לאשכול, חוץ מאחד, בהתחייבות הראשונה, ומאפשרים ל-סנכרון תצורות לסנכרן את השינויים האלה.
  2. מסירים את המשאב האחרון בהתחייבות שנייה.

משאב בשרת ה-API משתנה או נמחק בזמן ש-סנכרון תצורות מנסה לשנות אותו.

אם השגיאה הזו מופיעה רק בהפעלה או לעיתים רחוקות, אפשר להתעלם ממנה.

אם השגיאות האלה לא זמניות (כלומר, הן נמשכות כמה דקות), יכול להיות שמדובר בבעיה חמורה וnomos status מדווח על התנגשויות בין בקרי.

זו שגיאה כללית שמציינת ש-סנכרון תצורות לא הצליח לסנכרן חלק מההגדרות עם האשכול.

יש כמה בעיות שיכולות לגרום לשגיאה הזו. לקבלת טיפים לפתרון בעיות נפוצות בסנכרון, אפשר לעיין במאמר פתרון בעיות בסנכרון.

זו שגיאה כללית שמציינת בעיה במשאב או בקבוצת משאבים.

הודעת השגיאה כוללת את המשאבים הספציפיים שגרמו לשגיאה. כדאי לעיין במקורות המידע הבאים.

כדי להמשיך, נדרש משאב ספציפי, אבל המשאב לא נמצא. לדוגמה, ConfigManagement Operator ניסה לעדכן משאב, אבל המשאב נמחק בזמן חישוב העדכון.

יוצרים או משחזרים את המשאב החסר.

השגיאה הזו מציינת שנמצא יותר ממופע אחד של APIResource בהקשר שבו מותר רק מופע אחד של APIResource. לדוגמה, צריך להיות רק משאב אחד של Repo באשכול.

מסירים את 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.

הודעת השגיאה הפעולה המומלצת

Error: cannot build exporters: error creating stackdriver exporter: cannot configure Google Cloud metric exporter: stackdriver: google: could not find default credentials.

Error: Permission monitoring.timeSeries.create denied (or the resource may not exist).

אי אפשר ליצור כלי ייצוא

אם לרכיב ב-Open Telemetry Collector אין גישה לחשבון השירות שמוגדר כברירת מחדל באותו מרחב שמות, יכול להיות שתבחינו שה-Pod‏ otel-collector ב-config-management-monitoring נמצא בסטטוס CrashLoopBackoff, או שתראו הודעת שגיאה שדומה לאלה שמופיעות ברשימה.

הבעיה הזו מתרחשת בדרך כלל כשאיחוד זהויות של עומסי עבודה ל-GKE מופעל באשכול.

כדי לפתור את הבעיה, פועלים לפי ההוראות שבקטע מעקב אחרי סנכרון תצורות כדי להעניק הרשאת כתיבה של מדדים לחשבון השירות שמוגדר כברירת מחדל.

אם השגיאה נמשכת אחרי הגדרת ה-IAM, צריך להפעיל מחדש את otel-collector Pod כדי שהשינויים ייכנסו לתוקף.
אם אתם משתמשים בפתרון מותאם אישית לניטור, אבל יצרתם עותק של ConfigMap שמוגדר כברירת מחדל, כדאי לבדוק ולבצע מיזוג מחדש של כל ההבדלים.otel-collector-googlecloud

server certificate verification failed. CAfile:/etc/ca-cert/cert CRLfile: none

אימות אישור השרת נכשל

אם מאגר הנתונים git-sync, helm-sync או oci-sync לא מצליח לאחזר ארטיפקטים, יכול להיות שתופיע הודעת השגיאה הזו.

ההודעה הזו מציינת שהשרת מוגדר עם אישורים מרשות אישורים (CA) מותאמת אישית. עם זאת, ה-CA המותאם אישית לא מוגדר בצורה תקינה, ולכן הקונטיינר לא מצליח לאחזר נתונים מהשרת.

כדי לפתור את הבעיה, קודם צריך לוודא שהשדה caCertSecretRef הוגדר בצורה נכונה באובייקט RootSync או RepoSync, וגם לבדוק אם אובייקט הסוד קיים.

לאחר מכן, אם השדה הוגדר ואובייקט הסוד קיים, מוודאים שאובייקט הסוד מכיל את האישורים המלאים.
הגישות לבדיקת האישורים המלאים עשויות להשתנות בהתאם לאופן הקצאת הרשאות ל-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 הנדרשים.

חזרה למעלה

המאמרים הבאים