首頁  >  文章  >  後端開發  >  什麼時候應該在 Kubernetes 中使用 watch.Interface、cache.NewInformer 或 cache.NewSharedIndexInformer?

什麼時候應該在 Kubernetes 中使用 watch.Interface、cache.NewInformer 或 cache.NewSharedIndexInformer?

Linda Hamilton
Linda Hamilton原創
2024-11-11 19:56:03572瀏覽

When Should You Use watch.Interface, cache.NewInformer, or cache.NewSharedIndexInformer in Kubernetes?

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

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn