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

Raf*_*ael 3 kubernetes google-kubernetes-engine

这个问题是以下问题的后续问题:如何列出不存在的命名空间的所有对象?

长话短说:

$ 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
Run Code Online (Sandbox Code Playgroud)

命名空间 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
Run Code Online (Sandbox Code Playgroud)

...不起作用。

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


更新:

$ 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:
Run Code Online (Sandbox Code Playgroud)

Raf*_*ael 6

这有效:

$ 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
Run Code Online (Sandbox Code Playgroud)

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