watch.Interface vs.cache.NewInformer vs.cache.NewSharedIndexInformer
Kubernetes의 리소스를 모니터링하고 변경 사항에 대응할 때 개발자는 다양한 사용할 수 있는 옵션입니다. 이러한 메소드 간의 차이점을 이해하는 것이 중요합니다.
watch.Interface
rest.Request.Watch()와 같은 메소드를 통해 얻은 watch.Interface는 스트리밍하는 ResultChan을 제공합니다. 리소스 변경 이벤트(추가/수정/삭제)입니다. 이는 낮은 수준의 추상화를 제공하며 리소스의 "이후" 상태만 제공합니다.
cache.NewInformer
cache.NewInformer 함수를 사용하면 OnAdd()/OnUpdate()/OnDelete() 호출을 처리하는 ResourceEventHandler입니다. 여기에는 리소스의 "이전" 상태와 "이후" 상태를 모두 수신하는 메커니즘이 포함되어 있습니다. 내부적으로 NewInformer는 NewListWatchFromClient를 통해 watch.Interface를 활용합니다.
cache.NewSharedInformer와 캐시.NewSharedIndexInformer
이러한 함수는 NewInformer보다 더 높은 수준의 추상화를 제공합니다. 이들은 API 서버에 대한 공유 연결을 사용하고 정보원 간에 리소스를 공유합니다. 캐시.NewSharedIndexInformer는 데이터 캐시에 인덱싱을 추가로 추가합니다.
권장 사항
대부분의 사용 사례에서는 하위 수준 추상화보다 SharedInformers를 사용하는 것이 좋습니다. SharedInformers는 리소스를 공유하고 더 높은 수준의 추상화를 제공하여 많은 하위 수준 작업을 단순화합니다. 대규모 데이터 세트로 작업할 때는 인덱싱 기능으로 인해 SharedIndexInformers가 선호됩니다.
동일한 SharedInformerFactory에서 SharedInformer를 인스턴스화하여 리소스를 효율적으로 공유하세요. 예는 다음과 같습니다.
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, 캐시.NewInformer 또는 캐시.NewSharedIndexInformer를 사용해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!