Heim  >  Artikel  >  Backend-Entwicklung  >  Wann sollten Sie watch.Interface, Cache.NewInformer oder Cache.NewSharedIndexInformer in Kubernetes verwenden?

Wann sollten Sie watch.Interface, Cache.NewInformer oder Cache.NewSharedIndexInformer in Kubernetes verwenden?

Linda Hamilton
Linda HamiltonOriginal
2024-11-11 19:56:03597Durchsuche

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

watch.Interface vs. Cache.NewInformer vs. Cache.NewSharedIndexInformer

Bei der Überwachung von Ressourcen in Kubernetes und der Reaktion auf Änderungen haben Entwickler verschiedene Möglichkeiten welche Optionen ihnen zur Verfügung stehen. Es ist von entscheidender Bedeutung, die Unterschiede zwischen diesen Methoden zu verstehen.

watch.Interface

Das durch Methoden wie rest.Request.Watch() erhaltene watch.Interface stellt einen ResultChan bereit, der streamt Ereignisse (hinzugefügt/geändert/gelöscht) von Ressourcenänderungen. Es bietet eine Abstraktion auf niedriger Ebene und stellt nur den „Nachher“-Status der Ressource bereit.

cache.NewInformer

Mit der Funktion „cache.NewInformer“ können Sie a angeben ResourceEventHandler, der OnAdd()/OnUpdate()/OnDelete()-Aufrufe verarbeitet. Es enthält einen Mechanismus zum Empfangen sowohl des „Vorher“- als auch des „Nachher“-Status der Ressource. Intern nutzt NewInformer watch.Interface über NewListWatchFromClient.

cache.NewSharedInformer vs. cache.NewSharedIndexInformer

Diese Funktionen bieten höhere Abstraktionsebenen als NewInformer. Sie nutzen eine gemeinsame Verbindung zum API-Server und teilen Ressourcen unter den Informanten. Cache.NewSharedIndexInformer fügt zusätzlich eine Indizierung zum Datencache hinzu.

Empfehlung

Für die meisten Anwendungsfälle werden SharedInformers gegenüber Abstraktionen auf niedrigerer Ebene empfohlen. SharedInformer teilen Ressourcen und bieten eine höhere Abstraktionsebene, wodurch viele Aufgaben auf niedrigerer Ebene vereinfacht werden. Bei der Arbeit mit einem großen Datensatz werden SharedIndexInformers aufgrund ihrer Indizierungsfunktion bevorzugt.

Instanziieren Sie SharedInformers aus derselben SharedInformerFactory, um Ressourcen effizient zu teilen. Ein Beispiel ist unten dargestellt:

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)

Das obige ist der detaillierte Inhalt vonWann sollten Sie watch.Interface, Cache.NewInformer oder Cache.NewSharedIndexInformer in Kubernetes verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn