如何分析Controller Manager 中的SharedInformer结构
如何分析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可以根据自己的需要来决定是否处理这个变化。
相关文章