בדף הזה מוסבר איך לפתור בעיות במרחב שמות שנתקע במצב Terminating.
מרחבי שמות משתמשים בfinalizers של Kubernetes כדי למנוע מחיקה אם עדיין קיימים משאבים במרחב השמות.
כשמוחקים מרחב שמות באמצעות הפקודה kubectl delete, מרחב השמות עובר למצב Terminating.
מרחב השמות נשאר במצב Terminating עד ש-Kubernetes מוחק את המשאבים התלויים שלו ומנקה את כל ה-finalizers. בשלב הראשון, בקר מחזור החיים של מרחב השמות מפרט את כל המשאבים במרחב השמות ש-GKE צריך למחוק.
אם GKE לא יכול למחוק משאב תלוי, או אם בקר מחזור החיים של מרחב השמות לא יכול לאמת שמרחב השמות ריק, מרחב השמות נשאר במצב Terminating עד שתפתרו את הבעיה.
כדי לפתור בעיה של מרחב שמות שנתקע במצב Terminating, צריך לזהות ולהסיר את כל הרכיבים הלא תקינים שחוסמים את המחיקה. נסו את הפתרונות הבאים לפי הסדר:
חיפוש והסרה של שירותי API לא זמינים
כדי להציג רשימה של שירותי API לא זמינים:
kubectl get apiservice | grep Falseפתרון בעיות בשירותים שלא מגיבים:
kubectl describe apiservice API_SERVICEמחליפים את
API_SERVICEבשם השירות שלא מגיב.בודקים אם הסטטוס של מרחב השמות הוא עדיין
Terminating:kubectl get ns | grep Terminating
איתור והסרה של משאבים שנותרו
מציגים את כל המשאבים שנותרו במרחב השמות שמבוטל:
kubectl api-resources --verbs=list --namespaced -o name | xargs -n 1 kubectl get -n NAMESPACEמחליפים את
NAMESPACEבשם של מרחב השמות שרוצים למחוק.מסירים את כל המשאבים שמוצגים בפלט.
בודקים אם הסטטוס של מרחב השמות הוא עדיין
Terminating:kubectl get ns | grep Terminating
מחיקה בכוח של מרחב השמות
מסירים את ה-finalizers שחוסמים את מחיקת מרחב השמות כדי לאלץ את סיום מרחב השמות:
שומרים את מניפסט מרחב השמות כקובץ YAML:
kubectl get ns NAMESPACE -o yaml > ns-terminating.ymlפותחים את קובץ המניפסט בכלי לעריכת טקסט ומסירים את כל הערכים בשדה
spec.finalizers:vi ns-terminating.ymlמוודאים שהשדה finalizers ריק:
cat ns-terminating.ymlהפלט אמור להיראות כך:
apiVersion: v1 kind: Namespace metadata: annotations: name: NAMESPACE spec: finalizers: status: phase: Terminatingמפעילים שרת proxy ל-HTTP כדי לגשת ל-Kubernetes API:
kubectl proxyמחליפים את מניפסט מרחב השמות באמצעות
curl:curl -H "Content-Type: application/yaml" -X PUT --data-binary @ns-terminating.yml http://127.0.0.1:8001/api/v1/namespaces/NAMESPACE/finalizeבודקים אם הסטטוס של מרחב השמות הוא עדיין
Terminating:kubectl get ns | grep Terminating
המאמרים הבאים
אם לא מצאתם פתרון לבעיה במסמכי העזרה, תוכלו לקבל עזרה נוספת בקבלת תמיכה, כולל עצות בנושאים הבאים:
- פתיחת בקשת תמיכה באמצעות פנייה אל Cloud Customer Care.
- קבלת תמיכה מהקהילה על ידי פרסום שאלות ב-StackOverflow ושימוש בתג
google-kubernetes-engineכדי לחפש בעיות דומות. אתם יכולים גם להצטרף לערוץ Slack של#kubernetes-engineכדי לקבל תמיכה מהקהילה. - פתיחת דיווחים על בעיות או בקשות למאפיינים חדשים באמצעות הכלי הציבורי Issue Tracker.