过程
使用命令删除 namespace,大写 NAMESPACE 为要删除的命名空间:
kubectl delete namespace NAMESPACE
然后发现一直处于 “Terminating”状态,使用强制删除再试一次:
kubectl delete namespace NAMESPACE --force --grace-period=0
稍等片刻还是一样。
解决
这时就无法通过常见渠道进行删除,需要使用特殊方法。
方法一
执行命令编辑命名空间配置
kubectl edit namespace NAMESPACE
可以看到以下类似内容,示例名是一个名为 lanucher 的命名空间:
apiVersion: v1
kind: Namespace
metadata:
annotations:
kubectl.kubernetes.io/last-applied-configuration: |
{"apiVersion":"v1","kind":"Namespace","metadata":{"annotations":{},"name":"lanucher"}}
creationTimestamp: "2023-12-22T11:55:22Z"
finalizers:
- finalizers.kubesphere.io/namespaces
name: lanucher
resourceVersion: "9782441"
selfLink: /api/v1/namespaces/lanucher
uid:
spec:
finalizers:
- kubernetes
status:
phase: Active
删除第十行的键 - finalizers.kubesphere.io/namespaces
保存退出即可。
方法二
如果上述方法中没有所在行,那么就需要调用 API 进行删除。
将命名空间配置内容导出:
kubectl get namespace NAMESPACE -o json | tee tmp.json
修改 JSON 配置,删除以下部分:
{ "spec": { "finalizers": [ "kubernetes" ] }, "status": { "phase": "Terminating" } }
开启代理暴露请求接口
kubectl proxy
调用接口进行强制删除(使用上一步暴露的接口地址)
curl -k -H "Content-Type: application/json" -X PUT --data-binary @tmp.json http://127.0.0.1:8001/api/v1/namespaces/NAMESPACE/finalize
附录
参考链接
- Namespace "stucked" as Terminating, How I removed it - StackOverflow
- 解决删除 namespace 时一直处于 Terminating 状态 - 51CTO 博客
本文由 柒 创作,采用 知识共享署名4.0
国际许可协议进行许可。
转载本站文章前请注明出处,文章作者保留所有权限。
最后编辑时间: 2024-03-04 17:06 PM