1

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

例如

kind: MyCustom
metadata:
 finalizers:
    - MyCustom.finalizers.com
 name: mycustomResourceInstance

这很好用,直到我删除命名空间(“kubectl delete ns”)。如果 k8s 垃圾首先收集控制器 pod - “mycustomResourceInstance” 仍然停留在删除状态,并阻止成功删除命名空间。

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

有没有办法确保控制器不会被删除,而自定义资源的任何实例都存在于命名空间中?

4

1 回答 1

1

您必须查看所有者引用和前台级联删除https://kubernetes.io/docs/concepts/workloads/controllers/garbage-collection/并将其实现到您的控制器中,因此垃圾收集器按顺序删除您的对象。

于 2019-06-02T19:56:00.707 回答