בעיות מוכרות ב-Config Sync

בדף הזה מפורטות בעיות ידועות בגרסאות נתמכות של Config Sync.

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

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

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

בוחרים את הגרסה של Config Sync:

בוחרים את קטגוריית הבעיה:

אפשר גם לסנן את הבעיות הידועות:

קטגוריה גרסה מזוהה גרסה קבועה הבעיה והפתרון העקיף
תקינות הרכיבים 1.24.0

תאי Config Sync נתקעים במהלך שדרוג לגרסה 1.24.0 באשכולות שהועברו ל-Hub

אחרי שמשדרגים ל-Config Sync 1.24.0, יכול להיות ששדות שהוסרו (כמו readinessProbe ובדיקות תקינות של otel-agent sidecar) יישארו באשכולות שהועברו לניהול Hub. רכיב בדיקת התקינות שמאחורי readinessProbe מוסר, ולכן מאגר התגים otel-agent לא מופעל, מה שגורם להשהיה של Config Sync Pods.

הבעיה הזו משפיעה רק על אשכולות שבהם Config Sync הותקן בעבר באופן ידני באמצעות kubectl, ואחר כך הועבר לניהול דרך ה-Hub. הכשל הזה מתרחש כי תהליך ההעברה מטפל בניהול השדות באופן שונה מהתקנה חדשה. במקרה של אשכולות שהותקנו באופן ידני או אשכולות שהותקנו בהתחלה על ידי Hub, השדות מוסרים כמצופה.

פתרון עקיף:

כדי לפתור את הבעיה, צריך לפעול לפי ההוראות להסרת Config Sync, ואז להתקין מחדש את Config Sync דרך ה-Hub.

מדדים 1.5.0 1.21.0

תוקן: מדדים שדווחו לגבי חבילות שנמחקו

אם מוחקים אובייקט RootSync או RepoSync, אבל לא מוחקים את אובייקט ResourceGroup עם אותו שם, Config Sync ממשיך לדווח על המדדים הבאים של אובייקט ResourceGroup:

  • rg_reconcile_duration_seconds
  • resource_group_total
  • resource_count
  • ready_resource_count
  • resource_ns_count
  • cluster_scoped_resource_count
  • crd_count
  • kcc_resource_count
  • pipeline_error_observed
האובייקט ResourceGroup נמחק באופן אוטומטי רק אם הפצת המחיקה הופעלה לפני המחיקה של האובייקט RootSync או RepoSync.

פתרון עקיף:

מחיקת האובייקט ResourceGroup:

kubectl delete resourcegroup RESOURCE_GROUP_NAME -n config-management-system

מחליפים את RESOURCE_GROUP_NAME בשם של ResourceGroup האובייקט שצריך למחוק. מידע נוסף על ResourceGroupמתן שמות זמין במאמר ResourceGroup Controller ו-ResourceGroup objects.

תקינות הרכיבים 1.15.0

אי אפשר לתזמן את כלי ההתאמה

הכמות של המשאבים שנדרשת ל-Config Sync משתנה בהתאם להגדרות של RootSync או RepoSync. הגדרות מסוימות דורשות יותר משאבים מאחרות.

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

אם אתם משתמשים באשכולות GKE במצב רגיל, בקשות המשאבים של רכיב ה-reconciler מוגדרות כנמוכות מאוד. ההגדרה הזו נבחרה בניסיון לאפשר תזמון, גם אם הוא יוביל להגבלת קצב העברת הנתונים ולביצועים איטיים, כדי ש-Config Sync יפעל באשכולות קטנים ובצמתים קטנים. עם זאת, באשכולות GKE Autopilot, בקשות ה-reconciler מוגדרות גבוה יותר, כדי לייצג באופן מציאותי יותר את השימוש במהלך הסנכרון.

פתרון עקיף:

ב-GKE Autopilot או ב-Standard עם הקצאת הרשאות אוטומטית לצמתים, המערכת אמורה לראות כמה משאבים נדרשים וליצור צמתים בגודל המתאים כדי לאפשר תזמון. אבל אם אתם מגדירים את הצמתים או את גודלי המופעים של הצמתים באופן ידני, יכול להיות שתצטרכו לשנות את ההגדרות האלה כדי להתאים אותן לדרישות המשאבים של ה-Pod של כלי ההתאמה.

מדדים 1.15.0

הייצוא נכשל. ההרשאה נדחתה

כברירת מחדל, כש-reconciler-manager מזהה Application Default Credentials,‏ otel-collector מוגדר לייצא מדדים אל Prometheus,‏ Cloud Monitoring ו-Monarch.

פתרון עקיף:

otel-collector מתעד שגיאות אם לא הגדרתם את Cloud Monitoring או התאמתם אישית את מסנני המדדים ו-Cloud Monarch.

מדדים 1.15.0

קריסת otel-collector עם הגדרה בהתאמה אישית

אם מנסים לשנות או למחוק אחד מ-ConfigMap של ברירת המחדל, otel-collector או otel-collector-google-cloud, יכול להיות ש-otel-collector יציג שגיאה או יקרוס כי הוא לא יוכל לטעון את ה-ConfigMap הנדרש.

פתרון עקיף:

כדי להתאים אישית את הגדרות הייצוא של המדדים, יוצרים ConfigMap בשם otel-collector-custom במרחב השמות config-management-monitoring.

תיקון שגיאות

התנגשות בין הגדרות ב-Config Sync

יכול להיות ש-Config Sync נמצא במצב של מאבק בין בקרי. עם עצמו. הבעיה הזו מתרחשת אם מגדירים ערך ברירת מחדל לשדה אופציונלי של משאב במאגר Git. לדוגמה, הגדרת apiGroup: "" לנושא של RoleBinding מפעילה את זה כי השדה apiGroup: "" הוא אופציונלי ומחרוזת ריקה היא ערך ברירת המחדל.apiGroup ערכי ברירת המחדל של שדות מסוג מחרוזת, בוליאני ומספר שלם הם "", false ו-0 (בהתאמה).

פתרון עקיף:

מסירים את השדה מהצהרת המשאב.

תיקון שגיאות

התנגשות בין Config Sync לבין משאבים של Config Connector

יכול להיות ש-Config Sync ייראה כאילו הוא נלחם ב-Config Connector על משאב, למשל StorageBucket. הבעיה הזו מתרחשת אם לא מגדירים את הערך של שדה אופציונלי במשאב spec.lifecycleRule.condition.withState במקור האמת.

פתרון עקיף:

כדי להימנע מהבעיה הזו, צריך להוסיף את השדה withState=ANY להצהרת המשאב. אפשרות אחרת היא להפסיק את השימוש במשאב ואז להשתמש בו שוב עם הערת cnrm.cloud.google.com/state-into-spec: absent.

מקור מידע אמין 1.20.0 1.21.3

git-sync container crash loops after a Git lock file is orphaned

אם אתם רואים שהלולאה של קריסת מאגר התגים git-sync כוללת שגיאות שדומות לאלה שמופיעות ביומן של מאגר התגים git-sync, יכול להיות שהפעלה קודמת של git נכשלה והשאירה קובץ נעילה יתום במאגר התגים:

    {"logger":""..."msg":"repo contains lock file","error":null,"path":"/repo/source/.git/shallow.lock"}
    ...runtime error: invalid memory address or nil pointer dereference
    

פתרון עקיף:

כדי לעקוף את הבעיה הזו, מפעילים מחדש את ה-Pod של הכלי לתיאום שהושפע מהבעיה כדי לתת לו נפח זמני חדש:

    kubectl delete pod -n config-management-system RECONCILER_NAME
    
מחליפים את RECONCILER_NAME בשם של האובייקט RootSync או RepoSync.
סנכרון 1.7.0 1.21.0

תוקן: הערת שינוי מסוג 'התעלמות' לא כובדה

באג בכלי Config Sync reconciler גורם לו להחיל שינויים מהגדרות מוצהרות גם כשההערה client.lifecycle.config.k8s.io/mutation קיימת. יכול להיות שהפעולה הזו תגרום להחלפת הסטטוס של האובייקט באשכול.

פתרון עקיף:

אפשר להפסיק לנהל את האובייקט המנוהל על ידי הוספת ההערה configmanagement.gke.io/managed: disabled. עם זאת, השבתת הניהול מונעת מ-Config Sync ליצור מחדש את האובייקט אם הוא נמחק מהאשכול. בנוסף, היא מונעת החלה של עדכונים נוספים במקור האמת.

סנכרון 1.15.0

מספר גבוה של בקשות לא יעילות של PATCH ביומני הביקורת

הכלי לתיקון שגיאות של Config Sync משתמש ב-Dry-run כדי לזהות סטיות. לכן, יכול להיות שבקשות PATCH יופיעו ביומן הביקורת גם אם PATCH לא נשמר, כי ביומן הביקורת אין הבחנה בין הרצות ניסיון לבין בקשות רגילות.

פתרון עקיף:

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

תוקן: הכתיבה של המלאי המעודכן לאשכול נכשלה

אם Config Sync לא מצליח לעדכן את הסטטוס של אובייקט ResourceGroup, יכול להיות שתיתקלו בשגיאה לסירוגין ביומני ה-reconciler, שדומה לשגיאה הבאה:

    KNV2009: task failed (action: "Inventory", name: "inventory-set-0"): failed to write updated inventory to cluster: Operation cannot be fulfilled on resourcegroups.kpt.dev "root-sync": the object has been modified; please apply your changes to the latest version and try again
    

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

פתרון עקיף:

אין פתרון עקיף לבעיה הזו. השגיאה אמורה להיפתר מעצמה.

Terraform Terraform version 5.41.0

אי אפשר להתקין או לשדרג את Config Sync באמצעות Terraform

ב-Terraform גרסה 5.41.0 נוסף שדה חדש למשאב google_gke_hub_feature_membership: config_sync.enabled. ערך ברירת המחדל של השדה הזה הוא false, ולכן אם השדה הזה לא מוגדר במפורש ל-true, התקנות או שדרוגים של Config Sync נכשלים כשמשתמשים ב-Terraform בגרסה 5.41.0 ואילך. יכול להיות שתוצג גם הודעת שגיאה עם הכיתוב git spec not included in configmanagement spec אם הבעיה הזו מתרחשת.

פתרון עקיף:

  • אם משתמשים במשאב google_gke_hub_feature_membership, צריך להגדיר באופן ידני את config_sync.enabled לערך true.
  • אם אתם משתמשים במודול המשנה acm, מומלץ לעבור לדרך חלופית להתקנת Config Sync. אם אין לכם אפשרות לעבור לגרסה הזו, אתם צריכים לשדרג לגרסה v33.0.0.

מסוףGoogle Cloud

שגיאות לגבי נתונים חסרים בלוח הבקרה של Config Sync ב Google Cloud מסוף

יכול להיות שיוצגו לכם שגיאות כמו 'נתונים חסרים' או 'פרטי הכניסה של האשכול לא תקינים' לגבי אשכולות של Config Sync בלוחות בקרה ב Google Cloud מסוף. הבעיה הזו יכולה להתרחש אם לא נכנסתם לאשכולות GDC‏ (VMware) או GDC‏ (bare metal).

פתרון עקיף:

אם אתם רואים שגיאות מהסוגים האלה במסוף באשכולות GDC ‏ (VMware) או GDC ‏ (bare metal), ודאו שאתם מחוברים לאשכולות באמצעות GKE Identity Service או connect gateway. Google Cloud

סנכרון 1.21.0

תוקן: Config Sync מונע עדכונים של משאבים שהוצאו משימוש

לפני גרסה 1.21.0, אובייקט RootSync או RepoSync שנמחק יכול להשאיר אחריו כמה תוויות והערות ש-Config Sync משתמש בהן כדי לעקוב אחרי אובייקטים של משאבים.

התוויות וההערות האלה יכולות לגרום לתופעות הלוואי הבאות אחרי שמוחקים אובייקט RootSync או RepoSync:

  • אובייקטים אחרים של RepoSync לא יכולים לקבל בעלות על אובייקטים שנוהלו בעבר.
  • אם מניעת סחיפה מופעלת, יכול להיות ש-Config Sync ידחה שינויים במשאבים נטושים.

כלי שורת הפקודה nomos 1.17.0

‫nomos CLI לא תומך בתוסף האימות oidc

יכול להיות שיופיעו שגיאות כמו no Auth Provider found for name "oidc" כשמשתמשים בכלי nomos של שורת הפקודה. הבעיה הזו עלולה להתרחש כשמשתמשים בתוסף האימות oidc.

פתרון עקיף:

אין פתרון עקיף. תוסף האימות oidc יתווסף מחדש בגרסה עתידית.

חזרה למעלה

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

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