具有2个控制器的Kubernetes算子

具有2个控制器的Kubernetes算子,kubernetes,operator-sdk,Kubernetes,Operator Sdk,我有一个操作员,里面有两个控制器。controllerA监视CRD_A,如果它发现该类型的CR(我们在集群中只能有一个该类型的CR),控制器将创建一个podA并将CR设置为podA的所有者。 controllerB监视CRD_B,如果发现类型为B的CR,控制器检查podA是否存在,并通过向podA发送HTTP请求以及CR的信息来设置pod。 这是操作员工作的简单概述 问题是,当podA被删除时(由我或Kubernetes想重新安排),controllerA的协调会被触发,因为CR_A是podA的

我有一个操作员,里面有两个控制器。controllerA监视CRD_A,如果它发现该类型的CR(我们在集群中只能有一个该类型的CR),控制器将创建一个podA并将CR设置为podA的所有者。 controllerB监视CRD_B,如果发现类型为B的CR,控制器检查podA是否存在,并通过向podA发送HTTP请求以及CR的信息来设置pod。 这是操作员工作的简单概述

问题是,当podA被删除时(由我或Kubernetes想重新安排),controllerA的协调会被触发,因为CR_A是podA的所有者,它创建了一个新的podA。但是我也希望controllerB能够协调,因为它必须设置podA,因为现在它不能协调,因为podA和controllerB之间没有连接


发生此类事件时,触发controllerB协调的正确方法是什么?我无法将两个CRs设置为pod的所有者。我认为controllerA应该以某种方式将协调事件发送给controllerB,但我不知道这是如何发生的,这是正确的方法吗?

我想你上周在漫不经心地问了这个问题,但粗略的回答是“使用观察图”。这是一个例子。它从低级监视(A的一个实例)中获取事件,然后您编写一些代码来匹配要协调的根对象(B的一个实例)。

我想您上周在漫不经心地问了这个问题,但粗略的回答是“使用监视映射”。这是一个例子。它从低级监视(A的实例)获取事件,然后您编写一些代码来匹配要协调的根对象(B的实例)。

谢谢您的回答,这是我第一次问这个问题。我稍后会在这里尝试回答。再次感谢。:)谢谢你的回答,这是我第一次问这个问题。我稍后会在这里尝试回答。再次感谢。:)