我有一个元控制器(操作员)。它使用自定义 CRD。当它收到sync
调用时,它会创建几个子资源:
- 荚
- 服务帐户
- 角色
- 角色绑定
pod 是使用有效图像创建的。在它的环境变量中,有一个设置了一个空字符串。
{ "name": "PARTITIONS", "value": "" }
这将返回到元控制器。元控制器开始创建子对象。
然后它注意到由于PARTITIONS
变量,观察到的状态和实际状态之间存在差异。
I0611 00:45:24.908380 1 manage_children.go:210] reflect diff: a=observed, b=desired:
object[spec][containers][0][env][11][value]:
a: <nil>
b: ""
因此,它会杀死启动的 pod,并再次向我的端点发送同步请求。
这会导致无限循环,因为我的端点查看 request.children,发现 pod 丢失,添加一个新 pod 并返回。过了一会儿,它又被删除了,无穷无尽。
这是 Metacontroller 中的错误吗?