1. 问题描述
未使用uninstall.yml文件删除longhorn组件的时候,从而造成无法删除longhorn-system名称空间的解决方案
此时使用
kubectl delete ns longhorn-system已经无法完成删除操作了。会持续显示terminating的状态
2. 解决方案
此时可以将无法删除且一直处于terminating状态的对象以json格式导出为文件,此处的对象是名为longhorn-system的名称空间。该名称空间导出为json格式,然后然后去掉其中的spec以及status字段信息。
具体如下:
[root@c7u6s5:longhorn]# kubectl get ns longhorn-system -o json > longhron-system.json [root@c7u6s5:longhorn]# vim longhorn-system.json [root@c7u6s5:longhorn]# cat longhorn-system.json { "apiVersion": "v1", "kind": "Namespace", "metadata": { "annotations": { "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"v1\",\"kind\":\"Namespace\",\"metadata\":{\"annotations\":{},\"name\":\"longhorn-system\"}}\n" }, "creationTimestamp": "2022-03-13T08:48:06Z", "deletionTimestamp": "2022-03-21T09:09:02Z", "labels": { "kubernetes.io/metadata.name": "longhorn-system" }, "name": "longhorn-system", "resourceVersion": "13365518", "uid": "9182f43a-e302-4fe5-b8b4-b37bde46228a" } } [root@c7u6s5:longhorn]#上述就是将spec以及status字段去掉之后的内容。
然后启动kubectl proxy代理,通过curl命令直接与api服务器通信,通过@longhorn-system.json语法指定传输上述生成的文件,表示对该文件中的对象执行finalize操作。具体如下:
[root@c7u6s5:longhorn]# curl -k -H 'Content-Type: application/json' -XPUT --data-binary @longhorn-system.json http://127.0.0.1:8001/api/v1/namespaces/longhorn-system/finalize { "kind": "Namespace", "apiVersion": "v1", "metadata": { "name": "longhorn-system", "uid": "9182f43a-e302-4fe5-b8b4-b37bde46228a", "resourceVersion": "13365518", "creationTimestamp": "2022-03-13T08:48:06Z", "deletionTimestamp": "2022-03-21T09:09:02Z", "labels": { "kubernetes.io/metadata.name": "longhorn-system" }, "annotations": { "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"v1\",\"kind\":\"Namespace\",\"metadata\":{\"annotations\":{},\"name\":\"longhorn-system\"}}\n" }, "managedFields": [ { "manager": "kubectl-client-side-apply", "operation": "Update", "apiVersion": "v1", "time": "2022-03-13T08:48:06Z", "fieldsType": "FieldsV1", "fieldsV1": {"f:metadata":{"f:annotations":{".":{},"f:kubectl.kubernetes.io/last-applied-configuration":{}},"f:labels":{".":{},"f:kubernetes.io/metadata.name":{}}}} }, { "manager": "kube-controller-manager", "operation": "Update", "apiVersion": "v1", "time": "2022-03-21T09:09:08Z", "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":{}}}}} } ] }, "spec": { }, "status": { "phase": "Terminating", "conditions": [ { "type": "NamespaceDeletionDiscoveryFailure", "status": "False", "lastTransitionTime": "2022-03-21T09:27:42Z", "reason": "ResourcesDiscovered", "message": "All resources successfully discovered" }, { "type": "NamespaceDeletionGroupVersionParsingFailure", "status": "False", "lastTransitionTime": "2022-03-21T09:09:08Z", "reason": "ParsedGroupVersions", "message": "All legacy kube types successfully parsed" }, { "type": "NamespaceDeletionContentFailure", "status": "False", "lastTransitionTime": "2022-03-21T09:23:09Z", "reason": "ContentDeleted", "message": "All content successfully deleted, may be waiting on finalization" }, { "type": "NamespaceContentRemaining", "status": "True", "lastTransitionTime": "2022-03-21T09:09:08Z", "reason": "SomeResourcesRemain", "message": "Some resources are remaining: engineimages.longhorn.io has 1 resource instances, nodes.longhorn.io has 3 resource instances" }, { "type": "NamespaceFinalizersRemaining", "status": "True", "lastTransitionTime": "2022-03-21T09:09:08Z", "reason": "SomeFinalizersRemain", "message": "Some content in the namespace has finalizers remaining: longhorn.io in 4 resource instances" } ] } } # 执行晚上述操作之后,longhorn-system名称空间就被删除了。 [root@c7u6s5:longhorn]#curl -k -H 'Content-Type: application/json' -XPUT --data-binary @longhorn-system.json http://127.0.0.1:8001/api/v1/namespaces/longhorn-system/finalize { "kind": "Status", "apiVersion": "v1", "metadata": { }, "status": "Failure", "message": "Operation cannot be fulfilled on namespaces \"longhorn-system\": StorageError: invalid object, Code: 4, Key: /registry/namespaces/longhorn-system, ResourceVersion: 0, AdditionalErrorMsg: Precondition failed: UID in precondition: 9182f43a-e302-4fe5-b8b4-b37bde46228a, UID in object meta: ", "reason": "Conflict", "details": { "name": "longhorn-system", "kind": "namespaces" }, "code": 409 }[root@c7u6s5:longhorn]#kbuectl get ns -bash: kbuectl: command not found [root@c7u6s5:longhorn]# kubectl get ns NAME STATUS AGE app-team1 Active 175d default Active 230d kube-node-lease Active 230d kube-public Active 230d kube-system Active 230d kubernetes-dashboard Active 98m my-ns Active 216d project-snake Active 167d [root@c7u6s5:longhorn]#上述的curl命令中的@符号后面的是json文件名称。
上述就完成了longhron-system名称空间的删除操作。

1841

被折叠的 条评论
为什么被折叠?



