k8s-unable to create new content in namespace kubernetes-dashboard because it is being terminated
k8s集群,重建dashboard时,执行delete后,显示pod已删除,再apply报错:(重建pod可直接kubectl delete pod )
[root@k8s-master01 files]# kubectl apply -f kubernetes-dashboard.yaml Warning: Detected changes to resource kubernetes-dashboard which is currently being deleted. namespace/kubernetes-dashboard unchanged clusterrole.rbac.authorization.k8s.io/kubernetes-dashboard unchanged clusterrolebinding.rbac.authorization.k8s.io/kubernetes-dashboard unchanged Error from server (Forbidden): error when creating "kubernetes-dashboard.yaml": serviceaccounts "kubernetes-dashboard" is forbidden: unable to create new content in namespace kubernetes-dashboard because it is being terminated Error from server (Forbidden): error when creating "kubernetes-dashboard.yaml": services "kubernetes-dashboard" is forbidden: unable to create new content in namespace kubernetes-dashboard because it is being terminated
排查发现对应namespace没有删除,一直处于Terminating状态
[root@k8s-master01 files]# kubectl get ns NAME STATUS AGE
kubernetes-dashboard Terminating 4d20h
解决:
[root@k8s-master01 ~]# kubectl get ns kubernetes-dashboard -o json > kubernetes-dashboard.json [root@k8s-master01 ~]# [root@k8s-master01 ~]# vi kubernetes-dashboard.json
找到finalize删除,如下: "spec": { },
打开一个新窗口运行kubectl proxy跑一个API代理在本地的8081端口
[root@k8s-master01 ~]# kubectl proxy --port=8081 Starting to serve on 127.0.0.1:8081
curl删除
curl -k -H "Content-Type:application/json" -X PUT --data-binary @kubernetes-dashboard.json http://127.0.0.1:8081/api/v1/namespaces/kubernetes-dashboard/finalize
发现命名空间已删除,可正常apply.
[root@k8s-master01 ~]# kubectl proxy --port=8081
Starting to serve on 127.0.0.1:8081