如何强制删除不存在的命名空间中的资源?

How to force delete resources in a non-existant namespace?

此问题是以下问题的跟进:

长话短说:

$ kubectl get namespaces
NAME              STATUS   AGE
argo              Active   27d
default           Active   27d
kube-node-lease   Active   27d
kube-public       Active   27d
kube-system       Active   27d

$ kubectl get eventbus -n argo-events
NAME      AGE
default   17h

$ kubectl get eventsource -n argo-events
NAME                  AGE
pubsub-event-source   14h

命名空间 argo-events 中有两个资源实际上不再存在,因为我删除了它并希望它与其中的所有资源一起消失。显然有些东西没有按预期工作。

现在(在列出可能更多的对象后 - 第一个问题)我想真正摆脱那些资源,因为它们似乎会阻止重新部署。

但是这...

$ kubectl delete eventbus default -n argo-events
eventbus.argoproj.io "default" deleted
^C
$ kubectl delete eventsource pubsub-event-source -n argo-events
eventsource.argoproj.io "pubsub-event-source" deleted
^C

...不起作用。

那么,如何强制删除它们?


更新:

$ kubectl describe eventbus default -n argo-events | grep -A 3 final
        f:finalizers:
          .:
          v:"eventbus-controller":
      f:status:
$ kubectl describe eventsource pubsub-event-source -n argo-events | grep -A 3 final
        f:finalizers:
          .:
          v:"eventsource-controller":
      f:spec:

这有效:

$ kubectl create namespace argo-events
namespace/argo-events created

$ kubectl patch eventsource/pubsub-event-source -p '{"metadata":{"finalizers":[]}}' --type=merge -n argo-events
eventsource.argoproj.io/pubsub-event-source patched

$ kubectl patch eventbus/default -p '{"metadata":{"finalizers":[]}}' --type=merge -n argo-events
eventbus.argoproj.io/default patched

$ kubectl delete namespace argo-events
namespace "argo-events" deleted

如果有人偶然发现了这个答案并且知道它为什么有效 - 请在评论中添加解释。那太好了,谢谢。

怎么样:

kubectl delete eventsource pubsub-event-source -n argo-events --grace-period=0 --force

?