3

在 Kubernetes 和 Operator-sdk 中,我们可以定义 CRD(自定义资源定义)和 CR(自定义资源)。在我的操作员控制器中,当初始化 CR 时,控制器协调会创建一个新的部署和服务。

当我们删除一个 CR 对象时,关联的资源(例如 Deployment 或 service)也会同时被删除。我知道它应该由 CR Finalizer 完成。但是,在 Operator-SDK 和我的控制器代码中,我从未看到任何注册或添加 CR 终结器的代码,Operator-Sdk 是否有任何默认行为?

任何人都可以指出它如何适用于该案例 - “在删除 CR 时,相关的部署和服务也已删除”?控制器中的哪个部分对此负责?

4

1 回答 1

3

关联资源的删除不是控制器的一部分。这是由 Kubernetes 的垃圾收集器完成的。

基本上,垃圾收集器使用OwnerReference对象来查找孤立资源并删除它们。最有可能的是,您通过在代码中的某处OwnerReference调用方法来设置。controllerutil.SetControllerReference

于 2020-11-13T17:58:03.700 回答