删除monitoring命名空间时总也无法彻底删除,发现monitoring处于Terminating状态,故有此文。
kubectl get namespaces -o wide
解决:尝试使用force delete。
kubectl delete namespace monitoring --force --grace-period=0
发现强制删除没有成功。
这样解决,制作delete namespace的json报文发送给proxy调用api删除namespace:
NAMESPACE=monitoring
开启proxy方便我们调用k8s api进行delete namespace操作。
kubectl proxy &
生成要发送的json报文:(需要安装jq:yum install jq)
kubectl get namespace $NAMESPACE -o json |jq '.spec = {"finalizers":[]}' >temp.json
将内容中的红色部分删除后保存:
{
"apiVersion": "v1",
"kind": "Namespace",
"metadata": {
"annotations": {
"kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"v1\",\"kind\":\"Namespace\",\"metadata\":{\"annotations\":{},\"name\":\"monitoring\"}}\n"
},
"creationTimestamp": "2019-12-02T12:22:18Z",
"deletionTimestamp": "2020-10-22T08:51:53Z",
"name": "monitoring",
"resourceVersion": "3324381",
"selfLink": "/api/v1/namespaces/monitoring",
"uid": "61f2295a-14fe-11ea-8f87-00163e054564"
},
"spec": {
"finalizers": []
},
"status": {
"phase": "Terminating"
}
}
发送删除命名空间的报文给k8s集群:
curl -k -H "Content-Type: application/json" -X PUT --data-binary @temp.json 127.0.0.1:8001/api/v1/namespaces/$NAMESPACE/finalize
monitoring命名空间删除成功,验证:kubectl get namespaces