פתרון בעיות ב-Kf SourcePackages

אפשר להיעזר בשלבים האלה כדי לפתור בעיות שונות שעלולות להתרחש כשמשתמשים ב-Kf SourcePackages.

האובייקט נתקע בתהליך המחיקה.

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

kubectl get sourcepackages.kf.dev -n SPACE_NAME SOURCEPACKAGE_NAME -o yaml

‫CLI‏ kf יכול לעזור לבדוק חלק מהבעיות:

kf doctor --space SPACE_NAME sourcepackage/SOURCEPACKAGE_NAME
סיבה אפשריתפתרון
חותמת הזמן של המחיקה היא בעתיד.

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

יש finalizers באובייקט.

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

אם רוצים לכפות מחיקה בלי לחכות לפונקציות ה-finalizer, צריך לערוך את האובייקט כדי להסיר אותן מהמערך metadata.finalizers.

כדי להסיר את ה-finalizer מאובייקט, משתמשים בפקודה kubectl edit RESOURCE_TYPE RESOURCE_NAME -n my-space.

מידע נוסף זמין במאמר בנושא שימוש ב-finalizers כדי לשלוט במחיקה.

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

יכול להיות שיש אובייקטים תלויים.

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

אם אתם צריכים להסיר את האובייקט בלי לחכות לאובייקטים שתלויים בו, אתם יכולים להשתמש בדגל kubectl delete עם הדגל cascade שמוגדר לערך --cascade=orphan.

סחף במצב הגנרציה של האובייקט.

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

kubectl get sourcepackages.kf.dev -n SPACE_NAME SOURCEPACKAGE_NAME -o yaml

‫CLI‏ kf יכול לעזור לבדוק חלק מהבעיות:

kf doctor --space SPACE_NAME sourcepackage/SOURCEPACKAGE_NAME
סיבה אפשריתפתרון
יש הבדלים בין גרסאות של אובייקטים.

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

התאמת האובייקט נכשלה.

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

kubectl get sourcepackages.kf.dev -n SPACE_NAME SOURCEPACKAGE_NAME -o yaml

‫CLI‏ kf יכול לעזור לבדוק חלק מהבעיות:

kf doctor --space SPACE_NAME sourcepackage/SOURCEPACKAGE_NAME
סיבה אפשריתפתרון
לאובייקט יש TemplateError

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

כדי להבין את שורש הבעיה, המשתמש יכול לקרוא את הודעת השגיאה הארוכה יותר ב-status.conditionsשל האובייקט באמצעות הפקודה:kubectl describe RESOURCE_TYPE RESOURCE_NAME -n space. לדוגמה: kubectl describe serviceinstance my-service -n my-space.

באובייקט יש שגיאה מסוג ChildNotOwned (התנגשויות בשמות)

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

כדי לפתור את השגיאה, מומלץ למשתמש למחוק את המשאב המושפע ואז ליצור אותו מחדש. כדי למחוק את האובייקט, משתמשים בפקודת מחיקה של Kf או בפקודה kubectl delete RESOURCE_TYPE RESOURCE_NAME -n SPACE. לדוגמה, kf delete-space my-space או kubectl delete space my-space.

כדי ליצור מחדש משאב, משתמשים בפקודת Kf. לדוגמה: kf create-space my-space.

לאובייקט יש ReconciliationError

בדרך כלל השגיאה הזו מציינת שמשהו השתבש בקריאת ה-HTTP שבוצעה (על ידי בקר Kf) לשרת Kubernetes API כדי ליצור או לעדכן משאב.

כדי להבין את שורש הבעיה, המשתמש יכול לקרוא את הודעת השגיאה הארוכה יותר ב-status.conditionsשל האובייקט באמצעות הפקודה:kubectl describe RESOURCE_TYPE RESOURCE_NAME -n space. לדוגמה: kubectl describe serviceinstance my-service -n my-space.