Tengo un problema al finalizar el espacio de nombres en el clúster. Muestra muchos parámetros dentro del espacio de nombres JSON. Seguí este enlace https://medium.com/@craignewtondev/how-to-fix-kubernetes-namespace-deleting-stuck-in-terminating-state-5ed75792647e
"spec": {}, "status": { "conditions": [ { "lastTransitionTime": "2021-01-11T08:41:48Z", "message": "All resources successfully discovered", "reason": "ResourcesDiscovered", "status": "False", "type": "NamespaceDeletionDiscoveryFailure" }, { "lastTransitionTime": "2021-01-11T08:41:48Z", "message": "All legacy kube types successfully parsed", "reason": "ParsedGroupVersions", "status": "False", "type": "NamespaceDeletionGroupVersionParsingFailure" }, { "lastTransitionTime": "2021-01-11T08:41:48Z", "message": "All content successfully deleted, may be waiting on finalization", "reason": "ContentDeleted", "status": "False", "type": "NamespaceDeletionContentFailure" }, { "lastTransitionTime": "2021-01-11T08:42:09Z", "message": "All content successfully removed", "reason": "ContentRemoved", "status": "False", "type": "NamespaceContentRemaining" }, { "lastTransitionTime": "2021-01-11T08:41:48Z", "message": "All content-preserving finalizers finished", "reason": "ContentHasNoFinalizers", "status": "False", "type": "NamespaceFinalizersRemaining" } ], "phase": "Terminating" } }```
He encontrado la respuesta para terminar el espacio de nombres atascado.
for ns in $(kubectl get ns --field-selector status.phase=Terminating -o jsonpath='{.items[*].metadata.name}') do kubectl get ns $ns -ojson | jq '.spec.finalizers = []' | kubectl replace --raw "/api/v1/namespaces/$ns/finalize" -f - done for ns in $(kubectl get ns --field-selector status.phase=Terminating -o jsonpath='{.items[*].metadata.name}') do kubectl get ns $ns -ojson | jq '.metadata.finalizers = []' | kubectl replace --raw "/api/v1/namespaces/$ns/finalize" -f - done
El tutorial que usó no es adecuado porque eliminar el espacio de nombres eliminando los finalizadores no es una buena manera de hacerlo, ya que podría dejar recursos registrados en un espacio de nombres no existente. Eche un vistazo a esta publicación: finalizer-kubernetes-ns .
Puede intentar averiguar qué recursos del espacio de nombres están pendientes de eliminación haciendo lo siguiente:
kubectl api-resources --verbs=list --namespaced -o name | xargs -n 1 kubectl get -n $yotur-ns-to-delete
kubectl get apiservice|grep False
Eche un vistazo también a este problema: ns-kubernetes-stuck-terminating .
En primer lugar, exporte el nombre de su espacio de nombres en env que se golpeó en el estado de Terminación
export NAMESPACE="monitoring"
Luego ejecute el siguiente comando para eliminar el espacio de nombres Terminating
kubectl get namespace $NAMESPACE -o json | tr -d "\n" | sed "s/\"finalizers\": \[[^]]\+\]/\"finalizers\": []/" | kubectl replace --raw /api/v1/namespaces/$NAMESPACE/finalize -f -