En corto
Para quitar Rancher del todo de un clúster donde estuvo instalado (irreversible, con backup hecho):
| |
Para arreglar una sola cosa sin arrasar, lo que sigue.
Namespace en Terminating
cattle-system, cattle-fleet-system, cattle-impersonation-system, local, los cluster-fleet-*, o cualquier namespace que Rancher creó, se quedan en Terminating para siempre:
| |
Dos casos distintos:
metadata.finalizerstraecontroller.cattle.io/namespace-auth(o cualquier*.cattle.io). Lo puso Rancher y solo Rancher lo quita; si Rancher ya no está, nadie lo hará. Quítalo tú:1kubectl patch ns cattle-system --type=merge -p '{"metadata":{"finalizers":[]}}'spec.finalizerstraekubernetesystatus.conditionsdiceSomeResourcesRemainoDiscoveryFailed. El API server no borra el namespace porque dentro quedan recursos, casi siempre CRs de un API group cuyo servicio desapareció (unapiservicede Rancher). Antes de forzar, mira qué es:1 2 3kubectl api-resources --verbs=list --namespaced -o name \ | xargs -n1 kubectl -n cattle-system get --ignore-not-found --show-kind 2>/dev/null kubectl get apiservice | grep -v True # APIs muertas que rompen el discoveryBorra el
apiservicemuerto o los CRs con finalizers, y el namespace cae solo. Forzarspec.finalizersa vacío es el último recurso y deja huérfanos:1 2kubectl get ns cattle-system -o json | jq '.spec.finalizers=[]' \ | kubectl replace --raw /api/v1/namespaces/cattle-system/finalize -f -
Clúster que no se puede borrar
Un clúster importado que ya no existe se queda en Removing en la UI, o kubectl delete no termina. Son dos objetos con finalizers, uno por API:
| |
Después limpia el namespace cluster-fleet-default-<nombre>-<hash> y los clusters.fleet.cattle.io que queden en fleet-default.
El webhook que rechaza todo
rancher-webhook valida y muta recursos de *.cattle.io (y algunos de core, como namespaces y ServiceAccounts en clústeres gestionados). Si el pod no existe o está roto, cada cambio falla con:
| |
Exporta las configuraciones, bórralas, deja que el pod vuelva sano, y restáuralas:
| |
Si estás desinstalando, no las restaures: son lo primero que hay que quitar para que el resto del borrado avance.
Recuperar el acceso
Contraseña del admin perdida, o el usuario admin desactivado por error:
| |
ensure-default-admin reactiva el usuario y le devuelve el rol de administrador; reset-password solo cambia la contraseña.
Trampas
rancher-cleanupborra los objetos de los clústeres aguas abajo (los clústeres siguen funcionando, pero dejan de estar registrados) y todo lo que Rancher instaló: monitoring, logging, Gatekeeper. Longhorn se queda. No lo lances en el clúster de Rancher que quieres conservar.- Backup antes:
kubectl get -A -o yamlde los*.cattle.ioque te importen, o el backup-operator de Rancher. Los finalizers se quitan en un segundo; lo que había detrás no vuelve. kubectl delete ns --force --grace-period=0no hace nada con un namespace en Terminating: el bloqueo está en los finalizers, no en el grace period.- Rancher vuelve a poner los finalizers mientras esté vivo: si estás limpiando un clúster que todavía está conectado a un Rancher, desconéctalo primero (borra el
cattle-cluster-agent) o los patches se deshacen solos. - Los CRDs
*.cattle.iosobreviven a una desinstalación por Helm;rancher-cleanuplos quita, la desinstalación manual no.
Ver también
- k3s: reset del clúster tras perder el quórum — la otra cirugía de clúster que conviene tener a mano.
- rancher-cleanup y Technical FAQ de Rancher.