k8s的namespace一直Terminating的完美解决方案
目前公司使用的k8s版本是v1.18.2,由于规定将namespace命名为项目名称,故:将不规范的namespace做了修改,由于是一个小项目在变更日做了如下修改,使用粗暴的方式:
[root@k8s-master1 ~]#kubectl delete namespace gf-prod
[root@k8s-master1 ~]# kubectl get ns
NAME STATUS AGE
aammini Active 353d
cattle-impersonation-system Active 150d
cattle-system Active 150d
default Active 2y10d
gf-prod Terminating 62d 异常状态
解决方式:
(1)尝试了强制删除 kubectl delete namespace [namespace] --force --grace-period=0 和通过接口删除不怎么好使,下来有时间再做详细研究。
(2)直接问我们公司大佬,平常在工作中帮助我不少,感觉欠人家许多人情,有机会一定回报。(这个是我的心理话,大家勿喷!)
大佬发我的删除方式,直接拿来用,总感觉是好使的 gf-prod替换为真实的命名空间 kubectl get namespace gf-prod -o json \ | tr -d "\n" | sed "s/\"finalizers\": \[[^]]\+\]/\"finalizers\": []/" \ | kubectl replace --raw /api/v1/namespaces/gf-prod/finalize -f -
执行操作:
[root@k8s-master1 ~]# kubectl get namespace gf-prod -o json \ > | tr -d "\n" | sed "s/\"finalizers\": \[[^]]\+\]/\"finalizers\": []/" \ > | kubectl replace --raw /api/v1/namespaces/gf-prod/finalize -f - {"kind":"Namespace","apiVersion":"v1","metadata":{"name":"gf-prod","selfLink":"/api/v1/namespaces/gf-prod/finalize","uid":"0f84b066-4144-4e97-b523-74ee70433cb3","resourceVersion":"461320582","creationTimestamp":"2022-10-10T10:13:14Z","deletionTimestamp":"2022-12-09T12:08:38Z","deletionGracePeriodSeconds":0,"annotations":{"cattle.io/status":"{\"Conditions\":[{\"Type\":\"ResourceQuotaInit\",\"Status\":\"True\",\"Message\":\"\",\"LastUpdateTime\":\"2022-10-10T18:13:15+08:00\"},{\"Type\":\"InitialRolesPopulated\",\"Status\":\"True\",\"Message\":\"\",\"LastUpdateTime\":\"2022-10-10T18:13:15+08:00\"}]}","kubectl.kubernetes.io/last-applied-configuration":"{\"apiVersion\":\"v1\",\"kind\":\"Namespace\",\"metadata\":{\"annotations\":{},\"name\":\"gf-prod\"}}\n","lifecycle.cattle.io/create.namespace-auth":"true"},"managedFields":[{"manager":"rancher","operation":"Update","apiVersion":"v1","time":"2022-10-10T10:13:14Z","fieldsType":"FieldsV1","fieldsV1":{"f:metadata":{"f:annotations":{"f:cattle.io/status":{},"f:lifecycle.cattle.io/create.namespace-auth":{}}}}},{"manager":"kubectl","operation":"Update","apiVersion":"v1","time":"2022-10-11T02:58:58Z","fieldsType":"FieldsV1","fieldsV1":{"f:metadata":{"f:annotations":{".":{},"f:kubectl.kubernetes.io/last-applied-configuration":{}}}}},{"manager":"kube-controller-manager","operation":"Update","apiVersion":"v1","time":"2022-12-09T12:09:06Z","fieldsType":"FieldsV1","fieldsV1":{"f:status":{"f:phase":{}}}}]},"spec":{},"status":{"phase":"Terminating","conditions":[{"type":"NamespaceDeletionDiscoveryFailure","status":"False","lastTransitionTime":"2022-12-09T12:08:43Z","reason":"ResourcesDiscovered","message":"All resources successfully discovered"},{"type":"NamespaceDeletionGroupVersionParsingFailure","status":"False","lastTransitionTime":"2022-12-09T12:08:43Z","reason":"ParsedGroupVersions","message":"All legacy kube types successfully parsed"},{"type":"NamespaceDeletionContentFailure","status":"False","lastTransitionTime":"2022-12-09T12:09:06Z","reason":"ContentDeleted","message":"All content successfully deleted, may be waiting on finalization"},{"type":"NamespaceContentRemaining","status":"False","lastTransitionTime":"2022-12-09T12:09:06Z","reason":"ContentRemoved","message":"All content successfully removed"},{"type":"NamespaceFinalizersRemaining","status":"False","lastTransitionTime":"2022-12-09T12:08:43Z","reason":"ContentHasNoFinalizers","message":"All content-preserving finalizers finished"}]}}
查看:
[root@k8s-master1 ~]# kubectl get ns NAME STATUS AGE aammini Active 353d cattle-impersonation-system Active 150d cattle-system Active 150d default Active 2y10d
异常完美删除
gf-prod Terminating 62d 异常状态