Dan is dit wellicht de oplossing:
$ kubectl cluster-info Kubernetes master is running at https://localhost:6443 KubeDNS is running at https://localhost:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
Nu is het noodzakelijk om op de master de kube-proxy op te starten
$ kubectl proxy &
Vervolgens is het handig om de namespace in een variable te exporteren:
$ export namespace=namespace-to-delete
Hiermee gaan we de namespace-configuratie in een json bestand plaatsen met:
$ kubectl get ns $namespace -o json > tmp.json
Edit nu het json-bestand en verwijder de ‘kubernetes‘ finalizer:
}, "spec": { "finalizers": [ "kubernetes" ] },
wordt dan:
}, "spec": { "finalizers": [ ] },
Voer tenslotte het volgende commando uit met het aangepaste json bestand.
$ curl -k -H "Content-Type: application/json" -X PUT --data-binary @tmp.json http://127.0.0.1:8001/api/v1/namespaces/$namespace/finalize
Hierna is de namespace verwijderd van het cluster!
(verwijder eventueel de proxy daemon op de master)
Rancher Cluster?
Bij een Kubernetes Cluster dat onder Rancher is aangemaakt is er de kans dat ‘kubectl proxy’ niet werkt. Hier kan het volgende een mogelijke oplossing zijn:
$ kubectl get apiservice ... v1beta1.batch Local True 4d15h v1beta1.certificates.k8s.io Local True 4d15h v1beta1.coordination.k8s.io Local True 4d15h v1beta1.custom.metrics.k8s.io cattle-monitoring-system/rancher-monitoring-prometheus-adapter False (ServiceNotFound) 130m v1beta1.discovery.k8s.io Local True 4d15h v1beta1.events.k8s.io Local True 4d15h ...
Hier kan de apiservice met status ‘False‘ handmatig verwijderd worden en dan kan de bewuste namespace toch verdwijnen.
$ kubectl delete apiservice v1beta1.custom.metrics.k8s.io apiservice.apiregistration.k8s.io "v1beta1.custom.metrics.k8s.io" deleted $ kubectl get ns