如何分析Controller Manager 中的SharedInformer结构

2023-04-07 14:10:00 分析 结构 Manager

如何分析Controller Manager 中的SharedInformer结构

在Kubernetes中,每个资源都有一个对应的Informer,Informer是一个用于监视资源变化的结构。当资源发生变化时,Informer会通知对应的Controller。

SharedInformer是一个特殊的Informer,它可以被多个Controller共享。当一个Controller注册到SharedInformer上时,它会创建一个新的Informer,并将其注册到SharedInformer的map中。

每个SharedInformer都有一个名称,这个名称用于在map中进行查找。当一个Controller注册到SharedInformer上时,它需要提供一个名称,这个名称用于标识这个Controller。

在Controller Manager中,有一个全局的SharedInformerFactory,所有的SharedInformer都存储在这个Factory中。当一个Controller需要注册到SharedInformer上时,它可以从Factory中获取对应的SharedInformer。

每个SharedInformer都有一个wait group,这个wait group用于等待所有的Controller都完成注册。当所有的Controller都完成注册后,SharedInformer会启动一个后台 goroutine,用于监视资源的变化。

当资源发生变化时,SharedInformer会通知所有注册的Controller。每个Controller可以根据自己的需要来决定是否处理这个变化。

相关文章