1、现象

  1. [root@node1 ~]# kubectl get ns
  2. NAME STATUS AGE
  3. default Active 29d
  4. istio-system Terminating 15h
  5. kube-node-lease Active 29d
  6. kube-public Active 29d
  7. kube-system Active 29d
  8. kubekey-system Active 29d
  • 可以看到istio-system名称空间状态是Terminating

2、强制删除

1. 导出状态为Terminating的名称空间的json

  1. kubectl get ns istio-system -o json > istio-system.json

2. 删除json文件中的spec字段中内容,spec内容置为空

  1. cat istio-system.json
  2. {
  3. "apiVersion": "v1",
  4. "kind": "Namespace",
  5. "metadata": {
  6. "creationTimestamp": "2023-02-08T09:16:00Z",
  7. "deletionTimestamp": "2023-02-09T00:40:59Z",
  8. "labels": {
  9. "kubernetes.io/metadata.name": "istio-system"
  10. },
  11. "name": "istio-system",
  12. "resourceVersion": "239729",
  13. "uid": "1d4f309d-2991-4f80-b50a-b70516e31012"
  14. },
  15. "spec": { # 这里面的内容被删除
  16. },
  17. "status": {
  18. .... # 内容过多省略展示
  19. "phase": "Terminating"
  20. }
  21. }

K8S命名空间处于Terminating状态,如何强制删除 - 图1

3. 新开启一个窗口,启动一个进程

  1. kubectl proxy --port=8081

4. 在另一个窗口通过求情删除

  1. 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

K8S命名空间处于Terminating状态,如何强制删除 - 图2

  • @istio-system.json 是我们导出的文件
  • istio-system 是需要删除的命名空间

5. 执行删除请求会得到如下内容信息

  1. [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
  2. {
  3. "kind": "Namespace",
  4. "apiVersion": "v1",
  5. "metadata": {
  6. "name": "istio-system",
  7. "uid": "1d4f309d-2991-4f80-b50a-b70516e31012",
  8. "resourceVersion": "239729",
  9. "creationTimestamp": "2023-02-08T09:16:00Z",
  10. "deletionTimestamp": "2023-02-09T00:40:59Z",
  11. "labels": {
  12. "kubernetes.io/metadata.name": "istio-system"
  13. },
  14. "managedFields": [
  15. {
  16. "manager": "istioctl",
  17. "operation": "Update",
  18. "apiVersion": "v1",
  19. "time": "2023-02-08T09:16:00Z",
  20. "fieldsType": "FieldsV1",
  21. "fieldsV1": {
  22. "f:metadata": {
  23. "f:labels": {
  24. ".": {},
  25. "f:kubernetes.io/metadata.name": {}
  26. }
  27. }
  28. }
  29. },
  30. {
  31. "manager": "kube-controller-manager",
  32. "operation": "Update",
  33. "apiVersion": "v1",
  34. "time": "2023-02-09T00:41:04Z",
  35. "fieldsType": "FieldsV1",
  36. "fieldsV1": {
  37. "f:status": {
  38. "f:conditions": {
  39. ".": {},
  40. "k:{\"type\":\"NamespaceContentRemaining\"}": {
  41. ".": {},
  42. "f:lastTransitionTime": {},
  43. "f:message": {},
  44. "f:reason": {},
  45. "f:status": {},
  46. "f:type": {}
  47. },
  48. "k:{\"type\":\"NamespaceDeletionContentFailure\"}": {
  49. ".": {},
  50. "f:lastTransitionTime": {},
  51. "f:message": {},
  52. "f:reason": {},
  53. "f:status": {},
  54. "f:type": {}
  55. },
  56. "k:{\"type\":\"NamespaceDeletionDiscoveryFailure\"}": {
  57. ".": {},
  58. "f:lastTransitionTime": {},
  59. "f:message": {},
  60. "f:reason": {},
  61. "f:status": {},
  62. "f:type": {}
  63. },
  64. "k:{\"type\":\"NamespaceDeletionGroupVersionParsingFailure\"}": {
  65. ".": {},
  66. "f:lastTransitionTime": {},
  67. "f:message": {},
  68. "f:reason": {},
  69. "f:status": {},
  70. "f:type": {}
  71. },
  72. "k:{\"type\":\"NamespaceFinalizersRemaining\"}": {
  73. ".": {},
  74. "f:lastTransitionTime": {},
  75. "f:message": {},
  76. "f:reason": {},
  77. "f:status": {},
  78. "f:type": {}
  79. }
  80. }
  81. }
  82. },
  83. "subresource": "status"
  84. }
  85. ]
  86. },
  87. "spec": {},
  88. "status": {
  89. "phase": "Terminating",
  90. "conditions": [
  91. {
  92. "type": "NamespaceDeletionDiscoveryFailure",
  93. "status": "False",
  94. "lastTransitionTime": "2023-02-09T00:41:04Z",
  95. "reason": "ResourcesDiscovered",
  96. "message": "All resources successfully discovered"
  97. },
  98. {
  99. "type": "NamespaceDeletionGroupVersionParsingFailure",
  100. "status": "False",
  101. "lastTransitionTime": "2023-02-09T00:41:04Z",
  102. "reason": "ParsedGroupVersions",
  103. "message": "All legacy kube types successfully parsed"
  104. },
  105. {
  106. "type": "NamespaceDeletionContentFailure",
  107. "status": "False",
  108. "lastTransitionTime": "2023-02-09T00:41:04Z",
  109. "reason": "ContentDeleted",
  110. "message": "All content successfully deleted, may be waiting on finalization"
  111. },
  112. {
  113. "type": "NamespaceContentRemaining",
  114. "status": "True",
  115. "lastTransitionTime": "2023-02-09T00:41:04Z",
  116. "reason": "SomeResourcesRemain",
  117. "message": "Some resources are remaining: kialis.kiali.io has 1 resource instances"
  118. },
  119. {
  120. "type": "NamespaceFinalizersRemaining",
  121. "status": "True",
  122. "lastTransitionTime": "2023-02-09T00:41:04Z",
  123. "reason": "SomeFinalizersRemain",
  124. "message": "Some content in the namespace has finalizers remaining: kiali.io/finalizer in 1 resource instances"
  125. }
  126. ]
  127. }

6. 再次检查是否被删除

  1. kubectl get ns
  2. NAME STATUS AGE
  3. default Active 29d
  4. kube-node-lease Active 29d
  5. kube-public Active 29d
  6. kube-system Active 29d
  7. kubekey-system Active 29d