k8s的namespace一直Terminating的完美解決方案
阿新 • • 發佈:2020-10-09
k8s的namespace一直Terminating的完美解決方案
在k8s叢集中進行測試刪除namespace是經常的事件,而為了方便操作,一般都是直接對整個名稱空間進行刪除操作。
相通道友們在進行此步操作的時候,會遇到要刪除的namespace一直處於Terminating。下面我將給出一個完美的解決方案,
測試demo
建立demo namespace # kubectl create ns test namespace/test created 刪除demo namespace # kubectl delete ns test namespace "test" deleted 一直處於deleted不見exit 檢視狀態 可見test namespace 處於Terminating # kubectl get ns -w NAME STATUS AGE test Terminating 18s
下面給出一種完美的解決方案:呼叫介面刪除
開啟一個代理終端 # kubectl proxy Starting to serve on 127.0.0.1:8001 再開啟一個操作終端 將test namespace的配置檔案輸出儲存 # kubectl get ns test -o json > test.json 刪除spec及status部分的內容還有metadata欄位後的","號,切記! 剩下內容大致如下 { "apiVersion": "v1", "kind": "Namespace", "metadata": { "annotations": { "cattle.io/status": "{\"Conditions\":[{\"Type\":\"ResourceQuotaInit\",\"Status\":\"True\",\"Message\":\"\",\"LastUpdateTime\":\"2020-10-09T07:12:17Z\"},{\"Type\":\"InitialRolesPopulated\",\"Status\":\"True\",\"Message\":\"\",\"LastUpdateTime\":\"2020-10-09T07:12:18Z\"}]}", "lifecycle.cattle.io/create.namespace-auth": "true" }, "creationTimestamp": "2020-10-09T07:12:16Z", "deletionTimestamp": "2020-10-09T07:12:22Z", "name": "test", "resourceVersion": "471648079", "selfLink": "/api/v1/namespaces/test", "uid": "862d311e-d87a-48c2-bc48-332a4db9dbdb" } } 調介面刪除 # curl -k -H "Content-Type: application/json" -X PUT --data-binary @test.json http://127.0.0.1:8001/api/v1/namespaces/test/finalize { "kind": "Namespace", "apiVersion": "v1", "metadata": { "name": "test", "selfLink": "/api/v1/namespaces/test/finalize", "uid": "862d311e-d87a-48c2-bc48-332a4db9dbdb", "resourceVersion": "471648079", "creationTimestamp": "2020-10-09T07:12:16Z", "deletionTimestamp": "2020-10-09T07:12:22Z", "annotations": { "cattle.io/status": "{\"Conditions\":[{\"Type\":\"ResourceQuotaInit\",\"Status\":\"True\",\"Message\":\"\",\"LastUpdateTime\":\"2020-10-09T07:12:17Z\"},{\"Type\":\"InitialRolesPopulated\",\"Status\":\"True\",\"Message\":\"\",\"LastUpdateTime\":\"2020-10-09T07:12:18Z\"}]}", "lifecycle.cattle.io/create.namespace-auth": "true" } }, "spec": { }, "status": { "phase": "Terminating", "conditions": [ { "type": "NamespaceDeletionDiscoveryFailure", "status": "True", "lastTransitionTime": "2020-10-09T07:12:27Z", "reason": "DiscoveryFailed", "message": "Discovery failed for some groups, 1 failing: unable to retrieve the complete list of server APIs: metrics.k8s.io/v1beta1: the server is currently unable to handle the request" }, { "type": "NamespaceDeletionGroupVersionParsingFailure", "status": "False", "lastTransitionTime": "2020-10-09T07:12:28Z", "reason": "ParsedGroupVersions", "message": "All legacy kube types successfully parsed" }, { "type": "NamespaceDeletionContentFailure", "status": "False", "lastTransitionTime": "2020-10-09T07:12:28Z", "reason": "ContentDeleted", "message": "All content successfully deleted" } ] } }
檢視結果
1、delete 狀態終止
kubectl delete ns test
namespace "test" deleted
2、Terminating狀態終止
kubectl get ns -w
test Terminating 18s
test Terminating 17m
名稱空間被刪除掉