在 Kubernetes 中,有时候删除资源对象(如 Namespace)时会卡住无法删除完成,这通常是因为存在 finalizers。以下是几种强制删除资源对象的方式。
1. 仅删除
1
| kubectl delete namespace <ns>
|
2. 强制删除
1 2
| kubectl delete namespace <ns> --force --grace-period=0
|
3. 修改 finalizers 字段
1 2
| kubectl edit namespace <ns>
|
4. 通过 API 接口修改 finalizers
通过 Kubernetes 提供的 API 接口,修改 .spec.finalizers 和 metadata.finalizers 字段,将值置为 [],从而让 Kubernetes 直接删除该资源。
1 2 3 4 5 6 7 8 9 10 11
| kubectl get namespace <ns> -o json > xx.json
kubectl proxy --port=8081
curl -k -H "Content-Type: application/json" -X PUT --data-binary @xx.json \ http://127.0.0.1:8081/api/v1/namespaces/<ns>/finalize
|