בדף הזה מוסבר איך לפתור בעיות במרחב שמות שנתקע במצב 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כדי לקבל תמיכה נוספת מהקהילה. - פתיחת באגים או בקשות להוספת תכונות באמצעות הכלי הציבורי למעקב אחר בעיות.