בדף הזה מוסבר איך לפתור בעיות שמתרחשות כש-Config Sync לא מצליח ליצור חיבור למקור האמת.
בעיות באימות
אם האימות נכשל, Config Sync לא יכול להתחבר למקור האמת. בקטעים הבאים מוסבר איך לפתור כמה בעיות שקשורות לאימות.
אימות אישור השרת נכשל עבור שרתי Git
החיבורים לשרתי Git פרטיים משתמשים ב-TLS כדי לאמת את האותנטיות של השרת. כדי לבצע את האימות הזה, צריך לספק אישור שמזהה את רשות אישורי הבסיס ואת כל רשויות האישורים הביניים שמאשרות את הזהות של שרת Git. אם האימות של אישור שרת Git נכשל, המשמעות היא שלא ניתן לבסס את שרשרת האמון.
אם קיבלתם שגיאה שמציינת שאימות אישור השרת נכשל, יכול להיות שאחת מהבעיות הבאות היא הסיבה לכך:
- לא צוין אישור של רשות אישורים (CACert). כדי לפתור את הבעיה הזו, מוסיפים את ה-CACert כסוד ומפנים אל הסוד בשדה
spec.git.caCertSecretRefשל אובייקטים מסוגRootSyncאוRepoSync. - ה-CACert לא הושלם. כדי לפתור את הבעיה, צריך לתקן את הסוד של CACert כך שיכיל את שרשרת האמון המלאה, כולל אישורי הבסיס וכל אישורי הביניים.
- ה-CACert לא תקין. כדי לפתור את הבעיה, צריך להוריד את שרשרת האישורים מהקישור שצוין באישור שהוצג על ידי השרת, ואז לעדכן את הסוד של CACert.
אי אפשר לטעון את Git Secret
אם אתם מקבלים את השגיאה הבאה כשמאגר התגים git-sync מנסה לסנכרן מאגר עם סוד, סימן שהסוד של Git לא הועלה בהצלחה למאגר git-sync:
KNV2004: unable to sync repo Error in the git-sync container: ERROR: can't configure SSH: can't access SSH key: stat /etc/git-secret/ssh: no such file or directory: lstat /repo/root/rev: no such file or directory
יכול להיות שהשגיאה נגרמת בגלל מעבר מסוג האימות של מאגר Git none, gcenode או gcpserviceaccount לסוגים אחרים שדורשים סוד.
כדי לפתור את הבעיה, מריצים את הפקודות הבאות כדי להפעיל מחדש את Reconciler Manager ואת Reconcilers:
# Stop the reconciler-manager Pod. The reconciler-manager Deployment spins
# up a new Pod which can pick up the latest `spec.git.auth`.
kubectl delete po -l app=reconciler-manager -n config-management-system
# Delete the reconciler Deployments. The reconciler-manager recreates the
# reconciler Deployments with correct volume mount.
kubectl delete deployment -l app=reconciler -n config-management-system
בעיות בהגדרה
לרוב, בעיות בהגדרות גורמות לכך ש-Config Sync לא מצליח להתחבר למקור האמת. בקטעים הבאים מוסבר איך לזהות ולפתור בעיות נפוצות בהגדרות.
שם התרשים לא תקין
כשמסנכרנים ממאגר Helm, צריך לוודא שהערך של spec.helm.chart מוגדר בצורה נכונה. שם התרשים לא מכיל את שם המאגר, את גרסת התרשים או את .tgz. אפשר לאמת את שם התרשים באמצעות הפקודה helm
template.
ספריית הגדרות לא תקינה
בודקים את ההגדרות כדי לוודא שאין טעויות, כמו ערך שגוי של policyDir באובייקט ConfigManagement או spec.git.dir או spec.oci.dir באובייקט RootSync או RepoSync. הערך של הספרייה כלול בכל הודעות השגיאה של KNV2004 שאתם מקבלים. צריך לוודא שהערך תואם למאגר Git או לתמונת OCI.
ענף Git לא תקין
בודקים את היומנים של מאגר git-sync אם יש שגיאה כמו Remote branch
BRANCH_NAME not found in upstream origin או warning: Could
not find remote branch BRANCH_NAME to clone.
אם לא מציינים את הענף, ברירת המחדל היא master.
פרטי כניסה לא תקינים של Git, Helm או OCI
בודקים ביומני Config Sync את הקונטיינר git-sync, helm-sync או oci-sync כדי לראות אם מופיעה אחת מהשגיאות הבאות:
Could not read from remote repository. Ensure you have the correct access rights and the repository exists.Invalid username or password. Authentication failed for ...401 Unauthorized
אם מדובר במאגר Git, צריך לוודא שפרטי הכניסה ל-Git והסוד git-creds מוגדרים בצורה נכונה.
במאגר Helm, צריך לוודא שפרטי הכניסה של Helm מוגדרים בצורה נכונה.
בתמונות OCI, צריך לוודא שההגדרות של פרטי הכניסה ל-OCI תקינות.
כתובת URL לא תקינה של מאגר Git
בודקים אם יש שגיאה ביומנים של מאגר התגים git-sync, כמו Repository not
found.
בודקים שמשתמשים בפורמט הנכון של כתובת ה-URL. לדוגמה, אם אתם משתמשים בצמד מפתחות SSH כדי לאמת את מאגר ה-Git, ודאו שכתובת ה-URL שאתם מזינים עבור מאגר ה-Git כשאתם מגדירים את Config Sync משתמשת בפרוטוקול SSH.
כתובת URL לא תקינה של מאגר Helm
בודקים אם יש שגיאה ביומנים של מאגר התגים helm-sync, כמו ...not a
valid chart repository. אפשר לאמת את כתובת ה-URL של מאגר Helm באמצעות הפקודה helm
template.
כתובת URL לא תקינה של מאגר OCI
ערך לא תקין בשדה spec.oci.image או spec.oci.dir של אובייקט RootSync או RepoSync עלול לגרום לבעיות בחיבור. צריך לבדוק שהערכים האלה נכונים. לדוגמה, אם אתם מסנכרנים ממאגר OCI, כתובת ה-URL צריכה להתחיל ב-oci://.
אפשר גם לעיין ביומנים של מאגר התגים oci-sync לקבלת מידע נוסף.
בעיות ברשת
אם אתם חושדים שהבעיה קשורה לרשת של האשכול, כדאי להתחיל עם השלבים האלה לפתרון בעיות.
לא ניתן היה להתאים את נתוני המארח: github.com
כש-Config Sync מנסה להתחבר למאגר Git, הוא משתמש ב-DNS כדי לפתור את כתובת ה-IP של שם המארח שצוין. אם אי אפשר לפתור את הבעיה במארח, בדרך כלל מדובר בבעיה ב-DNS או ברשת של האשכול.
כדי לאבחן את הבעיה, אפשר לעיין במאמר פתרון בעיות ב-Cloud DNS ב-GKE או במאמר פתרון בעיות ב-kube-dns ב-GKE, בהתאם לשירות שבו אתם משתמשים כספק DNS.
אי אפשר להגיע למאגר Git מתוך האשכול
לפעמים, מאגר התגים git-sync מחזיר שגיאה ביומנים שלו שמציינת שהוא לא יכול לגשת למאגר. לדוגמה, ssh: connect to host
source.developers.google.com port 2022: Network is unreachable. כדי לפתור את הבעיה, צריך לשנות את ההגדרה של חומת האש או הרשת של האשכול.
מספר גבוה של בקשות API למקור
Config Sync משתמש באסטרטגיית ריבוי מופעים כדי להרחיב ולבודד דיירים ודומיינים של תקלות. לכן, לכל אובייקט RootSync ו-RepoSync יש מופע משלו של כלי ההתאמה. לכל מופע של כלי ההתאמה יש sidecar משלו שספציפי למקור, git-sync, oci-sync או helm-sync. ה-sidecars האלה שולחים שאילתות למקור הקובע. כשמוסיפים עוד אובייקטים מסוג RootSync או RepoSync, מספר בקשות ה-API ששולחים תהליכי ההתאמה כדי לבצע סקר של מקור האמת גדל באופן לינארי. לכן, אם יש לכם הרבה אובייקטים מסוג RootSync ו-RepoSync שכולם שולחים שאילתות לאותו מקור אמת, לפעמים זה יכול לגרום לעומס תנועה משמעותי בשרת המקור.
כדי לפתור את הבעיה, אפשר לנסות אחת מהאסטרטגיות הבאות:
- משלבים כמה אובייקטים מסוג
RootSyncsאוRepoSyncכדי לצמצם את מספר תהליכי ההתאמה ששולחים בקשות ל-API של המקור. - משנים את סוג המקור מ-Git ל-OCI. מאגרי OCI, כמו Artifact Registry, נוטים להתרחב טוב יותר מרוב שרתי Git, כי הם יכולים להתרחב אופקית בלי צורך בסנכרון בין העתקים של השרת.
המאמרים הבאים
- אם הבעיות נמשכות, כדאי לבדוק אם הבעיה שנתקלתם בה היא בעיה מוכרת.
אם לא מצאתם פתרון לבעיה שלכם במסמכי התיעוד, אפשר להיעזר במקורות המידע הבאים:
- קבלת תמיכה מהקהילה על ידי פרסום שאלות ב-Stack Overflow. אם אתם משתמשים ב-kpt או ב-Kustomize, תוכלו להשתמש בתג
kptאוkustomizeכדי לחפש בעיות דומות. - פתיחת בקשות בקשר לבעיות או בקשות להוספת תכונות באמצעות הכלי הציבורי למעקב אחר בעיות ב-GitHub.