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中文網其他相關文章!