使用--force强制删除
kubectl delete ns longhorn-system --force --grace-period=0
调用API接口删除
kubectl get ns longhorn-system -ojson > tmp.json
修改文件内容:
删除以下代码段:
"spec": {
"finalizers": [
"kubernetes"
]
},
kubectl replace --raw "/api/v1/namespaces/longhorn-system/finalize" -f ./tmp.json
kubectl replace:通常用来更新现有的资源对象。它会先删除旧的对象再创建新的对象,确保名称保持不变。但是,在这里使用了 --raw 选项,使得 replace 命令可以直接与 Kubernetes API 的原始 URL 进行交互。
--raw "/api/v1/namespaces/longhorn-system/finalize":指定要访问的 API 路径。在这个例子中,它指向了 longhorn-system 命名空间下的 /finalize 端点。/finalize 是一个特殊的 API 路径,用于处理命名空间的终结过程。当一个命名空间被标记为终止时,Kubernetes 不会立即删除它,而是将其置于 "Terminating" 状态,并允许某些钩子或控制器执行清理工作。/finalize 端点就是用来完成这些清理工作的。
-f ./tmp.json:指定了一个 JSON 文件作为请求体的内容。这个文件应该包含有关如何终结命名空间的具体信息或者需要执行的操作。例如,它可以包括对命名空间中残留资源的清理指令。