1、现象
[root@node1 ~]# kubectl get nsNAME STATUS AGEdefault Active 29distio-system Terminating 15hkube-node-lease Active 29dkube-public Active 29dkube-system Active 29dkubekey-system Active 29d
- 可以看到istio-system名称空间状态是Terminating
2、强制删除
1. 导出状态为Terminating的名称空间的json
kubectl get ns istio-system -o json > istio-system.json
2. 删除json文件中的spec字段中内容,spec内容置为空
cat istio-system.json{"apiVersion": "v1","kind": "Namespace","metadata": {"creationTimestamp": "2023-02-08T09:16:00Z","deletionTimestamp": "2023-02-09T00:40:59Z","labels": {"kubernetes.io/metadata.name": "istio-system"},"name": "istio-system","resourceVersion": "239729","uid": "1d4f309d-2991-4f80-b50a-b70516e31012"},"spec": { # 这里面的内容被删除},"status": {.... # 内容过多省略展示"phase": "Terminating"}}

3. 新开启一个窗口,启动一个进程
kubectl proxy --port=8081
4. 在另一个窗口通过求情删除
curl -k -H "Content-Type:application/json" -X PUT --data-binary @istio-system.json http://127.0.0.1:8081/api/v1/namespaces/istio-system/finalize

@istio-system.json是我们导出的文件istio-system是需要删除的命名空间
5. 执行删除请求会得到如下内容信息
[root@node1 ~]# curl -k -H "Content-Type:application/json" -X PUT --data-binary @istio-system.json http://127.0.0.1:8081/api/v1/namespaces/istio-system/finalize{"kind": "Namespace","apiVersion": "v1","metadata": {"name": "istio-system","uid": "1d4f309d-2991-4f80-b50a-b70516e31012","resourceVersion": "239729","creationTimestamp": "2023-02-08T09:16:00Z","deletionTimestamp": "2023-02-09T00:40:59Z","labels": {"kubernetes.io/metadata.name": "istio-system"},"managedFields": [{"manager": "istioctl","operation": "Update","apiVersion": "v1","time": "2023-02-08T09:16:00Z","fieldsType": "FieldsV1","fieldsV1": {"f:metadata": {"f:labels": {".": {},"f:kubernetes.io/metadata.name": {}}}}},{"manager": "kube-controller-manager","operation": "Update","apiVersion": "v1","time": "2023-02-09T00:41:04Z","fieldsType": "FieldsV1","fieldsV1": {"f:status": {"f:conditions": {".": {},"k:{\"type\":\"NamespaceContentRemaining\"}": {".": {},"f:lastTransitionTime": {},"f:message": {},"f:reason": {},"f:status": {},"f:type": {}},"k:{\"type\":\"NamespaceDeletionContentFailure\"}": {".": {},"f:lastTransitionTime": {},"f:message": {},"f:reason": {},"f:status": {},"f:type": {}},"k:{\"type\":\"NamespaceDeletionDiscoveryFailure\"}": {".": {},"f:lastTransitionTime": {},"f:message": {},"f:reason": {},"f:status": {},"f:type": {}},"k:{\"type\":\"NamespaceDeletionGroupVersionParsingFailure\"}": {".": {},"f:lastTransitionTime": {},"f:message": {},"f:reason": {},"f:status": {},"f:type": {}},"k:{\"type\":\"NamespaceFinalizersRemaining\"}": {".": {},"f:lastTransitionTime": {},"f:message": {},"f:reason": {},"f:status": {},"f:type": {}}}}},"subresource": "status"}]},"spec": {},"status": {"phase": "Terminating","conditions": [{"type": "NamespaceDeletionDiscoveryFailure","status": "False","lastTransitionTime": "2023-02-09T00:41:04Z","reason": "ResourcesDiscovered","message": "All resources successfully discovered"},{"type": "NamespaceDeletionGroupVersionParsingFailure","status": "False","lastTransitionTime": "2023-02-09T00:41:04Z","reason": "ParsedGroupVersions","message": "All legacy kube types successfully parsed"},{"type": "NamespaceDeletionContentFailure","status": "False","lastTransitionTime": "2023-02-09T00:41:04Z","reason": "ContentDeleted","message": "All content successfully deleted, may be waiting on finalization"},{"type": "NamespaceContentRemaining","status": "True","lastTransitionTime": "2023-02-09T00:41:04Z","reason": "SomeResourcesRemain","message": "Some resources are remaining: kialis.kiali.io has 1 resource instances"},{"type": "NamespaceFinalizersRemaining","status": "True","lastTransitionTime": "2023-02-09T00:41:04Z","reason": "SomeFinalizersRemain","message": "Some content in the namespace has finalizers remaining: kiali.io/finalizer in 1 resource instances"}]}
6. 再次检查是否被删除
kubectl get nsNAME STATUS AGEdefault Active 29dkube-node-lease Active 29dkube-public Active 29dkube-system Active 29dkubekey-system Active 29d
