Kubernetes 删除命名空间挂起在自定义资源终结器上

Kubernetes 删除命名空间挂起在自定义资源终结器上,kubernetes,kubernetes-custom-resources,Kubernetes,Kubernetes Custom Resources,我已经定义了一个控制器(操作符),用于处理K8S命名空间中的一些自定义资源。 每个自定义资源都有一个终结器,因此控制器可以在删除它之前处理它: e、 g 在我删除名称空间(“kubectl delete ns”)之前,这一切都很好。 如果k8s垃圾首先收集控制器pod,“mycustomResourceInstance”仍处于删除状态,并阻止成功删除命名空间 解决方法是编辑mycustomResourceInstance并删除终结器 当命名空间中存在自定义资源的任何实例时,是否有任何方法确保控制

我已经定义了一个控制器(操作符),用于处理K8S命名空间中的一些自定义资源。 每个自定义资源都有一个终结器,因此控制器可以在删除它之前处理它:

e、 g

在我删除名称空间(“kubectl delete ns”)之前,这一切都很好。 如果k8s垃圾首先收集控制器pod,“mycustomResourceInstance”仍处于删除状态,并阻止成功删除命名空间

解决方法是编辑mycustomResourceInstance并删除终结器


当命名空间中存在自定义资源的任何实例时,是否有任何方法确保控制器不会被删除?

您必须查看所有者引用和前台级联删除,并将其实现到控制器中,以便垃圾收集器按顺序删除您的对象。

谢谢您的回复。我正在对控制器正在创建的资源使用ownerReference。但这里我们讨论的是输入自定义资源,而不是输出。我可以在输入上执行此操作,而不会导致潜在的死锁吗?我假设您必须使用一个运算符框架,因此在这种情况下,在输入-输出资源之间建立ownerReference。所以我建议在controller->input resources之间实现ownerReference,所以在这种情况下,如果移除controller,它将移除所有的输入资源,什么也会导致移除所有的输出资源。我认为这种方法不会造成僵局。再次感谢。是的,我正在使用拥有myCustom所有实例的操作员的ownerReference?
kind: MyCustom
metadata:
 finalizers:
    - MyCustom.finalizers.com
 name: mycustomResourceInstance