watch.Interface vs.cache.NewInformer vs.cache.NewSharedIndexInformer
在监控 Kubernetes 中的资源并对更改做出反应时,开发人员有各种不同的方法他们可以选择的选项。理解这些方法之间的差异至关重要。
watch.Interface
通过像rest.Request.Watch()这样的方法获得的watch.Interface提供了一个流式传输的ResultChan资源更改的事件(添加/修改/删除)。它提供低级抽象,仅提供资源的“之后”状态。
cache.NewInformer
cache.NewInformer 函数允许您指定一个ResourceEventHandler 处理 OnAdd()/OnUpdate()/OnDelete() 调用。它包括一种接收资源“之前”和“之后”状态的机制。在内部,NewInformer 通过 NewListWatchFromClient 使用 watch.Interface。
cache.NewSharedInformer 与 cache.NewSharedIndexInformer
这些函数提供比 NewInformer 更高级别的抽象。他们采用与 API 服务器的共享连接,并在举报者之间共享资源。 cache.NewSharedIndexInformer 还向数据缓存添加索引。
建议
对于大多数用例,建议使用 SharedInformers 而不是较低级别的抽象。 SharedInformers 共享资源并提供更高级别的抽象,从而简化了许多较低级别的任务。在处理大型数据集时,由于具有索引功能,SharedIndexInformers 是首选。
从同一个 SharedInformerFactory 实例化 SharedInformers 以高效共享资源。示例如下:
informerFactory := informers.NewSharedInformerFactory(clientset, time.Second*30) podInformer := informerFactory.Core().V1().Pods() serviceInformer := informerFactory.Core().V1().Services() podInformer.Informer().AddEventHandler( // Add event handling ) // Add event handling for serviceInformer informerFactory.Start(wait.NeverStop) informerFactory.WaitForCacheSync(wait.NeverStop)
以上是什么时候应该在 Kubernetes 中使用 watch.Interface、cache.NewInformer 或 cache.NewSharedIndexInformer?的详细内容。更多信息请关注PHP中文网其他相关文章!