Espacio de nombres "atascado" como terminando, cómo lo eliminé

Resuelto ximbal asked hace 6 años • 0 respuestas

Tuve un espacio de nombres "atascado" que eliminé y se muestra en este estado eterno de "terminación".

ximbal avatar Sep 17 '18 20:09 ximbal
Aceptado

Suponiendo que ya has intentado forzar la eliminación de recursos como: Pods bloqueados en estado de terminación y estás al límite de tu ingenio tratando de recuperar el espacio de nombres...

Puede forzar la eliminación del espacio de nombres (quizás dejando recursos pendientes):

(
NAMESPACE=your-rogue-namespace
kubectl proxy &
kubectl get namespace $NAMESPACE -o json |jq '.spec = {"finalizers":[]}' >temp.json
curl -k -H "Content-Type: application/json" -X PUT --data-binary @temp.json 127.0.0.1:8001/api/v1/namespaces/$NAMESPACE/finalize
)
  • Este es un refinamiento de la respuesta aquí , que se basa en el comentario aquí .

  • Estoy usando la jqutilidad para eliminar elementos mediante programación en la sección de finalizadores. En su lugar, podrías hacerlo manualmente.

  • kubectl proxycrea el oyente en 127.0.0.1:8001 por defecto . Si conoce el nombre de host/IP de su clúster maestro, es posible que pueda usarlo en su lugar.

  • Lo curioso es que este enfoque parece funcionar incluso cuando realizar kubectl editel mismo cambio no tiene ningún efecto.

Brent Bradburn avatar Dec 07 '2018 00:12 Brent Bradburn

Esto se debe a que aún existen recursos en el espacio de nombres que el controlador del espacio de nombres no puede eliminar.

Este comando (con kubectl 1.11+) le mostrará qué recursos quedan en el espacio de nombres:

kubectl api-resources --verbs=list --namespaced -o name \
  | xargs -n 1 kubectl get --show-kind --ignore-not-found -n <namespace>

Una vez que los encuentre, los resuelva y elimine, el espacio de nombres se limpiará.

Jordan Liggitt avatar Sep 18 '2018 00:09 Jordan Liggitt