刪除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