操作员控制器无法删除相关资源

Operator controller could not delete correlated resources

在Kubernetes和Operator-sdk中,我们可以定义CRD(Custom Resource Definition)和CR(Custom Resource)。在我的操作员控制器中,当初始化 CR 时,我会创建一个新的 Deployment 和服务。

当我们删除一个CR对象时,那么相关的资源(如Deployment或service)也会同时被删除。我知道它应该由 CRCRD 终结器完成,这只是我的猜测。

现在我遇到一个问题,在Operator测试的时候,在envTest环境下,当我删除一个CR的时候,它的相关资源(Deployment或者service)并没有被删除。

我很困惑。在real k8s cluster下删除CR时可以自动删除相关资源(Deployment或service),在envTest environment下为什么不删除相关资源?

谁能指出原因。

孤立资源的删除由 Kubernetes 的 garbage collector, which is implemented in kubelet 完成。当您在 envTest 环境中测试运算符时,垃圾收集不起作用,因为该环境中缺少 kubelet(它仅部署 API 服务器和 etcd)。