מעקב אחרי אובייקטים של RootSync ו-RepoSync

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

צפייה בהתחייבויות מסונכרנות

כדי לבדוק איזה קומיט מסונכרן עם האשכול, בודקים את השדה .status.sync באובייקט RootSync או RepoSync.

  • כדי לראות את הקומיטים שסונכרנו לאובייקט RootSync, מריצים את הפקודה הבאה:

    kubectl get rootsync ROOT_SYNC_NAME -n config-management-system
    

    מחליפים את ROOT_SYNC_NAME בשם של האובייקט RootSync.

  • כדי להציג את השינויים שסונכרנו לאובייקט RepoSync, מריצים את הפקודה הבאה:

    kubectl get reposync REPO_SYNC_NAME -n REPO_SYNC_NAMESPACE
    

    מחליפים את מה שכתוב בשדות הבאים:

    • REPO_SYNC_NAME: השם של אובייקט RepoSync.
    • REPO_SYNC_NAMESPACE: מרחב השמות שבו יצרתם את מאגר מרחב השמות.

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

NAME        RENDERINGCOMMIT                            SOURCECOMMIT                               SYNCCOMMIT
root-sync   66882815f0ef5517df27e864fb1315e97756ab72   66882815f0ef5517df27e864fb1315e97756ab72   66882815f0ef5517df27e864fb1315e97756ab72

הערך בעמודה RENDERINGCOMMIT הוא הקומיט שעובר עיבוד על ידי hydration-controller. אם לא צריך לבצע עיבוד, הערך יהיה זהה לערך בעמודה SOURCECOMMIT. הערך בעמודה SOURCECOMMIT הוא הקומיט ממקור האמת שצריך לסנכרן עם האשכול. הערך בעמודה SYNCCOMMIT הוא הקומיט שנפרס באשכול. אם שני הערכים בעמודות SOURCECOMMIT ו-SYNCCOMMIT זהים, המשמעות היא שההתחייבות הצפויה נפרסה באשכול.

אישור שהמשאבים בהתחייבות תואמים

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

לאובייקט ResourceGroup יש מרחב שמות ושם זהים לאובייקט RootSync או RepoSync. לדוגמה, לאובייקט RootSync עם השם root-sync במרחב השמות config-management-system, האובייקט התואם ResourceGroup הוא גם root-sync במרחב השמות config-management-system.

  • כדי לקבל את אובייקט ResourceGroup עבור אובייקט RootSync:

    kubectl get resourcegroup ROOT_SYNC_NAME -n config-management-system -o yaml
    
  • כדי לקבל את אובייקט ResourceGroup עבור אובייקט RepoSync:

    kubectl get resourcegroup REPO_SYNC_NAME -n REPO_SYNC_NAMESPACE -o yaml
    

    מחליפים את מה שכתוב בשדות הבאים:

    • ROOT_SYNC_NAME: השם של אובייקט ResourceGroup שרוצים לחפש.
    • REPO_SYNC_NAME: השם של אובייקט ResourceGroup שרוצים לחפש.
    • REPO_SYNC_NAMESPACE: השם של אובייקט ResourceGroup שרוצים לחפש.

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

  • הערך של .status.observedGeneration שווה לערך של השדה .metadata.generation באובייקט ResourceGroup.
  • התנאי Stalled הוא status של "False".
  • לכל פריט בשדה .status.resourceStatuses יש מאפיין actuation עם הערך Succeeded, מאפיין reconcile עם הערך Succeeded ומאפיין status עם הערך Current.

הצגת שגיאות

באובייקטים RootSync ו-RepoSync נעשה שימוש בשדה status כדי לעקוב אחרי שגיאות שמתגלות כשמסנכרנים את ההגדרות ממקור האמת לאשכול.

  • כדי לראות את הסטטוס של אובייקט RootSync, מריצים את הפקודה הבאה:

    kubectl get rootsync ROOT_SYNC_NAME -n config-management-system -o yaml
    

    מחליפים את ROOT_SYNC_NAME בשם של אובייקט RootSync.

  • כדי לראות את הסטטוס של אובייקט RepoSync, מריצים את הפקודה הבאה:

    kubectl get reposync REPO_SYNC_NAME -n NAMESPACE -o yaml
    

    מחליפים את מה שכתוב בשדות הבאים:

    • REPO_SYNC_NAME: השם של אובייקט RepoSync.
    • NAMESPACE: מרחב השמות שבו יצרתם את מאגר מרחב השמות.

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

צפייה בפרטי אובייקט

כדי לראות את הפרטים של האובייקטים RootSync ו-RepoSync ולקבל מידע נוסף על שגיאות אפשריות, משתמשים בפקודה kubectl describe.

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

כדי לקבל פורמט קריא יותר, מוסיפים את -o yaml לפקודות הבאות כדי להמיר את הפלט ל-YAML. הפורמט הזה שימושי במיוחד כשצריך לבדוק פרמטרים, הערות או מפרטים של משאבים ספציפיים.

  • כדי לראות את הפרטים של אובייקט RootSync, מריצים את הפקודה הבאה:

    kubectl describe rootsync ROOT_SYNC_NAME -n config-management-system
    

    מחליפים את ROOT_SYNC_NAME בשם של אובייקט RootSync.

  • כדי לראות את הפרטים של אובייקט RepoSync, מריצים את הפקודה הבאה:

    kubectl describe reposync REPO_SYNC_NAME -n NAMESPACE
    

    מחליפים את מה שכתוב בשדות הבאים:

    • REPO_SYNC_NAME: השם של אובייקט RepoSync.
    • NAMESPACE: מרחב השמות שבו יצרתם את מאגר מרחב השמות.

איך בודקים אם משאב מוכן

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

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

  • כדי לראות את סטטוס ההתאמה לאובייקט RootSync, מריצים את הפקודה הבאה:

    kubectl get resourcegroup.kpt.dev ROOT_SYNC_NAME -n config-management-system -o yaml
    

    מחליפים את ROOT_SYNC_NAME בשם של אובייקט RootSync.

  • כדי לראות את סטטוס ההתאמה לאובייקט RepoSync, מריצים את הפקודה הבאה:

    kubectl get resourcegroup.kpt.dev REPO_SYNC_NAME -n NAMESPACE -o yaml
    

    מחליפים את מה שכתוב בשדות הבאים:

    • REPO_SYNC_NAME: השם של אובייקט RepoSync.
    • NAMESPACE: מרחב השמות שבו יצרתם את מאגר מרחב השמות.

בפלט, מוצגים כל הסטטוסים של משאבי ResourceGroup. לדוגמה, הפלט הבא מראה שפריסת nginx-deployment מוכנה:

resourceStatuses:
- group: apps
  kind: Deployment
  name: nginx-deployment
  namespace: default
  status: Current

צפייה ביומנים

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

  • כדי לראות את היומנים של תהליך ההתאמה RootSync או RepoSync, מריצים את הפקודה הבאה:

    kubectl logs -n config-management-system deployment/RECONCILER_NAME CONTAINER_NAME
    

    מחליפים את מה שכתוב בשדות הבאים:

    • RECONCILER_NAME: שם ה-reconciler של האובייקט RootSync או RepoSync.

      • במקרה של RootSync, שם הכלי להשוואת נתונים הוא root-reconciler-ROOT_SYNC_NAME או root-reconciler אם השם של RootSync הוא root-sync.

      • ב-RepoSync, שם ה-reconciler הוא ns-reconciler-NAMESPACE-REPO_SYNC_NAME-REPO_SYNC_NAME_LENGTH או ns-reconciler-NAMESPACE אם השם של RepoSync הוא repo-sync, כאשר NAMESPACE הוא מרחב השמות שבו יצרתם את האובייקט RepoSync.

    • CONTAINER_NAME: שם המאגר חייב להיות אחד מהערכים הבאים: reconciler,‏ git-sync,‏ hydration-controller,‏ oci-sync או helm-sync. מידע נוסף על מאגרי התגים האלה זמין במאמר בנושא מאגרי תגים של כלי ההתאמה.

הגדרת רמת היומן של כלי הגישור RootSync או RepoSync

כדי לכלול מידע נוסף ביומני המאגר, מגדירים את רמת הפירוט של היומן. ברוב מאגרי התגים, ערך ברירת המחדל של רמת הפירוט של היומן הוא 0. החריגים לכך הם מאגרי התגים git-sync ו-otel-agent, שערך ברירת המחדל שלהם הוא 5.

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

כדי לשנות את דרגת המלל של יומן השינויים, משתמשים בשדה .spec.override.logLevels כמו בדוגמה הבאה:

apiVersion: configsync.gke.io/v1beta1
kind: RootSync
metadata:
  name: root-sync
  namespace: config-management-system
spec:
  override:
    logLevels:
    - containerName: "reconciler"
      logLevel: 0
    - containerName: "git-sync"
       logLevel: 10

הערך בשדה containerName חייב להיות אחד מהערכים הבאים: reconciler,‏ git-sync,‏ hydration-controller,‏ oci-sync או helm-sync.

כדי לוודא שרמת הפירוט של היומן מוגדרת, מריצים את הפקודה הבאה:

kubectl get deployment.apps/root-reconciler -n config-management-system -o yaml

רמת הפירוט של היומן מופיעה כאחד מ-args בתוך spec.template.spec.containers[] ונראית כך: -v=0, כאשר 0 היא רמת הפירוט הנוכחית של היומן. בדוגמה הזו, ערך של 0 בפירוט היומן יגרום לרישום רק של אירועים קריטיים.