操作员控制器无法删除相关资源
Operator controller could not delete correlated resources
在Kubernetes和Operator-sdk中,我们可以定义CRD(Custom Resource Definition)和CR(Custom Resource)。在我的操作员控制器中,当初始化 CR 时,我会创建一个新的 Deployment 和服务。
当我们删除一个CR对象时,那么相关的资源(如Deployment或service)也会同时被删除。我知道它应该由 CR
或 CRD
终结器完成,这只是我的猜测。
现在我遇到一个问题,在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)。
在Kubernetes和Operator-sdk中,我们可以定义CRD(Custom Resource Definition)和CR(Custom Resource)。在我的操作员控制器中,当初始化 CR 时,我会创建一个新的 Deployment 和服务。
当我们删除一个CR对象时,那么相关的资源(如Deployment或service)也会同时被删除。我知道它应该由 CR
或 CRD
终结器完成,这只是我的猜测。
现在我遇到一个问题,在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)。