Controller 是否应该清理它正在删除的资源?

Should Controller do cleanup for the Resource it's deleting?

我是 Kubernetes Operators 的新手。我有一个关于如何在删除时构思清理的一般性问题。

假设 Controller 正在管理一个由 Deployment 等组成的资源。此 Deployment 写入某些外部数据库。我希望在删除资源时删除数据库中的项目(但不是在其 Pod 只是重新启动时 - 因此它不会作为应用程序关闭逻辑的一部分发生)。

看来数据库清除必须在 Controller 中进行?但这让我有点不安,因为关于如何存储值的知识似乎是关于被管理资源的知识,而不是控制器。让控制器向底层应用程序发送消息以执行其自身清理的唯一其他好的选择吗?

处理这类事情的一般方法是什么?

您听说过 Kubernetes 中的终结器和 Owner References 吗?所有者引用描述了对象组是如何相关的。它们是指定彼此关系的资源属性,因此可以删除整个资源树。

为了避免进一步copy-pasting,我将只留下链接:Understanding Finalizers