כשלים בהתקנה של Kf
שגיאה מהשרת (בקשה שגויה): תו לא חוקי
אם השגיאה הזו מופיעה כשמגדירים ברירות מחדל של config, סביר להניח שהערך של משתנה הסביבה ${DOMAIN} שמשמש בפקודה כולל תו '$' עם escape. צריך להשתמש במירכאות בודדות כדי להגדיר דומיין עם שם רווח או החלפה אחרת:
Error from server (BadRequest): invalid character '$' in string escape code
שגיאות באובייקטים של Kf Kubernetes
כדי לפתור בעיות באובייקטים של Kf Kubernetes, פועלים לפי ההוראות הבאות.
כדי למצוא את השם של סוג משאב Kubernetes שרוצים לפתור בו בעיות, מציגים את כל משאבי Kf:
kubectl api-resources --api-group=kf.devפלט לדוגמה:
NAME SHORTNAMES APIGROUP NAMESPACED KIND apps kf.dev true App builds kf.dev true Build clusterservicebrokers kf.dev false ClusterServiceBroker routes kf.dev true Route servicebrokers kf.dev true ServiceBroker serviceinstancebindings kf.dev true ServiceInstanceBinding serviceinstances kf.dev true ServiceInstance spaces kf.dev false Spaceמשתמשים ב-
kubectlכדי לקבל את המופע של המשאב שרוצים לפתור בו בעיות. אם האובייקט לא נמצא במרחב שמות, לא צריך להוסיף את הדגל-n:kubectl get api-resource-name.kf.dev object-name -n space-name -o yamlלדוגמה:
kubectl get apps.kf.dev my-app -n my-space -o yamlבוחרים את הבעיה בכרטיסיות שלמטה:
האובייקט לא מסתנכרן
- בודקים את הערך של
metadata.generation. המספר הזה גדל בכל פעם שהאובייקט מתעדכן. אם המספר גבוה במיוחד, סביר להניח ששני בקרי Kubernetes מנסים להשתלט על האובייקט. בודקים את האשכול כדי לראות אם מדיניות כלשהי חלה על האובייקט, מה שעלול לשנות אותו מהמצב הרצוי. - בודקים אם מרחב השמות שאליו שייך האובייקט נמחק. אם כן, יכול להיות שהאובייקט לא יתעדכן.
- בודקים שהשדה
status.observedGenerationקיים. אם לא, יכול להיות שהבקר עדיין לא הופעל על האובייקט. מאמתים שהאשכול והבקרים תקינים באמצעותkf doctor. - בודקים שהשדה
metadata.generationתואם לשדהstatus.observedGeneration. אם לא, צריך לוודא שהאשכול והבקרי תקינים באמצעותkf doctor. בודקים אם יש כשלים ברשימה
status.conditionsבהשוואה לרשימה הזו של סיבות נפוצות לשגיאות:-
NotOwned: קיים משאב אחר באשכול או במרחב השמות כמו זה שהאובייקט הזה מנסה ליצור. קוראים את ההודעה כדי למצוא את השם הכפול, ומשנים את השם של המשאב או של אובייקט Kf שגורם לקונפליקט. -
TemplateError: יש הגדרה שגויה במפרט של משאב Kf או בהגדרת Kf שגורמת לתיאום שגוי של משאב הצאצא. מאמתים את ההגדרות של אובייקט Kf ושל מרחב Kf. -
CacheOutdated: בקר Kf לא מקבל עדכונים מ-Kubernetes מספיק מהר. בודקים את תקינות אשכול Kubernetes. -
ReconciliationError: בקר Kf לא יכול ליצור את משאב הצאצא הנדרש. בודקים שהאשכול תקין, ש-Kf פועל ושהמדיניות לא מונעת מ-Kf ליצור את האובייקט שמצוין בהודעה.
-
האובייקט לא נמחק
- בודקים שהמאפיין
metadata.deletionTimestampשל האובייקט הוגדר. אם לא הוגדר, המחיקה המבוקשת לא תתבצע. - בודקים שהתאריך
metadata.deletionTimestampשל האובייקט חל בעבר. אם התאריך הוא בעתיד, יכול להיות שהאובייקט לא יימחק. - בודקים אם יש רשימה של
metadata.finalizersבאובייקט. אם יש finalizers, האובייקט צריך לחכות עד שהם יוסרו לפני שהוא יימחק. אם רוצים לכפות מחיקה בלי לחכות לסיום הפעולה של ה-finalizers, צריך לערוך את האובייקט כדי להסיר אותם. - יכול להיות שיש אובייקטים צאצאים שמונעים את מחיקת האובייקט. אדמין צריך לבדוק את כל האובייקטים במרחב השמות ובאשכול כדי לראות אם צריך למחוק אחד מהם באופן ידני קודם.
- בודקים את הערך של