namespace,pv 一直Terminating状态处理

打印 上一主题 下一主题

主题 862|帖子 862|积分 2586

1,namespace  Terminating状态处理

在k8s集群中进行测试删除namespace是经常的事件,而为了方便操作,一般都是直接对整个名称空间进行删除操作。
  1. $ kubectl get ns qasim
  2. NAME    STATUS        AGE
  3. qasim   Terminating   24d
复制代码
 调用接口删除
  1. 开启一个代理终端
  2. $ kubectl proxy
  3. Starting to serve on 127.0.0.1:8001
复制代码
  1. 再开启一个操作终端
复制代码
  1. 将test namespace的配置文件输出保存
  2. $ kubectl get ns qasim  -o json > qasim.json
复制代码
  1. 删除spec下finalizers的内容及status部分的内容还有metadata字段后的","号,切记!
  2. 剩下内容大致如下:<br>
复制代码
  1. {
  2.     "apiVersion": "v1",
  3.     "kind": "Namespace",
  4.     "metadata": {
  5.         "annotations": {
  6.             "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"}]}",
  7.             "lifecycle.cattle.io/create.namespace-auth": "true"
  8.         },
  9.         "creationTimestamp": "2020-10-09T07:12:16Z",
  10.         "deletionTimestamp": "2020-10-09T07:12:22Z",
  11.         "name": "qasim",
  12.         "resourceVersion": "471648079",
  13.         "selfLink": "/api/v1/namespaces/test",
  14.         "uid": "862d311e-d87a-48c2-bc48-332a4db9dbdb"
  15.     }
  16. }
复制代码
  
  1. 调接口删除<br>
复制代码
  1. $ curl -k -H "Content-Type: application/json" -X PUT --data-binary @qasim.json http://127.0.0.1:8001/api/v1/namespaces/qasim/finalize
  2. {
  3.   "kind": "Namespace",
  4.   "apiVersion": "v1",
  5.   "metadata": {
  6.     "name": "qasim",
  7.     "uid": "fa898418-3a8c-4464-854c-3128ad7af3eb",
  8.     "resourceVersion": "584891986",
  9.     "creationTimestamp": "2021-12-16T03:00:34Z",
  10.     "deletionTimestamp": "2022-04-11T07:59:18Z",
  11.     "labels": {
  12.       "kubernetes.io/metadata.name": "qasim"
  13.     },
  14.     "managedFields": [
  15.       {
  16.         "manager": "kubectl-create",
  17.         "operation": "Update",
  18.         "apiVersion": "v1",
  19.         "time": "2021-12-16T03:00:34Z",
  20.         "fieldsType": "FieldsV1",
  21.         "fieldsV1": {"f:metadata":{"f:labels":{".":{},"f:kubernetes.io/metadata.name":{}}}}
  22.       },
  23.       {
  24.         "manager": "kube-controller-manager",
  25.         "operation": "Update",
  26.         "apiVersion": "v1",
  27.         "time": "2022-04-11T07:59:32Z",
  28.         "fieldsType": "FieldsV1",
  29.         "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":{}}}}}
  30.       }
  31.     ]
  32.   },
  33.   "spec": {
  34.    
  35.   },
  36.   "status": {
  37.     "phase": "Terminating",
  38.     "conditions": [
  39.       {
  40.         "type": "NamespaceDeletionDiscoveryFailure",
  41.         "status": "True",
  42.         "lastTransitionTime": "2022-04-11T07:59:26Z",
  43.         "reason": "DiscoveryFailed",
  44.         "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"
  45.       },
  46.       {
  47.         "type": "NamespaceDeletionGroupVersionParsingFailure",
  48.         "status": "False",
  49.         "lastTransitionTime": "2022-04-11T07:59:32Z",
  50.         "reason": "ParsedGroupVersions",
  51.         "message": "All legacy kube types successfully parsed"
  52.       },
  53.       {
  54.         "type": "NamespaceDeletionContentFailure",
  55.         "status": "False",
  56.         "lastTransitionTime": "2022-04-11T07:59:32Z",
  57.         "reason": "ContentDeleted",
  58.         "message": "All content successfully deleted, may be waiting on finalization"
  59.       },
  60.       {
  61.         "type": "NamespaceContentRemaining",
  62.         "status": "False",
  63.         "lastTransitionTime": "2022-04-11T07:59:32Z",
  64.         "reason": "ContentRemoved",
  65.         "message": "All content successfully removed"
  66.       },
  67.       {
  68.         "type": "NamespaceFinalizersRemaining",
  69.         "status": "False",
  70.         "lastTransitionTime": "2022-04-11T07:59:32Z",
  71.         "reason": "ContentHasNoFinalizers",
  72.         "message": "All content-preserving finalizers finished"
  73.       }
  74.     ]
  75.   }
复制代码
   
补充:删除rancher的相关namespace(谨慎操作!!!)
  1. kubectl patch namespace cattle-system -p '{"metadata":{"finalizers":[]}}' --type='merge' -n cattle-system
  2. kubectl delete namespace cattle-system --grace-period=0 --force
  3. kubectl patch namespace cattle-global-data -p '{"metadata":{"finalizers":[]}}' --type='merge' -n cattle-system
  4. kubectl delete namespace cattle-global-data --grace-period=0 --force
  5. kubectl patch namespace local -p '{"metadata":{"finalizers":[]}}' --type='merge' -n cattle-system
  6. for resource in `kubectl api-resources --verbs=list --namespaced -o name | xargs -n 1 kubectl get -o name -n local`; do kubectl patch $resource -p '{"metadata": {"finalizers": []}}' --type='merge' -n local; done
  7. kubectl delete namespace local --grace-period=0 --force
复制代码
 
2,pv  Terminating状态处理

(1)可以执行如下命令强制删除(PV-NAME 替换成实际需要删除的 pv 名称):
  1. $ kubectl patch pv pv-name -p  '{"metadata":{"finalizers":null}}'
复制代码
 (2)再次查看可以发现该 pv 已被删除: 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

千千梦丶琪

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表